diff options
Diffstat (limited to 'src')
936 files changed, 18882 insertions, 20897 deletions
diff --git a/src/app/Info.plist.in b/src/app/Info.plist index df86bace5f..62cb264e8b 100644 --- a/src/app/Info.plist.in +++ b/src/app/Info.plist @@ -235,7 +235,7 @@ <key>NSHumanReadableCopyright</key> <string>(C) 2015 The Qt Company Ltd</string> <key>CFBundleIconFile</key> - <string>$$ICON</string> + <string>qtcreator</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> @@ -245,9 +245,9 @@ <key>CFBundleIdentifier</key> <string>org.qt-project.qtcreator</string> <key>CFBundleVersion</key> - <string>$$QTCREATOR_VERSION</string> + <string>@FULL_VERSION@</string> <key>CFBundleShortVersionString</key> - <string>$$QTCREATOR_VERSION</string> + <string>@SHORT_VERSION@</string> <key>LSMinimumSystemVersion</key> <string>10.7.0</string> </dict> diff --git a/src/app/app.pro b/src/app/app.pro index 496d2ebe35..7ae24c943f 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -5,6 +5,7 @@ TEMPLATE = app CONFIG += qtc_runnable TARGET = $$IDE_APP_TARGET DESTDIR = $$IDE_APP_PATH +VERSION = $$QTCREATOR_VERSION QT -= testlib HEADERS += ../tools/qtcreatorcrashhandler/crashhandlersetup.h @@ -24,20 +25,30 @@ win32 { INSTALLS += target } else:macx { LIBS += -framework CoreFoundation - ICON = qtcreator.icns - FILETYPES.files = profile.icns prifile.icns - FILETYPES.path = Contents/Resources - QMAKE_BUNDLE_DATA += FILETYPES - info.input = Info.plist.in - info.output = $$IDE_BIN_PATH/../Info.plist - QMAKE_SUBSTITUTES = info + ASSETCATALOG.files = $$PWD/qtcreator.xcassets + macx-xcode { + QMAKE_BUNDLE_DATA += ASSETCATALOG + } else { + ASSETCATALOG.output = $$IDE_DATA_PATH/qtcreator.icns + ASSETCATALOG.commands = xcrun actool \ + --app-icon qtcreator \ + --output-partial-info-plist $$shell_quote($(TMPDIR)/qtcreator.Info.plist) \ + --platform macosx \ + --minimum-deployment-target 10.7 \ + --compile $$shell_quote($$IDE_DATA_PATH) \ + $$shell_quote($$PWD/qtcreator.xcassets) > /dev/null + ASSETCATALOG.input = ASSETCATALOG.files + ASSETCATALOG.CONFIG += no_link target_predeps + QMAKE_EXTRA_COMPILERS += ASSETCATALOG + } + QMAKE_INFO_PLIST = Info.plist } else { target.path = $$INSTALL_BIN_PATH INSTALLS += target } DISTFILES += qtcreator.rc \ - Info.plist.in \ + Info.plist \ $$PWD/app_version.h.in QMAKE_SUBSTITUTES += $$PWD/app_version.h.in diff --git a/src/app/app.qbs b/src/app/app.qbs index 59034b7191..07c658d0a7 100644 --- a/src/app/app.qbs +++ b/src/app/app.qbs @@ -1,9 +1,23 @@ import qbs QtcProduct { + Depends { name: "bundle" } + Depends { name: "ib"; condition: qbs.targetOS.contains("osx") } + + bundle.isBundle: true + bundle.infoPlistFile: "Info.plist" // TODO: Remove for qbs 1.6 + + Properties { + condition: qbs.targetOS.contains("osx") + ib.appIconName: "qtcreator" + } + type: ["application"] name: project.ide_app_target consoleApplication: qbs.debugInformation + version: project.qtcreator_version + + installSourceBase: buildDirectory cpp.rpaths: qbs.targetOS.contains("osx") ? ["@executable_path/../Frameworks"] : ["$ORIGIN/../" + project.libDirName + "/qtcreator"] @@ -18,7 +32,9 @@ QtcProduct { Depends { name: "ExtensionSystem" } files: [ + // TODO: Uncomment for qbs 1.6 "Info.plist", "main.cpp", + "qtcreator.xcassets", "qtcreator.rc", "../shared/qtsingleapplication/qtsingleapplication.h", "../shared/qtsingleapplication/qtsingleapplication.cpp", @@ -54,8 +70,9 @@ QtcProduct { } Group { - fileTagsFilter: product.type + condition: qbs.targetOS.contains("osx") + fileTagsFilter: ["infoplist", "pkginfo", "compiled_assetcatalog"] qbs.install: true - qbs.installDir: project.ide_bin_path + qbs.installSourceBase: installSourceBase } } diff --git a/src/app/prifile.icns b/src/app/prifile.icns Binary files differdeleted file mode 100644 index 96386a70aa..0000000000 --- a/src/app/prifile.icns +++ /dev/null diff --git a/src/app/profile.icns b/src/app/profile.icns Binary files differdeleted file mode 100644 index 40a881dac9..0000000000 --- a/src/app/profile.icns +++ /dev/null diff --git a/src/app/qtcreator.icns b/src/app/qtcreator.icns Binary files differdeleted file mode 100644 index 234075f2de..0000000000 --- a/src/app/qtcreator.icns +++ /dev/null diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128.png Binary files differnew file mode 100644 index 0000000000..0b840fb6d0 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128@2x.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128@2x.png Binary files differnew file mode 100644 index 0000000000..0bd512dc57 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_128x128@2x.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16.png Binary files differnew file mode 100644 index 0000000000..ade232df4a --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16@2x.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 0000000000..a378d48989 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_16x16@2x.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256.png Binary files differnew file mode 100644 index 0000000000..0bd512dc57 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256@2x.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256@2x.png Binary files differnew file mode 100644 index 0000000000..400cea7478 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_256x256@2x.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32.png Binary files differnew file mode 100644 index 0000000000..a378d48989 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32@2x.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32@2x.png Binary files differnew file mode 100644 index 0000000000..a00f700602 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_32x32@2x.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512.png Binary files differnew file mode 100644 index 0000000000..400cea7478 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512.png diff --git a/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512@2x.png b/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512@2x.png Binary files differnew file mode 100644 index 0000000000..0b936d31d4 --- /dev/null +++ b/src/app/qtcreator.xcassets/prifile.iconset/icon_512x512@2x.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_128x128.png b/src/app/qtcreator.xcassets/profile.iconset/icon_128x128.png Binary files differnew file mode 100644 index 0000000000..a5ec17d364 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_128x128.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_128x128@2x.png b/src/app/qtcreator.xcassets/profile.iconset/icon_128x128@2x.png Binary files differnew file mode 100644 index 0000000000..8526bc8a71 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_128x128@2x.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_16x16.png b/src/app/qtcreator.xcassets/profile.iconset/icon_16x16.png Binary files differnew file mode 100644 index 0000000000..ade232df4a --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_16x16.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_16x16@2x.png b/src/app/qtcreator.xcassets/profile.iconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 0000000000..f90a05da4d --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_16x16@2x.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_256x256.png b/src/app/qtcreator.xcassets/profile.iconset/icon_256x256.png Binary files differnew file mode 100644 index 0000000000..8526bc8a71 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_256x256.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_256x256@2x.png b/src/app/qtcreator.xcassets/profile.iconset/icon_256x256@2x.png Binary files differnew file mode 100644 index 0000000000..fab3805ff8 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_256x256@2x.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_32x32.png b/src/app/qtcreator.xcassets/profile.iconset/icon_32x32.png Binary files differnew file mode 100644 index 0000000000..f90a05da4d --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_32x32.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_32x32@2x.png b/src/app/qtcreator.xcassets/profile.iconset/icon_32x32@2x.png Binary files differnew file mode 100644 index 0000000000..84dfa9f95f --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_32x32@2x.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_512x512.png b/src/app/qtcreator.xcassets/profile.iconset/icon_512x512.png Binary files differnew file mode 100644 index 0000000000..fab3805ff8 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_512x512.png diff --git a/src/app/qtcreator.xcassets/profile.iconset/icon_512x512@2x.png b/src/app/qtcreator.xcassets/profile.iconset/icon_512x512@2x.png Binary files differnew file mode 100644 index 0000000000..cc62998733 --- /dev/null +++ b/src/app/qtcreator.xcassets/profile.iconset/icon_512x512@2x.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/Contents.json b/src/app/qtcreator.xcassets/qtcreator.appiconset/Contents.json new file mode 100644 index 0000000000..7cd4f8e120 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16@2x.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32@2x.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128@2x.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "icon_256x256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "icon_256x256@2x.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "icon_512x512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "icon_512x512@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +}
\ No newline at end of file diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128.png Binary files differnew file mode 100644 index 0000000000..b4e8673154 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128@2x.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128@2x.png Binary files differnew file mode 100644 index 0000000000..b7aced53f6 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_128x128@2x.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16.png Binary files differnew file mode 100644 index 0000000000..f44ede5d91 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16@2x.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16@2x.png Binary files differnew file mode 100644 index 0000000000..5bf7644f10 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_16x16@2x.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256.png Binary files differnew file mode 100644 index 0000000000..b7aced53f6 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256@2x.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256@2x.png Binary files differnew file mode 100644 index 0000000000..6ff06c07fd --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_256x256@2x.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32.png Binary files differnew file mode 100644 index 0000000000..29a67cb01c --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32@2x.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32@2x.png Binary files differnew file mode 100644 index 0000000000..ec5da2d4c1 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_32x32@2x.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512.png Binary files differnew file mode 100644 index 0000000000..6ff06c07fd --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512.png diff --git a/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512@2x.png b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512@2x.png Binary files differnew file mode 100644 index 0000000000..d6f3e6e450 --- /dev/null +++ b/src/app/qtcreator.xcassets/qtcreator.appiconset/icon_512x512@2x.png diff --git a/src/libs/3rdparty/modeling/qmt/config/configcontroller.cpp b/src/libs/3rdparty/modeling/qmt/config/configcontroller.cpp index dc4e9e83ef..988c95b2db 100644 --- a/src/libs/3rdparty/modeling/qmt/config/configcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/configcontroller.cpp @@ -42,17 +42,17 @@ #include <QDebug> - namespace qmt { -struct ConfigController::ConfigControllerPrivate +class ConfigController::ConfigControllerPrivate { +public: ConfigControllerPrivate() - : _stereotype_controller(0) + : m_stereotypeController(0) { } - StereotypeController *_stereotype_controller; + StereotypeController *m_stereotypeController; }; ConfigController::ConfigController(QObject *parent) @@ -66,9 +66,9 @@ ConfigController::~ConfigController() delete d; } -void ConfigController::setStereotypeController(StereotypeController *stereotype_controller) +void ConfigController::setStereotypeController(StereotypeController *stereotypeController) { - d->_stereotype_controller = stereotype_controller; + d->m_stereotypeController = stereotypeController; } void ConfigController::readStereotypeDefinitions(const QString &path) @@ -79,8 +79,8 @@ void ConfigController::readStereotypeDefinitions(const QString &path) QDir dir(path); dir.setNameFilters(QStringList() << QStringLiteral("*.def")); - foreach (const QString &file_name, dir.entryList(QDir::Files)) { - QFile file(QFileInfo(dir, file_name).absoluteFilePath()); + foreach (const QString &fileName, dir.entryList(QDir::Files)) { + QFile file(QFileInfo(dir, fileName).absoluteFilePath()); if (file.open(QIODevice::ReadOnly)) { QString text = QString::fromUtf8(file.readAll()); file.close(); @@ -90,23 +90,23 @@ void ConfigController::readStereotypeDefinitions(const QString &path) try { parser.parse(&source); } catch (StereotypeDefinitionParserError x) { - qDebug() << x.getErrorMsg() << "in line" << x.getSourcePos().getLineNumber(); + qDebug() << x.errorMessage() << "in line" << x.sourcePos().lineNumber(); } catch (TextScannerError x) { - qDebug() << x.getErrorMsg() << "in line" << x.getSourcePos().getLineNumber(); + qDebug() << x.errorMessage() << "in line" << x.sourcePos().lineNumber(); } catch (...) { } } } } -void ConfigController::onStereotypeIconParsed(const StereotypeIcon &stereotype_icon) +void ConfigController::onStereotypeIconParsed(const StereotypeIcon &stereotypeIcon) { - d->_stereotype_controller->addStereotypeIcon(stereotype_icon); + d->m_stereotypeController->addStereotypeIcon(stereotypeIcon); } void ConfigController::onToolbarParsed(const Toolbar &toolbar) { - d->_stereotype_controller->addToolbar(toolbar); + d->m_stereotypeController->addToolbar(toolbar); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/configcontroller.h b/src/libs/3rdparty/modeling/qmt/config/configcontroller.h index a3ade9d5ea..57e059cf37 100644 --- a/src/libs/3rdparty/modeling/qmt/config/configcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/config/configcontroller.h @@ -40,35 +40,24 @@ class StereotypeController; class StereotypeIcon; class Toolbar; - class QMT_EXPORT ConfigController : public QObject { Q_OBJECT - - struct ConfigControllerPrivate; + class ConfigControllerPrivate; public: - explicit ConfigController(QObject *parent = 0); - ~ConfigController(); -public: - - void setStereotypeController(StereotypeController *stereotype_controller); - -public: + void setStereotypeController(StereotypeController *stereotypeController); void readStereotypeDefinitions(const QString &path); private slots: - - void onStereotypeIconParsed(const StereotypeIcon &stereotype_icon); - + void onStereotypeIconParsed(const StereotypeIcon &stereotypeIcon); void onToolbarParsed(const Toolbar &toolbar); private: - ConfigControllerPrivate *d; }; diff --git a/src/libs/3rdparty/modeling/qmt/config/sourcepos.cpp b/src/libs/3rdparty/modeling/qmt/config/sourcepos.cpp index 1db1a61730..b9cf89a6e3 100644 --- a/src/libs/3rdparty/modeling/qmt/config/sourcepos.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/sourcepos.cpp @@ -33,16 +33,16 @@ namespace qmt { SourcePos::SourcePos() - : _source_id(-1), - _line_number(-1), - _column_number(-1) + : m_sourceId(-1), + m_lineNumber(-1), + m_columnNumber(-1) { } -SourcePos::SourcePos(int source_id, int line_number, int column_number) - : _source_id(source_id), - _line_number(line_number), - _column_number(column_number) +SourcePos::SourcePos(int sourceId, int lineNumber, int columnNumber) + : m_sourceId(sourceId), + m_lineNumber(lineNumber), + m_columnNumber(columnNumber) { } diff --git a/src/libs/3rdparty/modeling/qmt/config/sourcepos.h b/src/libs/3rdparty/modeling/qmt/config/sourcepos.h index 57d5196755..412877e602 100644 --- a/src/libs/3rdparty/modeling/qmt/config/sourcepos.h +++ b/src/libs/3rdparty/modeling/qmt/config/sourcepos.h @@ -38,27 +38,19 @@ namespace qmt { class QMT_EXPORT SourcePos { public: - SourcePos(); + SourcePos(int sourceId, int lineNumber, int columnNumber = -1); - SourcePos(int source_id, int line_number, int column_number = -1); - -public: - - bool isValid() const { return _source_id >= 0 && _line_number >= 0; } - - int getSourceId() const { return _source_id; } - - int getLineNumber() const { return _line_number; } - - bool hasColumnNumber() const { return _column_number >= 0; } - - int getColumnNumber() const { return _column_number; } + bool isValid() const { return m_sourceId >= 0 && m_lineNumber >= 0; } + int sourceId() const { return m_sourceId; } + int lineNumber() const { return m_lineNumber; } + bool hasColumnNumber() const { return m_columnNumber >= 0; } + int columnNumber() const { return m_columnNumber; } private: - int _source_id; - int _line_number; - int _column_number; + int m_sourceId; + int m_lineNumber; + int m_columnNumber; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.cpp b/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.cpp index db269a741f..6096485dfe 100644 --- a/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.cpp @@ -87,51 +87,47 @@ static const int OPERATOR_COMMA = 3; static const int OPERATOR_PERIOD = 4; static const int OPERATOR_MINUS = 5; - template <typename T, typename U> QHash<T, U> operator<<(QHash<T, U> hash, QPair<T, U> pair) { hash.insert(pair.first, pair.second); return hash; } - -StereotypeDefinitionParserError::StereotypeDefinitionParserError(const QString &error_msg, const SourcePos &source_pos) - : Exception(error_msg), - _source_pos(source_pos) +StereotypeDefinitionParserError::StereotypeDefinitionParserError(const QString &errorMsg, const SourcePos &sourcePos) + : Exception(errorMsg), + m_sourcePos(sourcePos) { - } StereotypeDefinitionParserError::~StereotypeDefinitionParserError() { } - -struct StereotypeDefinitionParser::StereotypeDefinitionParserPrivate +class StereotypeDefinitionParser::StereotypeDefinitionParserPrivate { +public: StereotypeDefinitionParserPrivate() - : _scanner(0) + : m_scanner(0) { } - TextScanner *_scanner; + TextScanner *m_scanner; }; - -struct StereotypeDefinitionParser::IconCommandParameter +class StereotypeDefinitionParser::IconCommandParameter { - IconCommandParameter(ShapeValueF::Unit unit, ShapeValueF::Origin origin = ShapeValueF::ORIGIN_SMART) - : _unit(unit), - _origin(origin) +public: + IconCommandParameter(ShapeValueF::Unit unit, ShapeValueF::Origin origin = ShapeValueF::OriginSmart) + : m_unit(unit), + m_origin(origin) { } - ShapeValueF::Unit _unit; - ShapeValueF::Origin _origin; + ShapeValueF::Unit m_unit; + ShapeValueF::Origin m_origin; }; - StereotypeDefinitionParser::StereotypeDefinitionParser(QObject *parent) : QObject(parent), d(new StereotypeDefinitionParserPrivate) @@ -145,8 +141,8 @@ StereotypeDefinitionParser::~StereotypeDefinitionParser() void StereotypeDefinitionParser::parse(ITextSource *source) { - TextScanner text_scanner; - text_scanner.setKeywords( + TextScanner textScanner; + textScanner.setKeywords( QList<QPair<QString, int> >() << qMakePair(QString(QStringLiteral("icon")), KEYWORD_ICON) << qMakePair(QString(QStringLiteral("title")), KEYWORD_TITLE) @@ -178,7 +174,7 @@ void StereotypeDefinitionParser::parse(ITextSource *source) << qMakePair(QString(QStringLiteral("tool")), KEYWORD_TOOL) << qMakePair(QString(QStringLiteral("separator")), KEYWORD_SEPARATOR) ); - text_scanner.setOperators( + textScanner.setOperators( QList<QPair<QString, int> >() << qMakePair(QString(QStringLiteral(";")), OPERATOR_SEMICOLON) << qMakePair(QString(QStringLiteral(":")), OPERATOR_COLON) @@ -186,63 +182,58 @@ void StereotypeDefinitionParser::parse(ITextSource *source) << qMakePair(QString(QStringLiteral(".")), OPERATOR_PERIOD) << qMakePair(QString(QStringLiteral("-")), OPERATOR_MINUS) ); - text_scanner.setSource(source); + textScanner.setSource(source); - d->_scanner = &text_scanner; + d->m_scanner = &textScanner; try { parseFile(); } catch (...) { - d->_scanner = 0; + d->m_scanner = 0; throw; } - d->_scanner = 0; + d->m_scanner = 0; } void StereotypeDefinitionParser::parseFile() { for (;;) { Token token = readNextToken(); - if (token.getType() == Token::TOKEN_ENDOFINPUT) { + if (token.type() == Token::TokenEndOfInput) break; - } else if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() == KEYWORD_ICON) { + else if (token.type() != Token::TokenKeyword || token.subtype() == KEYWORD_ICON) parseIcon(); - } else if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() == KEYWORD_TOOLBAR) { + else if (token.type() != Token::TokenKeyword || token.subtype() == KEYWORD_TOOLBAR) parseToolbar(); - } else { - throw StereotypeDefinitionParserError(QStringLiteral("Expected 'icon' or 'toolbar'."), token.getSourcePos()); - } - token = d->_scanner->read(); - if (token.getType() == Token::TOKEN_OPERATOR && token.getSubtype() == OPERATOR_PERIOD) { + else + throw StereotypeDefinitionParserError(QStringLiteral("Expected 'icon' or 'toolbar'."), token.sourcePos()); + token = d->m_scanner->read(); + if (token.type() == Token::TokenOperator && token.subtype() == OPERATOR_PERIOD) break; - } else if (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != OPERATOR_SEMICOLON) { - d->_scanner->unread(token); - } + else if (token.type() != Token::TokenOperator || token.subtype() != OPERATOR_SEMICOLON) + d->m_scanner->unread(token); } } void StereotypeDefinitionParser::parseIcon() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_IDENTIFIER && token.getType() != Token::TOKEN_KEYWORD) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.getSourcePos()); - } - QString id = token.getText(); - StereotypeIcon stereotype_icon; - stereotype_icon.setId(id); - parseIconProperties(&stereotype_icon); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenIdentifier && token.type() != Token::TokenKeyword) + throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.sourcePos()); + QString id = token.text(); + StereotypeIcon stereotypeIcon; + stereotypeIcon.setId(id); + parseIconProperties(&stereotypeIcon); token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() != KEYWORD_BEGIN) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'begin'."), token.getSourcePos()); - } - parseIconCommands(&stereotype_icon); + if (token.type() != Token::TokenKeyword || token.subtype() != KEYWORD_BEGIN) + throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'begin'."), token.sourcePos()); + parseIconCommands(&stereotypeIcon); token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() != KEYWORD_END) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'end'."), token.getSourcePos()); - } - emit iconParsed(stereotype_icon); + if (token.type() != Token::TokenKeyword || token.subtype() != KEYWORD_END) + throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'end'."), token.sourcePos()); + emit iconParsed(stereotypeIcon); } -void StereotypeDefinitionParser::parseIconProperties(StereotypeIcon *stereotype_icon) +void StereotypeDefinitionParser::parseIconProperties(StereotypeIcon *stereotypeIcon) { Token token; bool loop = true; @@ -250,29 +241,28 @@ void StereotypeDefinitionParser::parseIconProperties(StereotypeIcon *stereotype_ QSet<QString> stereotypes; while (loop) { token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD) { + if (token.type() != Token::TokenKeyword) { loop = false; } else { - switch (token.getSubtype()) { + switch (token.subtype()) { case KEYWORD_TITLE: - stereotype_icon->setTitle(parseStringProperty()); + stereotypeIcon->setTitle(parseStringProperty()); expectSemicolonOrEndOfLine(); break; case KEYWORD_ELEMENTS: { QList<QString> identifiers = parseIdentifierListProperty(); foreach (const QString &identifier, identifiers) { - static QHash<QString, StereotypeIcon::Element> element_names = QHash<QString, StereotypeIcon::Element>() - << qMakePair(QString(QStringLiteral("package")), StereotypeIcon::ELEMENT_PACKAGE) - << qMakePair(QString(QStringLiteral("component")), StereotypeIcon::ELEMENT_COMPONENT) - << qMakePair(QString(QStringLiteral("class")), StereotypeIcon::ELEMENT_CLASS) - << qMakePair(QString(QStringLiteral("diagram")), StereotypeIcon::ELEMENT_DIAGRAM) - << qMakePair(QString(QStringLiteral("item")), StereotypeIcon::ELEMENT_ITEM); - QString element_name = identifier.toLower(); - if (!element_names.contains(element_name)) { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for element.")).arg(identifier), token.getSourcePos()); - } - elements.insert(element_names.value(element_name)); + static QHash<QString, StereotypeIcon::Element> elementNames = QHash<QString, StereotypeIcon::Element>() + << qMakePair(QString(QStringLiteral("package")), StereotypeIcon::ElementPackage) + << qMakePair(QString(QStringLiteral("component")), StereotypeIcon::ElementComponent) + << qMakePair(QString(QStringLiteral("class")), StereotypeIcon::ElementClass) + << qMakePair(QString(QStringLiteral("diagram")), StereotypeIcon::ElementDiagram) + << qMakePair(QString(QStringLiteral("item")), StereotypeIcon::ElementItem); + QString elementName = identifier.toLower(); + if (!elementNames.contains(elementName)) + throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for element.")).arg(identifier), token.sourcePos()); + elements.insert(elementNames.value(elementName)); } expectSemicolonOrEndOfLine(); break; @@ -282,75 +272,75 @@ void StereotypeDefinitionParser::parseIconProperties(StereotypeIcon *stereotype_ expectSemicolonOrEndOfLine(); break; case KEYWORD_WIDTH: - stereotype_icon->setWidth(parseFloatProperty()); + stereotypeIcon->setWidth(parseFloatProperty()); expectSemicolonOrEndOfLine(); break; case KEYWORD_HEIGHT: - stereotype_icon->setHeight(parseFloatProperty()); + stereotypeIcon->setHeight(parseFloatProperty()); expectSemicolonOrEndOfLine(); break; case KEYWORD_MINWIDTH: - stereotype_icon->setMinWidth(parseFloatProperty()); + stereotypeIcon->setMinWidth(parseFloatProperty()); expectSemicolonOrEndOfLine(); break; case KEYWORD_MINHEIGHT: - stereotype_icon->setMinHeight(parseFloatProperty()); + stereotypeIcon->setMinHeight(parseFloatProperty()); expectSemicolonOrEndOfLine(); break; case KEYWORD_LOCK_SIZE: { - QString lock_value = parseIdentifierProperty(); - QString lock_name = lock_value.toLower(); - static QHash<QString, StereotypeIcon::SizeLock> lock_names = QHash<QString, StereotypeIcon::SizeLock>() - << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::LOCK_NONE) - << qMakePair(QString(QStringLiteral("width")), StereotypeIcon::LOCK_WIDTH) - << qMakePair(QString(QStringLiteral("height")), StereotypeIcon::LOCK_HEIGHT) - << qMakePair(QString(QStringLiteral("size")), StereotypeIcon::LOCK_SIZE) - << qMakePair(QString(QStringLiteral("ratio")), StereotypeIcon::LOCK_RATIO); - if (lock_names.contains(lock_name)) { - StereotypeIcon::SizeLock size_lock = lock_names.value(lock_name); - stereotype_icon->setSizeLock(size_lock); + QString lockValue = parseIdentifierProperty(); + QString lockName = lockValue.toLower(); + static QHash<QString, StereotypeIcon::SizeLock> lockNames = QHash<QString, StereotypeIcon::SizeLock>() + << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::LockNone) + << qMakePair(QString(QStringLiteral("width")), StereotypeIcon::LockWidth) + << qMakePair(QString(QStringLiteral("height")), StereotypeIcon::LockHeight) + << qMakePair(QString(QStringLiteral("size")), StereotypeIcon::LockSize) + << qMakePair(QString(QStringLiteral("ratio")), StereotypeIcon::LockRatio); + if (lockNames.contains(lockName)) { + StereotypeIcon::SizeLock sizeLock = lockNames.value(lockName); + stereotypeIcon->setSizeLock(sizeLock); } else { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for size lock.")).arg(lock_value), token.getSourcePos()); + throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for size lock.")).arg(lockValue), token.sourcePos()); } break; } case KEYWORD_DISPLAY: { - QString display_value = parseIdentifierProperty(); - QString display_name = display_value.toLower(); - static QHash<QString, StereotypeIcon::Display> display_names = QHash<QString, StereotypeIcon::Display>() - << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::DISPLAY_NONE) - << qMakePair(QString(QStringLiteral("label")), StereotypeIcon::DISPLAY_LABEL) - << qMakePair(QString(QStringLiteral("decoration")), StereotypeIcon::DISPLAY_DECORATION) - << qMakePair(QString(QStringLiteral("icon")), StereotypeIcon::DISPLAY_ICON) - << qMakePair(QString(QStringLiteral("smart")), StereotypeIcon::DISPLAY_SMART); - if (display_names.contains(display_name)) { - StereotypeIcon::Display display = display_names.value(display_name); - stereotype_icon->setDisplay(display); + QString displayValue = parseIdentifierProperty(); + QString displayName = displayValue.toLower(); + static QHash<QString, StereotypeIcon::Display> displayNames = QHash<QString, StereotypeIcon::Display>() + << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::DisplayNone) + << qMakePair(QString(QStringLiteral("label")), StereotypeIcon::DisplayLabel) + << qMakePair(QString(QStringLiteral("decoration")), StereotypeIcon::DisplayDecoration) + << qMakePair(QString(QStringLiteral("icon")), StereotypeIcon::DisplayIcon) + << qMakePair(QString(QStringLiteral("smart")), StereotypeIcon::DisplaySmart); + if (displayNames.contains(displayName)) { + StereotypeIcon::Display display = displayNames.value(displayName); + stereotypeIcon->setDisplay(display); } else { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for stereotype display.")).arg(display_value), token.getSourcePos()); + throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for stereotype display.")).arg(displayValue), token.sourcePos()); } break; } case KEYWORD_TEXTALIGN: { - QString align_value = parseIdentifierProperty(); - QString align_name = align_value.toLower(); - static QHash<QString, StereotypeIcon::TextAlignment> align_names = QHash<QString, StereotypeIcon::TextAlignment>() - << qMakePair(QString(QStringLiteral("below")), StereotypeIcon::TEXTALIGN_BELOW) - << qMakePair(QString(QStringLiteral("center")), StereotypeIcon::TEXTALIGN_CENTER) - << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::TEXTALIGN_NONE); - if (align_names.contains(align_name)) { - StereotypeIcon::TextAlignment text_alignment = align_names.value(align_name); - stereotype_icon->setTextAlignment(text_alignment); + QString alignValue = parseIdentifierProperty(); + QString alignName = alignValue.toLower(); + static QHash<QString, StereotypeIcon::TextAlignment> alignNames = QHash<QString, StereotypeIcon::TextAlignment>() + << qMakePair(QString(QStringLiteral("below")), StereotypeIcon::TextalignBelow) + << qMakePair(QString(QStringLiteral("center")), StereotypeIcon::TextalignCenter) + << qMakePair(QString(QStringLiteral("none")), StereotypeIcon::TextalignNone); + if (alignNames.contains(alignName)) { + StereotypeIcon::TextAlignment textAlignment = alignNames.value(alignName); + stereotypeIcon->setTextAlignment(textAlignment); } else { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for text alignment.")).arg(align_value), token.getSourcePos()); + throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for text alignment.")).arg(alignValue), token.sourcePos()); } break; } case KEYWORD_BASECOLOR: - stereotype_icon->setBaseColor(parseColorProperty()); + stereotypeIcon->setBaseColor(parseColorProperty()); expectSemicolonOrEndOfLine(); break; default: @@ -359,30 +349,27 @@ void StereotypeDefinitionParser::parseIconProperties(StereotypeIcon *stereotype_ } } } - stereotype_icon->setElements(elements); - stereotype_icon->setStereotypes(stereotypes); - d->_scanner->unread(token); + stereotypeIcon->setElements(elements); + stereotypeIcon->setStereotypes(stereotypes); + d->m_scanner->unread(token); } void StereotypeDefinitionParser::parseToolbar() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_IDENTIFIER && token.getType() != Token::TOKEN_KEYWORD) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.getSourcePos()); - } - QString id = token.getText(); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenIdentifier && token.type() != Token::TokenKeyword) + throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.sourcePos()); + QString id = token.text(); Toolbar toolbar; toolbar.setId(id); parseToolbarProperties(&toolbar); token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() != KEYWORD_BEGIN) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'begin'."), token.getSourcePos()); - } + if (token.type() != Token::TokenKeyword || token.subtype() != KEYWORD_BEGIN) + throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'begin'."), token.sourcePos()); parseToolbarCommands(&toolbar); token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD || token.getSubtype() != KEYWORD_END) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'end'."), token.getSourcePos()); - } + if (token.type() != Token::TokenKeyword || token.subtype() != KEYWORD_END) + throw StereotypeDefinitionParserError(QStringLiteral("Expected token 'end'."), token.sourcePos()); emit toolbarParsed(toolbar); } @@ -392,10 +379,10 @@ void StereotypeDefinitionParser::parseToolbarProperties(Toolbar *toolbar) bool loop = true; while (loop) { token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD) { + if (token.type() != Token::TokenKeyword) { loop = false; } else { - switch (token.getSubtype()) { + switch (token.subtype()) { case KEYWORD_PRIORITY: toolbar->setPriority(parseIntProperty()); break; @@ -405,7 +392,7 @@ void StereotypeDefinitionParser::parseToolbarProperties(Toolbar *toolbar) } } } - d->_scanner->unread(token); + d->m_scanner->unread(token); } QString StereotypeDefinitionParser::parseStringProperty() @@ -437,15 +424,15 @@ QList<QString> StereotypeDefinitionParser::parseIdentifierListProperty() QList<QString> identifiers; expectColon(); for (;;) { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_IDENTIFIER && token.getType() != Token::TOKEN_KEYWORD) { - qDebug() << "token" << token.getType() << token.getSubtype() << token.getText(); - throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.getSourcePos()); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenIdentifier && token.type() != Token::TokenKeyword) { + qDebug() << "token" << token.type() << token.subtype() << token.text(); + throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.sourcePos()); } - identifiers.append(token.getText()); - token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != OPERATOR_COMMA) { - d->_scanner->unread(token); + identifiers.append(token.text()); + token = d->m_scanner->read(); + if (token.type() != Token::TokenOperator || token.subtype() != OPERATOR_COMMA) { + d->m_scanner->unread(token); break; } } @@ -464,87 +451,97 @@ QColor StereotypeDefinitionParser::parseColorProperty() return parseColorExpression(); } -void StereotypeDefinitionParser::parseIconCommands(StereotypeIcon *stereotype_icon) +void StereotypeDefinitionParser::parseIconCommands(StereotypeIcon *stereotypeIcon) { Token token; bool loop = true; - IconShape icon_shape; + IconShape iconShape; QList<ShapeValueF> parameters; typedef QList<IconCommandParameter> Parameters; - static const IconCommandParameter SCALED(ShapeValueF::UNIT_SCALED); - static const IconCommandParameter FIX(ShapeValueF::UNIT_RELATIVE); - static const IconCommandParameter ABSOLUTE(ShapeValueF::UNIT_ABSOLUTE); + static const IconCommandParameter SCALED(ShapeValueF::UnitScaled); + static const IconCommandParameter FIX(ShapeValueF::UnitRelative); + static const IconCommandParameter ABSOLUTE(ShapeValueF::UnitAbsolute); while (loop) { token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD) { + if (token.type() != Token::TokenKeyword) { loop = false; } else { - switch (token.getSubtype()) { + switch (token.subtype()) { case KEYWORD_CIRCLE: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED); - icon_shape.addCircle(ShapePointF(parameters.at(0), parameters.at(1)), parameters.at(2)); + iconShape.addCircle(ShapePointF(parameters.at(0), parameters.at(1)), parameters.at(2)); expectSemicolonOrEndOfLine(); break; case KEYWORD_ELLIPSE: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED); - icon_shape.addEllipse(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3))); + iconShape.addEllipse(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3))); expectSemicolonOrEndOfLine(); break; case KEYWORD_LINE: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED); - icon_shape.addLine(ShapePointF(parameters.at(0), parameters.at(1)), ShapePointF(parameters.at(2), parameters.at(3))); + iconShape.addLine(ShapePointF(parameters.at(0), parameters.at(1)), + ShapePointF(parameters.at(2), parameters.at(3))); expectSemicolonOrEndOfLine(); break; case KEYWORD_RECT: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED); - icon_shape.addRect(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3))); + iconShape.addRect(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3))); expectSemicolonOrEndOfLine(); break; case KEYWORD_ROUNDEDRECT: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED << FIX); - icon_shape.addRoundedRect(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3)), parameters.at(4)); + iconShape.addRoundedRect(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3)), parameters.at(4)); expectSemicolonOrEndOfLine(); break; case KEYWORD_ARC: { - parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE << ABSOLUTE); - qreal start_angle = expectAbsoluteValue(parameters.at(4), d->_scanner->getSourcePos()); - qreal span_angle = expectAbsoluteValue(parameters.at(5), d->_scanner->getSourcePos()); - icon_shape.addArc(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3)), start_angle, span_angle); + parameters = parseIconCommandParameters( + Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE << ABSOLUTE); + qreal startAngle = expectAbsoluteValue(parameters.at(4), d->m_scanner->sourcePos()); + qreal spanAngle = expectAbsoluteValue(parameters.at(5), d->m_scanner->sourcePos()); + iconShape.addArc(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3)), startAngle, spanAngle); expectSemicolonOrEndOfLine(); break; } case KEYWORD_MOVETO: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED); - icon_shape.moveTo(ShapePointF(parameters.at(0), parameters.at(1))); + iconShape.moveTo(ShapePointF(parameters.at(0), parameters.at(1))); expectSemicolonOrEndOfLine(); break; case KEYWORD_LINETO: parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED); - icon_shape.lineTo(ShapePointF(parameters.at(0), parameters.at(1))); + iconShape.lineTo(ShapePointF(parameters.at(0), parameters.at(1))); expectSemicolonOrEndOfLine(); break; case KEYWORD_ARCMOVETO: { - parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE); - qreal angle = expectAbsoluteValue(parameters.at(4), d->_scanner->getSourcePos()); - icon_shape.arcMoveTo(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3)), angle); + parameters = parseIconCommandParameters( + Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE); + qreal angle = expectAbsoluteValue(parameters.at(4), d->m_scanner->sourcePos()); + iconShape.arcMoveTo(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3)), angle); expectSemicolonOrEndOfLine(); break; } case KEYWORD_ARCTO: { - parameters = parseIconCommandParameters(Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE << ABSOLUTE); - qreal start_angle = expectAbsoluteValue(parameters.at(4), d->_scanner->getSourcePos()); - qreal sweep_length = expectAbsoluteValue(parameters.at(5), d->_scanner->getSourcePos()); - icon_shape.arcTo(ShapePointF(parameters.at(0), parameters.at(1)), ShapeSizeF(parameters.at(2), parameters.at(3)), start_angle, sweep_length); + parameters = parseIconCommandParameters( + Parameters() << SCALED << SCALED << SCALED << SCALED << ABSOLUTE << ABSOLUTE); + qreal startAngle = expectAbsoluteValue(parameters.at(4), d->m_scanner->sourcePos()); + qreal sweepLength = expectAbsoluteValue(parameters.at(5), d->m_scanner->sourcePos()); + iconShape.arcTo(ShapePointF(parameters.at(0), parameters.at(1)), + ShapeSizeF(parameters.at(2), parameters.at(3)), startAngle, sweepLength); expectSemicolonOrEndOfLine(); break; } case KEYWORD_CLOSE: - icon_shape.closePath(); + iconShape.closePath(); expectSemicolonOrEndOfLine(); break; default: @@ -553,8 +550,8 @@ void StereotypeDefinitionParser::parseIconCommands(StereotypeIcon *stereotype_ic } } } - stereotype_icon->setIconShape(icon_shape); - d->_scanner->unread(token); + stereotypeIcon->setIconShape(iconShape); + d->m_scanner->unread(token); } QList<ShapeValueF> StereotypeDefinitionParser::parseIconCommandParameters(const QList<IconCommandParameter> ¶meters) @@ -562,22 +559,21 @@ QList<ShapeValueF> StereotypeDefinitionParser::parseIconCommandParameters(const QList<ShapeValueF> values; Token token; for (;;) { - if (values.count() <= parameters.count()) { - values << ShapeValueF(parseFloatExpression(), parameters.at(values.count())._unit, parameters.at(values.count())._origin); - } else { + if (values.count() <= parameters.count()) + values << ShapeValueF(parseFloatExpression(), parameters.at(values.count()).m_unit, + parameters.at(values.count()).m_origin); + else values << ShapeValueF(parseFloatExpression()); - } - token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != OPERATOR_COMMA) { - d->_scanner->unread(token); + token = d->m_scanner->read(); + if (token.type() != Token::TokenOperator || token.subtype() != OPERATOR_COMMA) { + d->m_scanner->unread(token); break; } } - if (values.count() < parameters.count()) { - throw StereotypeDefinitionParserError(QStringLiteral("More parameters expected."), token.getSourcePos()); - } else if (values.count() > parameters.count()) { - throw StereotypeDefinitionParserError(QStringLiteral("Too many parameters given."), token.getSourcePos()); - } + if (values.count() < parameters.count()) + throw StereotypeDefinitionParserError(QStringLiteral("More parameters expected."), token.sourcePos()); + else if (values.count() > parameters.count()) + throw StereotypeDefinitionParserError(QStringLiteral("Too many parameters given."), token.sourcePos()); return values; } @@ -588,31 +584,29 @@ void StereotypeDefinitionParser::parseToolbarCommands(Toolbar *toolbar) bool loop = true; while (loop) { token = readNextToken(); - if (token.getType() != Token::TOKEN_KEYWORD) { + if (token.type() != Token::TokenKeyword) { loop = false; } else { - switch (token.getSubtype()) { + switch (token.subtype()) { case KEYWORD_TOOL: { - QString tool_name = parseStringExpression(); + QString toolName = parseStringExpression(); expectComma(); QString element = parseIdentifierExpression(); - static QSet<QString> element_names = QSet<QString>() + static QSet<QString> elementNames = QSet<QString>() << QStringLiteral("package") << QStringLiteral("component") << QStringLiteral("class") << QStringLiteral("item") << QStringLiteral("annotation") << QStringLiteral("boundary"); - QString element_name = element.toLower(); - if (!element_names.contains(element_name)) { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for element.")).arg(element), token.getSourcePos()); - } + QString elementName = element.toLower(); + if (!elementNames.contains(elementName)) + throw StereotypeDefinitionParserError(QString(QStringLiteral("Unexpected value \"%1\" for element.")).arg(element), token.sourcePos()); QString stereotype; - if (nextIsComma()) { + if (nextIsComma()) stereotype = parseStringExpression(); - } - tools.append(Toolbar::Tool(tool_name, element, stereotype)); + tools.append(Toolbar::Tool(toolName, element, stereotype)); expectSemicolonOrEndOfLine(); break; } @@ -627,36 +621,35 @@ void StereotypeDefinitionParser::parseToolbarCommands(Toolbar *toolbar) } } toolbar->setTools(tools); - d->_scanner->unread(token); + d->m_scanner->unread(token); } QString StereotypeDefinitionParser::parseStringExpression() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_STRING) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected string constant."), token.getSourcePos()); - } - return token.getText(); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenString) + throw StereotypeDefinitionParserError(QStringLiteral("Expected string constant."), token.sourcePos()); + return token.text(); } qreal StereotypeDefinitionParser::parseFloatExpression() { Token token; - token = d->_scanner->read(); - if (token.getType() == Token::TOKEN_OPERATOR && token.getSubtype() == OPERATOR_MINUS) { + token = d->m_scanner->read(); + if (token.type() == Token::TokenOperator && token.subtype() == OPERATOR_MINUS) { return -parseFloatExpression(); } else { bool ok = false; - if (token.getType() == Token::TOKEN_INTEGER) { - int value = token.getText().toInt(&ok); + if (token.type() == Token::TokenInteger) { + int value = token.text().toInt(&ok); QMT_CHECK(ok); return value; - } else if (token.getType() == Token::TOKEN_FLOAT) { - qreal value = token.getText().toDouble(&ok); + } else if (token.type() == Token::TokenFloat) { + qreal value = token.text().toDouble(&ok); QMT_CHECK(ok); return value; } else { - throw StereotypeDefinitionParserError(QStringLiteral("Expected number constant."), token.getSourcePos()); + throw StereotypeDefinitionParserError(QStringLiteral("Expected number constant."), token.sourcePos()); } } } @@ -664,101 +657,97 @@ qreal StereotypeDefinitionParser::parseFloatExpression() int StereotypeDefinitionParser::parseIntExpression() { Token token; - token = d->_scanner->read(); - if (token.getType() == Token::TOKEN_OPERATOR && token.getSubtype() == OPERATOR_MINUS) { + token = d->m_scanner->read(); + if (token.type() == Token::TokenOperator && token.subtype() == OPERATOR_MINUS) { return -parseIntExpression(); } else { bool ok = false; - if (token.getType() == Token::TOKEN_INTEGER) { - int value = token.getText().toInt(&ok); + if (token.type() == Token::TokenInteger) { + int value = token.text().toInt(&ok); QMT_CHECK(ok); return value; } else { - throw StereotypeDefinitionParserError(QStringLiteral("Expected integer constant."), token.getSourcePos()); + throw StereotypeDefinitionParserError(QStringLiteral("Expected integer constant."), token.sourcePos()); } } } QString StereotypeDefinitionParser::parseIdentifierExpression() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_IDENTIFIER && token.getType() != Token::TOKEN_KEYWORD) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.getSourcePos()); - } - return token.getText(); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenIdentifier && token.type() != Token::TokenKeyword) + throw StereotypeDefinitionParserError(QStringLiteral("Expected identifier."), token.sourcePos()); + return token.text(); } bool StereotypeDefinitionParser::parseBoolExpression() { - Token token = d->_scanner->read(); - if (token.getType() == Token::TOKEN_IDENTIFIER) { - QString value = token.getText().toLower(); - if (value == QStringLiteral("yes") || value == QStringLiteral("true")) { + Token token = d->m_scanner->read(); + if (token.type() == Token::TokenIdentifier) { + QString value = token.text().toLower(); + if (value == QStringLiteral("yes") || value == QStringLiteral("true")) return true; - } else if (value == QStringLiteral("no") || value == QStringLiteral("false")) { + else if (value == QStringLiteral("no") || value == QStringLiteral("false")) return false; - } } - throw StereotypeDefinitionParserError(QStringLiteral("Expected 'yes', 'no', 'true' or 'false'."), token.getSourcePos()); + throw StereotypeDefinitionParserError(QStringLiteral("Expected 'yes', 'no', 'true' or 'false'."), token.sourcePos()); } QColor StereotypeDefinitionParser::parseColorExpression() { - Token token = d->_scanner->read(); - if (token.getType() == Token::TOKEN_IDENTIFIER || token.getType() == Token::TOKEN_COLOR) { - QString value = token.getText().toLower(); + Token token = d->m_scanner->read(); + if (token.type() == Token::TokenIdentifier || token.type() == Token::TokenColor) { + QString value = token.text().toLower(); QColor color; if (QColor::isValidColor(value)) { color.setNamedColor(value); return color; } } - throw StereotypeDefinitionParserError(QStringLiteral("Expected color name."), token.getSourcePos()); + throw StereotypeDefinitionParserError(QStringLiteral("Expected color name."), token.sourcePos()); } Token StereotypeDefinitionParser::readNextToken() { Token token; for (;;) { - token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_ENDOFLINE) { + token = d->m_scanner->read(); + if (token.type() != Token::TokenEndOfLine) return token; - } } } -qreal StereotypeDefinitionParser::expectAbsoluteValue(const ShapeValueF &value, const SourcePos &source_pos) +qreal StereotypeDefinitionParser::expectAbsoluteValue(const ShapeValueF &value, const SourcePos &sourcePos) { - if (value.getUnit() != ShapeValueF::UNIT_ABSOLUTE || value.getOrigin() != ShapeValueF::ORIGIN_SMART) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected absolute value"), source_pos); - } - return value.getValue(); + if (value.unit() != ShapeValueF::UnitAbsolute || value.origin() != ShapeValueF::OriginSmart) + throw StereotypeDefinitionParserError(QStringLiteral("Expected absolute value"), sourcePos); + return value.value(); } void StereotypeDefinitionParser::expectSemicolonOrEndOfLine() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_ENDOFLINE && (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != OPERATOR_SEMICOLON)) { - throw StereotypeDefinitionParserError(QStringLiteral("Expected ';' or end-of-line."), token.getSourcePos()); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenEndOfLine + && (token.type() != Token::TokenOperator || token.subtype() != OPERATOR_SEMICOLON)) { + throw StereotypeDefinitionParserError(QStringLiteral("Expected ';' or end-of-line."), token.sourcePos()); } } bool StereotypeDefinitionParser::nextIsComma() { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != OPERATOR_COMMA) { - d->_scanner->unread(token); + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenOperator || token.subtype() != OPERATOR_COMMA) { + d->m_scanner->unread(token); return false; } return true; } -void StereotypeDefinitionParser::expectOperator(int op, const QString &op_name) +void StereotypeDefinitionParser::expectOperator(int op, const QString &opName) { - Token token = d->_scanner->read(); - if (token.getType() != Token::TOKEN_OPERATOR || token.getSubtype() != op) { - throw StereotypeDefinitionParserError(QString(QStringLiteral("Expected '%1'.")).arg(op_name), token.getSourcePos()); - } + Token token = d->m_scanner->read(); + if (token.type() != Token::TokenOperator || token.subtype() != op) + throw StereotypeDefinitionParserError(QString(QStringLiteral("Expected '%1'.")).arg(opName), token.sourcePos()); } void StereotypeDefinitionParser::expectComma() @@ -771,4 +760,4 @@ void StereotypeDefinitionParser::expectColon() expectOperator(OPERATOR_COLON, QStringLiteral(":")); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.h b/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.h index 418699fedb..57cf3fd79b 100644 --- a/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.h +++ b/src/libs/3rdparty/modeling/qmt/config/stereotypedefinitionparser.h @@ -36,7 +36,6 @@ #include "sourcepos.h" - namespace qmt { class ITextSource; @@ -45,111 +44,74 @@ class StereotypeIcon; class Toolbar; class ShapeValueF; -class QMT_EXPORT StereotypeDefinitionParserError : - public Exception +class QMT_EXPORT StereotypeDefinitionParserError : public Exception { public: - - StereotypeDefinitionParserError(const QString &error_msg, const SourcePos &source_pos); - + StereotypeDefinitionParserError(const QString &errorMsg, const SourcePos &sourcePos); ~StereotypeDefinitionParserError(); -public: - - SourcePos getSourcePos() const { return _source_pos; } + SourcePos sourcePos() const { return m_sourcePos; } private: - SourcePos _source_pos; + SourcePos m_sourcePos; }; - class QMT_EXPORT StereotypeDefinitionParser : public QObject { Q_OBJECT - - struct StereotypeDefinitionParserPrivate; - - struct IconCommandParameter; + class StereotypeDefinitionParserPrivate; + class IconCommandParameter; public: - explicit StereotypeDefinitionParser(QObject *parent = 0); - ~StereotypeDefinitionParser(); signals: - - void iconParsed(const StereotypeIcon &stereotype_icon); - + void iconParsed(const StereotypeIcon &stereotypeIcon); void toolbarParsed(const Toolbar &toolbar); public: - void parse(ITextSource *source); private: - void parseFile(); - void parseIcon(); - - void parseIconProperties(StereotypeIcon *stereotype_icon); - + void parseIconProperties(StereotypeIcon *stereotypeIcon); void parseToolbar(); - void parseToolbarProperties(Toolbar *toolbar); QString parseStringProperty(); - int parseIntProperty(); - qreal parseFloatProperty(); - QString parseIdentifierProperty(); - QList<QString> parseIdentifierListProperty(); - bool parseBoolProperty(); - QColor parseColorProperty(); - void parseIconCommands(StereotypeIcon *stereotype_icon); - + void parseIconCommands(StereotypeIcon *stereotypeIcon); QList<ShapeValueF> parseIconCommandParameters(const QList<IconCommandParameter> ¶meters); void parseToolbarCommands(Toolbar *toolbar); QString parseStringExpression(); - qreal parseFloatExpression(); - int parseIntExpression(); - QString parseIdentifierExpression(); - bool parseBoolExpression(); - QColor parseColorExpression(); Token readNextToken(); - qreal expectAbsoluteValue(const ShapeValueF &value, const SourcePos &source_pos); - + qreal expectAbsoluteValue(const ShapeValueF &value, const SourcePos &sourcePos); void expectSemicolonOrEndOfLine(); - bool nextIsComma(); - - void expectOperator(int op, const QString &op_name); - + void expectOperator(int op, const QString &opName); void expectComma(); - void expectColon(); -private: - StereotypeDefinitionParserPrivate *d; }; -} +} // namespace qmt #endif // QMT_STEREOTYPEDEFINITIONPARSER_H diff --git a/src/libs/3rdparty/modeling/qmt/config/stringtextsource.cpp b/src/libs/3rdparty/modeling/qmt/config/stringtextsource.cpp index 7aac48765f..e152e26959 100644 --- a/src/libs/3rdparty/modeling/qmt/config/stringtextsource.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/stringtextsource.cpp @@ -36,10 +36,10 @@ namespace qmt { StringTextSource::StringTextSource() - : _source_id(-1), - _index(-1), - _line_number(-1), - _column_number(-1) + : m_sourceId(-1), + m_index(-1), + m_lineNumber(-1), + m_columnNumber(-1) { } @@ -49,36 +49,35 @@ StringTextSource::~StringTextSource() void StringTextSource::setText(const QString &text) { - _text = text; - _index = 0; - _line_number = 1; - _column_number = 1; + m_text = text; + m_index = 0; + m_lineNumber = 1; + m_columnNumber = 1; } -void StringTextSource::setSourceId(int source_id) +void StringTextSource::setSourceId(int sourceId) { - _source_id = source_id; + m_sourceId = sourceId; } SourceChar StringTextSource::readNextChar() { - QMT_CHECK(_source_id >= 0); - QMT_CHECK(_index >= 0); - QMT_CHECK(_line_number >= 0); - QMT_CHECK(_column_number >= 0); + QMT_CHECK(m_sourceId >= 0); + QMT_CHECK(m_index >= 0); + QMT_CHECK(m_lineNumber >= 0); + QMT_CHECK(m_columnNumber >= 0); - if (_index >= _text.length()) { - return SourceChar(QChar(), SourcePos(_source_id, _line_number, _column_number)); - } + if (m_index >= m_text.length()) + return SourceChar(QChar(), SourcePos(m_sourceId, m_lineNumber, m_columnNumber)); - SourcePos pos(_source_id, _line_number, _column_number); - QChar ch(_text.at(_index)); - ++_index; + SourcePos pos(m_sourceId, m_lineNumber, m_columnNumber); + QChar ch(m_text.at(m_index)); + ++m_index; if (ch == QChar::LineFeed) { - ++_line_number; - _column_number = 1; + ++m_lineNumber; + m_columnNumber = 1; } else { - ++_column_number; + ++m_columnNumber; } return SourceChar(ch, pos); } diff --git a/src/libs/3rdparty/modeling/qmt/config/stringtextsource.h b/src/libs/3rdparty/modeling/qmt/config/stringtextsource.h index 4586e50977..2416d53f4c 100644 --- a/src/libs/3rdparty/modeling/qmt/config/stringtextsource.h +++ b/src/libs/3rdparty/modeling/qmt/config/stringtextsource.h @@ -37,38 +37,26 @@ namespace qmt { -class QMT_EXPORT StringTextSource : - public ITextSource +class QMT_EXPORT StringTextSource : public ITextSource { public: - StringTextSource(); ~StringTextSource(); public: - void setText(const QString &text); - - int getSourceId() const { return _source_id; } - - void setSourceId(int source_id); + int sourceId() const { return m_sourceId; } + void setSourceId(int sourceId); // ITextSource interface -public: - SourceChar readNextChar(); private: - - QString _text; - - int _source_id; - - int _index; - - int _line_number; - - int _column_number; + QString m_text; + int m_sourceId; + int m_index; + int m_lineNumber; + int m_columnNumber; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/textscanner.cpp b/src/libs/3rdparty/modeling/qmt/config/textscanner.cpp index 87b4fe2043..ce78d7c74e 100644 --- a/src/libs/3rdparty/modeling/qmt/config/textscanner.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/textscanner.cpp @@ -44,9 +44,9 @@ typedef QPair<QString, int> DefTuple; namespace qmt { -TextScannerError::TextScannerError(const QString &error_msg, const SourcePos &source_pos) - : Exception(error_msg), - _source_pos(source_pos) +TextScannerError::TextScannerError(const QString &errorMsg, const SourcePos &sourcePos) + : Exception(errorMsg), + m_sourcePos(sourcePos) { } @@ -54,22 +54,24 @@ TextScannerError::~TextScannerError() { } -struct TextScanner::TextScannerPrivate { +class TextScanner::TextScannerPrivate +{ +public: TextScannerPrivate() - : _max_operator_length(0), - _source(0) + : m_maxOperatorLength(0), + m_source(0) { } - QHash<QString, int> _keyword_to_subtype_map; - QHash<QString, int> _operator_to_subtype_map; - int _max_operator_length; - QSet<QChar> _operator_first_chars_set; - QSet<QChar> _operator_chars_set; - ITextSource *_source; - QStack<SourceChar> _unread_source_chars; - SourcePos _last_source_pos; - QStack<Token> _unread_tokens; + QHash<QString, int> m_keywordToSubtypeMap; + QHash<QString, int> m_operatorToSubtypeMap; + int m_maxOperatorLength; + QSet<QChar> m_operatorFirstCharsSet; + QSet<QChar> m_operatorCharsSet; + ITextSource *m_source; + QStack<SourceChar> m_unreadSourceChars; + SourcePos m_lastSourcePos; + QStack<Token> m_unreadTokens; }; TextScanner::TextScanner(QObject *parent) : @@ -85,236 +87,230 @@ TextScanner::~TextScanner() void TextScanner::setKeywords(const QList<QPair<QString, int> > &keywords) { - d->_keyword_to_subtype_map.clear(); - foreach (const DefTuple &tuple, keywords) { - d->_keyword_to_subtype_map.insert(tuple.first.toLower(), tuple.second); - } + d->m_keywordToSubtypeMap.clear(); + foreach (const DefTuple &tuple, keywords) + d->m_keywordToSubtypeMap.insert(tuple.first.toLower(), tuple.second); } void TextScanner::setOperators(const QList<QPair<QString, int> > &operators) { - d->_operator_to_subtype_map.clear(); - d->_max_operator_length = 0; - d->_operator_first_chars_set.clear(); - d->_operator_chars_set.clear(); + d->m_operatorToSubtypeMap.clear(); + d->m_maxOperatorLength = 0; + d->m_operatorFirstCharsSet.clear(); + d->m_operatorCharsSet.clear(); foreach (const DefTuple &tuple, operators) { QString op = tuple.first; - d->_operator_to_subtype_map.insert(op, tuple.second); - if (op.length() > d->_max_operator_length) { - d->_max_operator_length = op.length(); - } - d->_operator_first_chars_set.insert(op.at(0)); - foreach (const QChar ch, op) { - d->_operator_chars_set.insert(ch); - } + d->m_operatorToSubtypeMap.insert(op, tuple.second); + if (op.length() > d->m_maxOperatorLength) + d->m_maxOperatorLength = op.length(); + d->m_operatorFirstCharsSet.insert(op.at(0)); + foreach (const QChar ch, op) + d->m_operatorCharsSet.insert(ch); } } -void TextScanner::setSource(ITextSource *text_source) +void TextScanner::setSource(ITextSource *textSource) { - d->_source = text_source; + d->m_source = textSource; } -SourcePos TextScanner::getSourcePos() const +SourcePos TextScanner::sourcePos() const { - return d->_last_source_pos; + return d->m_lastSourcePos; } Token TextScanner::read() { - if (!d->_unread_tokens.isEmpty()) { - return d->_unread_tokens.pop(); - } + if (!d->m_unreadTokens.isEmpty()) + return d->m_unreadTokens.pop(); skipWhitespaces(); - SourceChar source_char = readChar(); - if (source_char.ch == QLatin1Char('\'') || source_char.ch == QLatin1Char('\"')) { - return scanString(source_char); - } else if (source_char.ch.isDigit()) { - return scanNumber(source_char); - } else if (source_char.ch.isLetter() || source_char.ch == QLatin1Char('_')) { - return scanIdentifier(source_char); - } else if (source_char.ch == QLatin1Char('#')) { - return scanColorIdentifier(source_char); - } else if (source_char.ch == QChar::LineFeed || source_char.ch == QChar::CarriageReturn) { - return Token(Token::TOKEN_ENDOFLINE, QString(), source_char.pos); - } else if (source_char.ch.isNull()) { - return Token(Token::TOKEN_ENDOFINPUT, QString(), source_char.pos); - } else if (d->_operator_first_chars_set.contains(source_char.ch)) { - return scanOperator(source_char); - } else { - throw TextScannerError(QStringLiteral("Unexpected character."), source_char.pos); - } + SourceChar sourceChar = readChar(); + if (sourceChar.ch == QLatin1Char('\'') || sourceChar.ch == QLatin1Char('\"')) + return scanString(sourceChar); + else if (sourceChar.ch.isDigit()) + return scanNumber(sourceChar); + else if (sourceChar.ch.isLetter() || sourceChar.ch == QLatin1Char('_')) + return scanIdentifier(sourceChar); + else if (sourceChar.ch == QLatin1Char('#')) + return scanColorIdentifier(sourceChar); + else if (sourceChar.ch == QChar::LineFeed || sourceChar.ch == QChar::CarriageReturn) + return Token(Token::TokenEndOfLine, QString(), sourceChar.pos); + else if (sourceChar.ch.isNull()) + return Token(Token::TokenEndOfInput, QString(), sourceChar.pos); + else if (d->m_operatorFirstCharsSet.contains(sourceChar.ch)) + return scanOperator(sourceChar); + else + throw TextScannerError(QStringLiteral("Unexpected character."), sourceChar.pos); } void TextScanner::unread(const Token &token) { - d->_unread_tokens.push(token); + d->m_unreadTokens.push(token); } SourceChar TextScanner::readChar() { SourceChar ch; - if (!d->_unread_source_chars.isEmpty()) { - ch = d->_unread_source_chars.pop(); - } else { - ch = d->_source->readNextChar(); - } - d->_last_source_pos = ch.pos; + if (!d->m_unreadSourceChars.isEmpty()) + ch = d->m_unreadSourceChars.pop(); + else + ch = d->m_source->readNextChar(); + d->m_lastSourcePos = ch.pos; return ch; } -void TextScanner::unreadChar(const SourceChar &source_char) +void TextScanner::unreadChar(const SourceChar &sourceChar) { - d->_unread_source_chars.push(source_char); + d->m_unreadSourceChars.push(sourceChar); } void TextScanner::skipWhitespaces() { for (;;) { - SourceChar source_char = readChar(); - if (source_char.ch == QLatin1Char('/')) { - SourceChar second_source_char = readChar(); - if (second_source_char.ch == QLatin1Char('/')) { + SourceChar sourceChar = readChar(); + if (sourceChar.ch == QLatin1Char('/')) { + SourceChar secondSourceChar = readChar(); + if (secondSourceChar.ch == QLatin1Char('/')) { for (;;) { - SourceChar comment_char = readChar(); - if (comment_char.ch.isNull() || comment_char.ch == QChar::LineFeed || comment_char.ch == QChar::CarriageReturn) { + SourceChar commentChar = readChar(); + if (commentChar.ch.isNull() + || commentChar.ch == QChar::LineFeed + || commentChar.ch == QChar::CarriageReturn) { break; } } } else { - unreadChar(second_source_char); - unreadChar(source_char); + unreadChar(secondSourceChar); + unreadChar(sourceChar); } - } else if (source_char.ch == QChar::LineFeed || source_char.ch == QChar::CarriageReturn || !source_char.ch.isSpace()) { - unreadChar(source_char); + } else if (sourceChar.ch == QChar::LineFeed + || sourceChar.ch == QChar::CarriageReturn + || !sourceChar.ch.isSpace()) { + unreadChar(sourceChar); return; } } } -Token TextScanner::scanString(const SourceChar &delimiter_char) +Token TextScanner::scanString(const SourceChar &delimiterChar) { QString text; for (;;) { - SourceChar source_char = readChar(); - if (source_char.ch == delimiter_char.ch) { - return Token(Token::TOKEN_STRING, text, delimiter_char.pos); - } else if (source_char.ch == QLatin1Char('\\')) { - source_char = readChar(); - if (source_char.ch == QLatin1Char('n')) { + SourceChar sourceChar = readChar(); + if (sourceChar.ch == delimiterChar.ch) { + return Token(Token::TokenString, text, delimiterChar.pos); + } else if (sourceChar.ch == QLatin1Char('\\')) { + sourceChar = readChar(); + if (sourceChar.ch == QLatin1Char('n')) text += QLatin1Char('\n'); - } else if (source_char.ch == QLatin1Char('\\')) { + else if (sourceChar.ch == QLatin1Char('\\')) text += QLatin1Char('\\'); - } else if (source_char.ch == QLatin1Char('t')) { + else if (sourceChar.ch == QLatin1Char('t')) text += QLatin1Char('\t'); - } else if (source_char.ch == QLatin1Char('\"')) { + else if (sourceChar.ch == QLatin1Char('\"')) text += QLatin1Char('\"'); - } else if (source_char.ch == QLatin1Char('\'')) { + else if (sourceChar.ch == QLatin1Char('\'')) text += QLatin1Char('\''); - } else { - throw TextScannerError(QStringLiteral("Unexpected character after '\\' in string constant."), source_char.pos); - } - } else if (source_char.ch == QChar::LineFeed || source_char.ch == QChar::CarriageReturn) { - throw TextScannerError(QStringLiteral("Unexpected end of line in string constant."), source_char.pos); + else + throw TextScannerError(QStringLiteral("Unexpected character after '\\' in string constant."), sourceChar.pos); + } else if (sourceChar.ch == QChar::LineFeed || sourceChar.ch == QChar::CarriageReturn) { + throw TextScannerError(QStringLiteral("Unexpected end of line in string constant."), sourceChar.pos); } else { - text += source_char.ch; + text += sourceChar.ch; } } } -Token TextScanner::scanNumber(const SourceChar &first_digit) +Token TextScanner::scanNumber(const SourceChar &firstDigit) { - QString text = first_digit.ch; - SourceChar source_char; + QString text = firstDigit.ch; + SourceChar sourceChar; for (;;) { - source_char = readChar(); - if (!source_char.ch.isDigit()) { + sourceChar = readChar(); + if (!sourceChar.ch.isDigit()) break; - } - text += source_char.ch; + text += sourceChar.ch; } - if (source_char.ch == QLatin1Char('.')) { - text += source_char.ch; + if (sourceChar.ch == QLatin1Char('.')) { + text += sourceChar.ch; for (;;) { - source_char = readChar(); - if (!source_char.ch.isDigit()) { + sourceChar = readChar(); + if (!sourceChar.ch.isDigit()) break; - } - text += source_char.ch; + text += sourceChar.ch; } - unreadChar(source_char); - return Token(Token::TOKEN_FLOAT, text, first_digit.pos); + unreadChar(sourceChar); + return Token(Token::TokenFloat, text, firstDigit.pos); } else { - unreadChar(source_char); - return Token(Token::TOKEN_INTEGER, text, first_digit.pos); + unreadChar(sourceChar); + return Token(Token::TokenInteger, text, firstDigit.pos); } } -Token TextScanner::scanIdentifier(const SourceChar &first_char) +Token TextScanner::scanIdentifier(const SourceChar &firstChar) { - QString text = first_char.ch; - SourceChar source_char; + QString text = firstChar.ch; + SourceChar sourceChar; for (;;) { - source_char = readChar(); - if (!source_char.ch.isLetterOrNumber() && source_char.ch != QLatin1Char('_')) { - unreadChar(source_char); + sourceChar = readChar(); + if (!sourceChar.ch.isLetterOrNumber() && sourceChar.ch != QLatin1Char('_')) { + unreadChar(sourceChar); QString keyword = text.toLower(); - if (d->_keyword_to_subtype_map.contains(keyword)) { - return Token(Token::TOKEN_KEYWORD, d->_keyword_to_subtype_map.value(keyword), text, first_char.pos); - } - return Token(Token::TOKEN_IDENTIFIER, text, first_char.pos); + if (d->m_keywordToSubtypeMap.contains(keyword)) + return Token(Token::TokenKeyword, d->m_keywordToSubtypeMap.value(keyword), text, firstChar.pos); + return Token(Token::TokenIdentifier, text, firstChar.pos); } - text += source_char.ch; + text += sourceChar.ch; } } -Token TextScanner::scanColorIdentifier(const SourceChar &first_char) +Token TextScanner::scanColorIdentifier(const SourceChar &firstChar) { - QString text = first_char.ch; - SourceChar source_char; + QString text = firstChar.ch; + SourceChar sourceChar; for (;;) { - source_char = readChar(); - QChar ch = source_char.ch.toLower(); + sourceChar = readChar(); + QChar ch = sourceChar.ch.toLower(); if (!(ch.isDigit() || (ch >= QLatin1Char('a') && ch <= QLatin1Char('f')))) { - unreadChar(source_char); - return Token(Token::TOKEN_COLOR, text, first_char.pos); + unreadChar(sourceChar); + return Token(Token::TokenColor, text, firstChar.pos); } - text += source_char.ch; + text += sourceChar.ch; } } -Token TextScanner::scanOperator(const SourceChar &first_char) +Token TextScanner::scanOperator(const SourceChar &firstChar) { - QString text = first_char.ch; - SourceChar source_char; - QStack<SourceChar> extra_chars; - bool have_operator = false; - int operator_length = 0; + QString text = firstChar.ch; + SourceChar sourceChar; + QStack<SourceChar> extraChars; + bool haveOperator = false; + int operatorLength = 0; int subtype = 0; QString op; - extra_chars.push(first_char); + extraChars.push(firstChar); for (;;) { - if (d->_operator_to_subtype_map.contains(text)) { - have_operator = true; - operator_length = text.length(); - subtype = d->_operator_to_subtype_map.value(text); + if (d->m_operatorToSubtypeMap.contains(text)) { + haveOperator = true; + operatorLength = text.length(); + subtype = d->m_operatorToSubtypeMap.value(text); op = text; } - source_char = readChar(); - if (text.length() >= d->_max_operator_length || !d->_operator_chars_set.contains(source_char.ch)) { - unreadChar(source_char); + sourceChar = readChar(); + if (text.length() >= d->m_maxOperatorLength || !d->m_operatorCharsSet.contains(sourceChar.ch)) { + unreadChar(sourceChar); int i = text.length(); - while (i > operator_length) { + while (i > operatorLength) { --i; - unreadChar(extra_chars.pop()); + unreadChar(extraChars.pop()); } - QMT_CHECK(have_operator); - Q_UNUSED(have_operator); // avoid warning in release mode - return Token(Token::TOKEN_OPERATOR, subtype, op, first_char.pos); + QMT_CHECK(haveOperator); + Q_UNUSED(haveOperator); // avoid warning in release mode + return Token(Token::TokenOperator, subtype, op, firstChar.pos); } - text += source_char.ch; - extra_chars.push(source_char); + text += sourceChar.ch; + extraChars.push(sourceChar); } } diff --git a/src/libs/3rdparty/modeling/qmt/config/textscanner.h b/src/libs/3rdparty/modeling/qmt/config/textscanner.h index 0b828bb951..0768df4275 100644 --- a/src/libs/3rdparty/modeling/qmt/config/textscanner.h +++ b/src/libs/3rdparty/modeling/qmt/config/textscanner.h @@ -40,78 +40,50 @@ namespace qmt { class ITextSource; -struct SourceChar; +class SourceChar; class Token; -class QMT_EXPORT TextScannerError : - public Exception +class QMT_EXPORT TextScannerError : public Exception { public: - - TextScannerError(const QString &error_msg, const SourcePos &source_pos); - + TextScannerError(const QString &errorMsg, const SourcePos &sourcePos); ~TextScannerError(); -public: - - SourcePos getSourcePos() const { return _source_pos; } + SourcePos sourcePos() const { return m_sourcePos; } private: - SourcePos _source_pos; + SourcePos m_sourcePos; }; - class QMT_EXPORT TextScanner : public QObject { Q_OBJECT - - struct TextScannerPrivate; + class TextScannerPrivate; public: explicit TextScanner(QObject *parent = 0); - ~TextScanner(); -signals: - -public: - void setKeywords(const QList<QPair<QString, int> > &keywords); - void setOperators(const QList<QPair<QString, int> > &operators); - - void setSource(ITextSource *text_source); - - SourcePos getSourcePos() const; - -public: + void setSource(ITextSource *textSource); + SourcePos sourcePos() const; Token read(); - void unread(const Token &token); private: - SourceChar readChar(); - - void unreadChar(const SourceChar &source_char); - + void unreadChar(const SourceChar &sourceChar); void skipWhitespaces(); - Token scanString(const SourceChar &delimiter_char); - - Token scanNumber(const SourceChar &first_digit); - - Token scanIdentifier(const SourceChar &first_char); - - Token scanColorIdentifier(const SourceChar &first_char); - - Token scanOperator(const SourceChar &first_char); - -private: + Token scanString(const SourceChar &delimiterChar); + Token scanNumber(const SourceChar &firstDigit); + Token scanIdentifier(const SourceChar &firstChar); + Token scanColorIdentifier(const SourceChar &firstChar); + Token scanOperator(const SourceChar &firstChar); TextScannerPrivate *d; - }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/textsource.h b/src/libs/3rdparty/modeling/qmt/config/textsource.h index d026fd334a..56c3c9903e 100644 --- a/src/libs/3rdparty/modeling/qmt/config/textsource.h +++ b/src/libs/3rdparty/modeling/qmt/config/textsource.h @@ -35,14 +35,15 @@ #include <QChar> - namespace qmt { -struct SourceChar { +class SourceChar +{ +public: SourceChar() { } - SourceChar(QChar chr, const SourcePos &source_pos) + SourceChar(QChar chr, const SourcePos &sourcePos) : ch(chr), - pos(source_pos) + pos(sourcePos) { } @@ -53,13 +54,11 @@ struct SourceChar { class ITextSource { public: - virtual ~ITextSource() { } virtual SourceChar readNextChar() = 0; - }; -} +} // namespace qmt #endif // QMT_TEXTSOURCE_H diff --git a/src/libs/3rdparty/modeling/qmt/config/token.cpp b/src/libs/3rdparty/modeling/qmt/config/token.cpp index b3341121f4..63852b05fb 100644 --- a/src/libs/3rdparty/modeling/qmt/config/token.cpp +++ b/src/libs/3rdparty/modeling/qmt/config/token.cpp @@ -33,24 +33,24 @@ namespace qmt { Token::Token() - : _type(TOKEN_UNDEFINED), - _subtype(0) + : m_type(TokenUndefined), + m_subtype(0) { } -Token::Token(Type type, const QString &text, const SourcePos &source_pos) - : _type(type), - _subtype(0), - _text(text), - _source_pos(source_pos) +Token::Token(Type type, const QString &text, const SourcePos &sourcePos) + : m_type(type), + m_subtype(0), + m_text(text), + m_sourcePos(sourcePos) { } -Token::Token(Token::Type type, int subtype, const QString &text, const SourcePos &source_pos) - : _type(type), - _subtype(subtype), - _text(text), - _source_pos(source_pos) +Token::Token(Token::Type type, int subtype, const QString &text, const SourcePos &sourcePos) + : m_type(type), + m_subtype(subtype), + m_text(text), + m_sourcePos(sourcePos) { } @@ -60,22 +60,22 @@ Token::~Token() void Token::setType(Token::Type type) { - _type = type; + m_type = type; } void Token::setSubtype(int subtype) { - _subtype = subtype; + m_subtype = subtype; } void Token::setText(const QString &text) { - _text = text; + m_text = text; } -void Token::setSourcePos(const SourcePos &source_pos) +void Token::setSourcePos(const SourcePos &sourcePos) { - _source_pos = source_pos; + m_sourcePos = sourcePos; } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/config/token.h b/src/libs/3rdparty/modeling/qmt/config/token.h index ef1918c6e1..47d779d459 100644 --- a/src/libs/3rdparty/modeling/qmt/config/token.h +++ b/src/libs/3rdparty/modeling/qmt/config/token.h @@ -40,49 +40,38 @@ namespace qmt { class Token { public: - enum Type { - TOKEN_UNDEFINED, - TOKEN_ENDOFINPUT, - TOKEN_ENDOFLINE, - TOKEN_STRING, - TOKEN_INTEGER, - TOKEN_FLOAT, - TOKEN_IDENTIFIER, - TOKEN_KEYWORD, - TOKEN_OPERATOR, - TOKEN_COLOR + TokenUndefined, + TokenEndOfInput, + TokenEndOfLine, + TokenString, + TokenInteger, + TokenFloat, + TokenIdentifier, + TokenKeyword, + TokenOperator, + TokenColor }; -public: Token(); - Token(Type type, const QString &text, const SourcePos &source_pos); - Token(Type type, int subtype, const QString &text, const SourcePos &source_pos); + Token(Type type, const QString &text, const SourcePos &sourcePos); + Token(Type type, int subtype, const QString &text, const SourcePos &sourcePos); ~Token(); -public: - - Type getType() const { return _type; } - + Type type() const { return m_type; } void setType(Type type); - - int getSubtype() const { return _subtype; } - + int subtype() const { return m_subtype; } void setSubtype(int subtype); - - QString getText() const { return _text; } - + QString text() const { return m_text; } void setText(const QString &text); - - SourcePos getSourcePos() const { return _source_pos; } - - void setSourcePos(const SourcePos &source_pos); + SourcePos sourcePos() const { return m_sourcePos; } + void setSourcePos(const SourcePos &sourcePos); private: - Type _type; - int _subtype; - QString _text; - SourcePos _source_pos; + Type m_type; + int m_subtype; + QString m_text; + SourcePos m_sourcePos; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/controller/container.h b/src/libs/3rdparty/modeling/qmt/controller/container.h index 3ea38ea2d9..fba12502e9 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/container.h +++ b/src/libs/3rdparty/modeling/qmt/controller/container.h @@ -39,71 +39,61 @@ template<class T> class Container { protected: - Container() { } - Container(const Container<T> &rhs) - : _elements(rhs._elements) + : m_elements(rhs.m_elements) { - rhs._elements.clear(); + rhs.m_elements.clear(); } public: - ~Container() { - qDeleteAll(_elements); + qDeleteAll(m_elements); } -public: - Container &operator=(const Container<T> &rhs) { if (this != &rhs) { - qDeleteAll(_elements); - _elements = rhs._elements; - rhs._elements.clear(); + qDeleteAll(m_elements); + m_elements = rhs.m_elements; + rhs.m_elements.clear(); } return *this; } -public: - - bool isEmpty() const { return _elements.empty(); } - - int size() const { return _elements.size(); } - - QList<T *> getElements() const { return _elements; } + bool isEmpty() const { return m_elements.empty(); } + int size() const { return m_elements.size(); } + QList<T *> elements() const { return m_elements; } QList<T *> takeElements() const { - QList<T *> elements = _elements; - _elements.clear(); + QList<T *> elements = m_elements; + m_elements.clear(); return elements; } void submitElements(const QList<T *> &elements) { - qDeleteAll(_elements); - _elements = elements; + qDeleteAll(m_elements); + m_elements = elements; } void reset() { - qDeleteAll(_elements); - _elements.clear(); + qDeleteAll(m_elements); + m_elements.clear(); } void submit(T *element) { - _elements.append(element); + m_elements.append(element); } private: - - mutable QList<T *> _elements; + mutable QList<T *> m_elements; }; -} +} // namespace qmt #endif // QMT_CONTAINER_H diff --git a/src/libs/3rdparty/modeling/qmt/controller/namecontroller.cpp b/src/libs/3rdparty/modeling/qmt/controller/namecontroller.cpp index 2cec125909..fb99bca57f 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/namecontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/controller/namecontroller.cpp @@ -42,121 +42,116 @@ NameController::NameController(QObject *parent) NameController::~NameController() { - } -QString NameController::convertFileNameToElementName(const QString &file_name) +QString NameController::convertFileNameToElementName(const QString &fileName) { - QFileInfo file_info(file_name); - QString base_name = file_info.baseName().trimmed(); - QString element_name; - bool make_uppercase = true; - bool insert_space = false; - for (int i = 0; i < base_name.size(); ++i) { - if (base_name.at(i) == QLatin1Char('_')) { - make_uppercase = true; - insert_space = true; - } else if (base_name.at(i) == QLatin1Char(' ') || base_name.at(i) == QLatin1Char('-')) { - make_uppercase = true; - insert_space = false; - element_name += base_name.at(i); - } else if (make_uppercase) { - if (insert_space) { - element_name += QLatin1Char(' '); - insert_space = false; + QFileInfo fileInfo(fileName); + QString baseName = fileInfo.baseName().trimmed(); + QString elementName; + bool makeUppercase = true; + bool insertSpace = false; + for (int i = 0; i < baseName.size(); ++i) { + if (baseName.at(i) == QLatin1Char('_')) { + makeUppercase = true; + insertSpace = true; + } else if (baseName.at(i) == QLatin1Char(' ') || baseName.at(i) == QLatin1Char('-')) { + makeUppercase = true; + insertSpace = false; + elementName += baseName.at(i); + } else if (makeUppercase) { + if (insertSpace) { + elementName += QLatin1Char(' '); + insertSpace = false; } - element_name += base_name.at(i).toUpper(); - make_uppercase = false; + elementName += baseName.at(i).toUpper(); + makeUppercase = false; } else { - if (insert_space) { - element_name += QLatin1Char(' '); - insert_space = false; + if (insertSpace) { + elementName += QLatin1Char(' '); + insertSpace = false; } - element_name += base_name.at(i); + elementName += baseName.at(i); } } - return element_name; + return elementName; } -QString NameController::convertElementNameToBaseFileName(const QString &element_name) +QString NameController::convertElementNameToBaseFileName(const QString &elementName) { - QString base_file_name; - bool insert_underscore = false; - for (int i = 0; i < element_name.size(); ++i) { - if (element_name.at(i) == QLatin1Char(' ')) { - insert_underscore = true; + QString baseFileName; + bool insertUnderscore = false; + for (int i = 0; i < elementName.size(); ++i) { + if (elementName.at(i) == QLatin1Char(' ')) { + insertUnderscore = true; } else { - if (insert_underscore) { - base_file_name += QLatin1Char('_'); - insert_underscore = false; + if (insertUnderscore) { + baseFileName += QLatin1Char('_'); + insertUnderscore = false; } - base_file_name += element_name.at(i).toLower(); + baseFileName += elementName.at(i).toLower(); } } - return base_file_name; + return baseFileName; } -QString NameController::calcRelativePath(const QString &absolute_file_name, const QString &anchor_path) +QString NameController::calcRelativePath(const QString &absoluteFileName, const QString &anchorPath) { - int second_last_slash_index = -1; - int slash_index = -1; + int secondLastSlashIndex = -1; + int slashIndex = -1; int i = 0; - while (i < absolute_file_name.size() && i < anchor_path.size() && absolute_file_name.at(i) == anchor_path.at(i)) { - if (absolute_file_name.at(i) == QLatin1Char('/')) { - second_last_slash_index = slash_index; - slash_index = i; + while (i < absoluteFileName.size() && i < anchorPath.size() && absoluteFileName.at(i) == anchorPath.at(i)) { + if (absoluteFileName.at(i) == QLatin1Char('/')) { + secondLastSlashIndex = slashIndex; + slashIndex = i; } ++i; } - QString relative_path; - - if (slash_index < 0) { - relative_path = absolute_file_name; - } else if (i >= absolute_file_name.size()) { - // absolute_file_name is a substring of anchor path. - if (slash_index == i - 1) { - if (second_last_slash_index < 0) { - relative_path = absolute_file_name; - } else { - relative_path = absolute_file_name.mid(second_last_slash_index + 1); - } + QString relativePath; + + if (slashIndex < 0) { + relativePath = absoluteFileName; + } else if (i >= absoluteFileName.size()) { + // absoluteFileName is a substring of anchor path. + if (slashIndex == i - 1) { + if (secondLastSlashIndex < 0) + relativePath = absoluteFileName; + else + relativePath = absoluteFileName.mid(secondLastSlashIndex + 1); } else { - relative_path = absolute_file_name.mid(slash_index + 1); + relativePath = absoluteFileName.mid(slashIndex + 1); } } else { - relative_path = absolute_file_name.mid(slash_index + 1); + relativePath = absoluteFileName.mid(slashIndex + 1); } - return relative_path; + return relativePath; } -QString NameController::calcElementNameSearchId(const QString &element_name) +QString NameController::calcElementNameSearchId(const QString &elementName) { - QString search_id; - foreach (const QChar &c, element_name) { - if (c.isLetterOrNumber()) { - search_id += c.toLower(); - } + QString searchId; + foreach (const QChar &c, elementName) { + if (c.isLetterOrNumber()) + searchId += c.toLower(); } - return search_id; + return searchId; } -QList<QString> NameController::buildElementsPath(const QString &file_path, bool ignore_last_file_path_part) +QList<QString> NameController::buildElementsPath(const QString &filePath, bool ignoreLastFilePathPart) { - QList<QString> relative_elements; - - QStringList splitted = file_path.split(QStringLiteral("/")); - QStringList::const_iterator splitted_end = splitted.end(); - if (ignore_last_file_path_part || splitted.last().isEmpty()) { - splitted_end = --splitted_end; - } - for (QStringList::const_iterator it = splitted.cbegin(); it != splitted_end; ++it) { - QString package_name = qmt::NameController::convertFileNameToElementName(*it); - relative_elements.append(package_name); + QList<QString> relativeElements; + + QStringList splitted = filePath.split(QStringLiteral("/")); + QStringList::const_iterator splittedEnd = splitted.end(); + if (ignoreLastFilePathPart || splitted.last().isEmpty()) + splittedEnd = --splittedEnd; + for (QStringList::const_iterator it = splitted.cbegin(); it != splittedEnd; ++it) { + QString packageName = qmt::NameController::convertFileNameToElementName(*it); + relativeElements.append(packageName); } - return relative_elements; + return relativeElements; } - -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/controller/namecontroller.h b/src/libs/3rdparty/modeling/qmt/controller/namecontroller.h index 73a9b67f88..ea0a853f08 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/namecontroller.h +++ b/src/libs/3rdparty/modeling/qmt/controller/namecontroller.h @@ -39,32 +39,22 @@ namespace qmt { -class QMT_EXPORT NameController : - public QObject +class QMT_EXPORT NameController : public QObject { Q_OBJECT private: NameController(QObject *parent = 0); - ~NameController(); public: - - static QString convertFileNameToElementName(const QString &file_name); - - static QString convertElementNameToBaseFileName(const QString &element_name); - - static QString calcRelativePath(const QString &absolute_file_name, const QString &anchor_path); - - static QString calcElementNameSearchId(const QString &element_name); - - static QList<QString> buildElementsPath(const QString &file_path, bool ignore_last_file_path_part); - -private: - + static QString convertFileNameToElementName(const QString &fileName); + static QString convertElementNameToBaseFileName(const QString &elementName); + static QString calcRelativePath(const QString &absoluteFileName, const QString &anchorPath); + static QString calcElementNameSearchId(const QString &elementName); + static QList<QString> buildElementsPath(const QString &filePath, bool ignoreLastFilePathPart); }; -} +} // namespace qmt #endif // QMT_NAMECONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/controller/references.h b/src/libs/3rdparty/modeling/qmt/controller/references.h index 6553a91291..cf18e4933b 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/references.h +++ b/src/libs/3rdparty/modeling/qmt/controller/references.h @@ -42,28 +42,19 @@ protected: References() { } public: - ~References() { } -public: - - bool isEmpty() const { return _elements.empty(); } - - int size() const { return _elements.size(); } - - QList<T *> getElements() const { return _elements; } - - void setElements(const QList<T *> &elements) { _elements = elements; } - - void clear() { _elements.clear(); } - - void append(T *element) { _elements.append(element); } + bool isEmpty() const { return m_elements.empty(); } + int size() const { return m_elements.size(); } + QList<T *> elements() const { return m_elements; } + void setElements(const QList<T *> &elements) { m_elements = elements; } + void clear() { m_elements.clear(); } + void append(T *element) { m_elements.append(element); } private: - - QList<T *> _elements; + QList<T *> m_elements; }; -} +} // namespace qmt #endif // QMT_REFERENCES_H diff --git a/src/libs/3rdparty/modeling/qmt/controller/selection.cpp b/src/libs/3rdparty/modeling/qmt/controller/selection.cpp index 1443a5c96e..bb01d33304 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/selection.cpp +++ b/src/libs/3rdparty/modeling/qmt/controller/selection.cpp @@ -42,22 +42,22 @@ Selection::~Selection() void Selection::setIndices(const QList<qmt::Selection::Index> &indices) { - _indices = indices; + m_indices = indices; } void Selection::clear() { - _indices.clear(); + m_indices.clear(); } void Selection::append(const Index &index) { - _indices.append(index); + m_indices.append(index); } -void Selection::append(const Uid &element_key, const Uid &owner_key) +void Selection::append(const Uid &elementKey, const Uid &ownerKey) { - append(Index(element_key, owner_key)); + append(Index(elementKey, ownerKey)); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/controller/selection.h b/src/libs/3rdparty/modeling/qmt/controller/selection.h index 8653d7b482..dc85ef7953 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/selection.h +++ b/src/libs/3rdparty/modeling/qmt/controller/selection.h @@ -35,62 +35,46 @@ #include <QList> - namespace qmt { class QMT_EXPORT Selection { public: - class Index { + class Index + { public: - - Index(const Uid &element_key, const Uid &owner_key) - : _element_key(element_key), - _owner_key(owner_key) + Index(const Uid &elementKey, const Uid &ownerKey) + : m_elementKey(elementKey), + m_ownerKey(ownerKey) { } - Uid getElementKey() const { return _element_key; } - - Uid getOwnerKey() const { return _owner_key; } + Uid elementKey() const { return m_elementKey; } + Uid ownerKey() const { return m_ownerKey; } private: - - Uid _element_key; - - Uid _owner_key; + Uid m_elementKey; + Uid m_ownerKey; }; protected: - Selection(); public: - ~Selection(); -public: - - bool isEmpty() const { return _indices.isEmpty(); } - - QList<Index> getIndices() const { return _indices; } - + bool isEmpty() const { return m_indices.isEmpty(); } + QList<Index> indices() const { return m_indices; } void setIndices(const QList<Index> &indices); -public: - void clear(); - void append(const Index &index); - - void append(const Uid &element_key, const Uid &owner_key); + void append(const Uid &elementKey, const Uid &ownerKey); private: - - QList<Index> _indices; + QList<Index> m_indices; }; -} - +} // namespace qmt #endif // QMT_SELECTION_H diff --git a/src/libs/3rdparty/modeling/qmt/controller/undocommand.cpp b/src/libs/3rdparty/modeling/qmt/controller/undocommand.cpp index 633f64cf9c..03bc6e545d 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/undocommand.cpp +++ b/src/libs/3rdparty/modeling/qmt/controller/undocommand.cpp @@ -36,8 +36,8 @@ namespace qmt { UndoCommand::UndoCommand(const QString &text) : QUndoCommand(text), - _can_redo(false), - _do_not_merge(false) + m_canRedo(false), + m_doNotMerge(false) { } @@ -50,21 +50,19 @@ int UndoCommand::id() const return 1; } -void UndoCommand::setDoNotMerge(bool do_not_merge) +void UndoCommand::setDoNotMerge(bool doNotMerge) { - _do_not_merge = do_not_merge; + m_doNotMerge = doNotMerge; } bool UndoCommand::mergeWith(const QUndoCommand *other) { - const UndoCommand *other_command = dynamic_cast<const UndoCommand *>(other); - if (!other_command) { + const UndoCommand *otherCommand = dynamic_cast<const UndoCommand *>(other); + if (!otherCommand) return false; - } - if (other_command->_do_not_merge) { + if (otherCommand->m_doNotMerge) return false; - } - return mergeWith(other_command); + return mergeWith(otherCommand); } bool UndoCommand::mergeWith(const UndoCommand *other) @@ -76,14 +74,14 @@ bool UndoCommand::mergeWith(const UndoCommand *other) void UndoCommand::undo() { - QMT_CHECK(!_can_redo); - _can_redo = true; + QMT_CHECK(!m_canRedo); + m_canRedo = true; } void UndoCommand::redo() { - QMT_CHECK(_can_redo); - _can_redo = false; + QMT_CHECK(m_canRedo); + m_canRedo = false; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/controller/undocommand.h b/src/libs/3rdparty/modeling/qmt/controller/undocommand.h index 3ee9bde162..a3037f50de 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/undocommand.h +++ b/src/libs/3rdparty/modeling/qmt/controller/undocommand.h @@ -34,42 +34,29 @@ #include <QUndoCommand> #include "qmt/infrastructure/qmt_global.h" - namespace qmt { -class QMT_EXPORT UndoCommand : - public QUndoCommand +class QMT_EXPORT UndoCommand : public QUndoCommand { public: explicit UndoCommand(const QString &text); - ~UndoCommand(); -public: - - bool canRedo() const { return _can_redo; } - + bool canRedo() const { return m_canRedo; } int id() const; - - void setDoNotMerge(bool do_not_merge); - -public: + void setDoNotMerge(bool doNotMerge); bool mergeWith(const QUndoCommand *other); - virtual bool mergeWith(const UndoCommand *other); void undo(); - void redo(); private: - - bool _can_redo; - - bool _do_not_merge; + bool m_canRedo; + bool m_doNotMerge; }; -} +} // namespace qmt #endif // QMT_UNDOCOMMAND_H diff --git a/src/libs/3rdparty/modeling/qmt/controller/undocontroller.cpp b/src/libs/3rdparty/modeling/qmt/controller/undocontroller.cpp index e6ff407490..c341d05ecb 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/undocontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/controller/undocontroller.cpp @@ -38,8 +38,8 @@ namespace qmt { UndoController::UndoController(QObject *parent) : QObject(parent), - _undo_stack(new QUndoStack(this)), - _do_not_merge(false) + m_undoStack(new QUndoStack(this)), + m_doNotMerge(false) { } @@ -49,29 +49,29 @@ UndoController::~UndoController() void UndoController::push(UndoCommand *cmd) { - cmd->setDoNotMerge(_do_not_merge); - _do_not_merge = false; - _undo_stack->push(cmd); + cmd->setDoNotMerge(m_doNotMerge); + m_doNotMerge = false; + m_undoStack->push(cmd); } void UndoController::beginMergeSequence(const QString &text) { - _undo_stack->beginMacro(text); + m_undoStack->beginMacro(text); } void UndoController::endMergeSequence() { - _undo_stack->endMacro(); + m_undoStack->endMacro(); } void UndoController::reset() { - _undo_stack->clear(); + m_undoStack->clear(); } void UndoController::doNotMerge() { - _do_not_merge = true; + m_doNotMerge = true; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/controller/undocontroller.h b/src/libs/3rdparty/modeling/qmt/controller/undocontroller.h index 63243a1bcf..829a317487 100644 --- a/src/libs/3rdparty/modeling/qmt/controller/undocontroller.h +++ b/src/libs/3rdparty/modeling/qmt/controller/undocontroller.h @@ -38,51 +38,34 @@ QT_BEGIN_NAMESPACE class QUndoStack; QT_END_NAMESPACE - namespace qmt { class UndoCommand; - -class QMT_EXPORT UndoController : - public QObject +class QMT_EXPORT UndoController : public QObject { Q_OBJECT public: - explicit UndoController(QObject *parent = 0); - ~UndoController(); -signals: - -public: - - QUndoStack *getUndoStack() const { return _undo_stack; } + QUndoStack *undoStack() const { return m_undoStack; } public slots: - void push(UndoCommand *cmd); - void beginMergeSequence(const QString &text); - void endMergeSequence(); public: - void reset(); - void doNotMerge(); private: - - QUndoStack *_undo_stack; - - bool _do_not_merge; - + QUndoStack *m_undoStack; + bool m_doNotMerge; }; -} +} // namespace qmt #endif // QMT_UNDOCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dannotation.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dannotation.cpp index 317cfe6a18..2ea717bc5f 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dannotation.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dannotation.cpp @@ -37,18 +37,18 @@ namespace qmt { DAnnotation::DAnnotation() : DElement(), - _visual_role(ROLE_NORMAL), - _auto_sized(true) + m_visualRole(RoleNormal), + m_isAutoSized(true) { } DAnnotation::DAnnotation(const DAnnotation &rhs) : DElement(rhs), - _text(rhs._text), - _pos(rhs._pos), - _rect(rhs._rect), - _visual_role(rhs._visual_role), - _auto_sized(rhs._auto_sized) + m_text(rhs.m_text), + m_pos(rhs.m_pos), + m_rect(rhs.m_rect), + m_visualRole(rhs.m_visualRole), + m_isAutoSized(rhs.m_isAutoSized) { } @@ -60,38 +60,38 @@ DAnnotation &DAnnotation::operator=(const DAnnotation &rhs) { if (this != &rhs) { DElement::operator=(rhs); - _text = rhs._text; - _pos = rhs._pos; - _rect = rhs._rect; - _visual_role = rhs._visual_role; - _auto_sized = rhs._auto_sized; + m_text = rhs.m_text; + m_pos = rhs.m_pos; + m_rect = rhs.m_rect; + m_visualRole = rhs.m_visualRole; + m_isAutoSized = rhs.m_isAutoSized; } return *this; } void DAnnotation::setText(const QString &text) { - _text = text; + m_text = text; } void DAnnotation::setPos(const QPointF &pos) { - _pos = pos; + m_pos = pos; } void DAnnotation::setRect(const QRectF &rect) { - _rect = rect; + m_rect = rect; } -void DAnnotation::setVisualRole(DAnnotation::VisualRole visual_role) +void DAnnotation::setVisualRole(DAnnotation::VisualRole visualRole) { - _visual_role = visual_role; + m_visualRole = visualRole; } -void DAnnotation::setAutoSize(bool auto_sized) +void DAnnotation::setAutoSized(bool autoSized) { - _auto_sized = auto_sized; + m_isAutoSized = autoSized; } void DAnnotation::accept(DVisitor *visitor) @@ -104,4 +104,4 @@ void DAnnotation::accept(DConstVisitor *visitor) const visitor->visitDAnnotation(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dannotation.h b/src/libs/3rdparty/modeling/qmt/diagram/dannotation.h index 710479af0a..290c4e0760 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dannotation.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dannotation.h @@ -38,76 +38,47 @@ namespace qmt { -class QMT_EXPORT DAnnotation : - public DElement +class QMT_EXPORT DAnnotation : public DElement { public: - enum VisualRole { - ROLE_NORMAL, - ROLE_TITLE, - ROLE_SUBTITLE, - ROLE_EMPHASIZED, - ROLE_SOFTEN, - ROLE_FOOTNOTE + RoleNormal, + RoleTitle, + RoleSubtitle, + RoleEmphasized, + RoleSoften, + RoleFootnote }; -public: - DAnnotation(); - DAnnotation(const DAnnotation &); - ~DAnnotation(); -public: - DAnnotation &operator=(const DAnnotation &); -public: - - Uid getModelUid() const { return Uid::getInvalidUid(); } - - QString getText() const { return _text; } - + Uid modelUid() const { return Uid::invalidUid(); } + QString text() const { return m_text; } void setText(const QString &text); - - QPointF getPos() const { return _pos; } - + QPointF pos() const { return m_pos; } void setPos(const QPointF &pos); - - QRectF getRect() const { return _rect; } - + QRectF rect() const { return m_rect; } void setRect(const QRectF &rect); - - VisualRole getVisualRole() const { return _visual_role; } - - void setVisualRole(VisualRole visual_role); - - bool hasAutoSize() const { return _auto_sized; } - - void setAutoSize(bool auto_sized); - -public: + VisualRole visualRole() const { return m_visualRole; } + void setVisualRole(VisualRole visualRole); + bool isAutoSized() const { return m_isAutoSized; } + void setAutoSized(bool autoSized); virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - QString _text; - - QPointF _pos; - - QRectF _rect; - - VisualRole _visual_role; - - bool _auto_sized; - + QString m_text; + QPointF m_pos; + QRectF m_rect; + VisualRole m_visualRole; + bool m_isAutoSized; }; -} +} // namespace qmt #endif // QMT_DANNOTATION_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dassociation.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dassociation.cpp index 8be20d0aac..be55437d1b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dassociation.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dassociation.cpp @@ -33,12 +33,11 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DAssociationEnd::DAssociationEnd() - : _kind(MAssociationEnd::ASSOCIATION), - _navigable(false) + : m_kind(MAssociationEnd::Association), + m_isNavigable(false) { } @@ -48,32 +47,31 @@ DAssociationEnd::~DAssociationEnd() void DAssociationEnd::setName(const QString &name) { - _name = name; + m_name = name; } void DAssociationEnd::setCardinatlity(const QString &cardinality) { - _cardinality = cardinality; + m_cardinality = cardinality; } void DAssociationEnd::setNavigable(bool navigable) { - _navigable = navigable; + m_isNavigable = navigable; } void DAssociationEnd::setKind(MAssociationEnd::Kind kind) { - _kind = kind; + m_kind = kind; } bool operator==(const DAssociationEnd &lhs, const DAssociationEnd &rhs) { - if (&lhs == &rhs) { + if (&lhs == &rhs) return true; - } - return lhs.getName() == rhs.getName() - && lhs.getCardinality() == rhs.getCardinality() - && lhs.getKind() == rhs.getKind() + return lhs.name() == rhs.name() + && lhs.cardinality() == rhs.cardinality() + && lhs.kind() == rhs.kind() && lhs.isNavigable() == rhs.isNavigable(); } @@ -82,10 +80,8 @@ bool operator!=(const DAssociationEnd &lhs, const DAssociationEnd &rhs) return !operator==(lhs, rhs); } - - DAssociation::DAssociation() - : _association_class_uid(Uid::getInvalidUid()) + : m_associationClassUid(Uid::invalidUid()) { } @@ -93,19 +89,19 @@ DAssociation::~DAssociation() { } -void DAssociation::setA(const DAssociationEnd &end_a) +void DAssociation::setEndA(const DAssociationEnd &endA) { - _end_a = end_a; + m_endA = endA; } -void DAssociation::setB(const DAssociationEnd &end_b) +void DAssociation::setEndB(const DAssociationEnd &endB) { - _end_b = end_b; + m_endB = endB; } void DAssociation::setAssociationClassUid(const Uid &uid) { - _association_class_uid = uid; + m_associationClassUid = uid; } void DAssociation::accept(DVisitor *visitor) @@ -118,4 +114,4 @@ void DAssociation::accept(DConstVisitor *visitor) const visitor->visitDAssociation(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dassociation.h b/src/libs/3rdparty/modeling/qmt/diagram/dassociation.h index 196fe65f18..ff86904e56 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dassociation.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dassociation.h @@ -35,88 +35,56 @@ #include "qmt/model/massociation.h" - namespace qmt { class QMT_EXPORT DAssociationEnd { public: DAssociationEnd(); - ~DAssociationEnd(); -public: - - QString getName() const { return _name; } - + QString name() const { return m_name; } void setName(const QString &name); - - QString getCardinality() const { return _cardinality; } - + QString cardinality() const { return m_cardinality; } void setCardinatlity(const QString &cardinality); - - MAssociationEnd::Kind getKind() const { return _kind; } - + MAssociationEnd::Kind kind() const { return m_kind; } void setKind(MAssociationEnd::Kind kind); - - bool isNavigable() const { return _navigable; } - + bool isNavigable() const { return m_isNavigable; } void setNavigable(bool navigable); private: - - QString _name; - - QString _cardinality; - - MAssociationEnd::Kind _kind; - - bool _navigable; + QString m_name; + QString m_cardinality; + MAssociationEnd::Kind m_kind; + bool m_isNavigable; }; bool operator==(const DAssociationEnd &lhs, const DAssociationEnd &rhs); - bool operator!=(const DAssociationEnd &lhs, const DAssociationEnd &rhs); - -class QMT_EXPORT DAssociation : - public DRelation +class QMT_EXPORT DAssociation : public DRelation { public: DAssociation(); - ~DAssociation(); -public: - - DAssociationEnd getA() const { return _end_a; } - - void setA(const DAssociationEnd &end_a); - - DAssociationEnd getB() const { return _end_b; } - - void setB(const DAssociationEnd &end_b); - - Uid getAssoicationClassUid() const { return _association_class_uid; } - + DAssociationEnd endA() const { return m_endA; } + void setEndA(const DAssociationEnd &endA); + DAssociationEnd endB() const { return m_endB; } + void setEndB(const DAssociationEnd &endB); + Uid assoicationClassUid() const { return m_associationClassUid; } void setAssociationClassUid(const Uid &uid); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - DAssociationEnd _end_a; - - DAssociationEnd _end_b; - - Uid _association_class_uid; + DAssociationEnd m_endA; + DAssociationEnd m_endB; + Uid m_associationClassUid; }; -} +} // namespace qmt #endif // QMT_DASSOCIATION_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dboundary.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dboundary.cpp index bf6e81c6dc..6b4fac8a6a 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dboundary.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dboundary.cpp @@ -42,9 +42,9 @@ DBoundary::DBoundary() DBoundary::DBoundary(const DBoundary &rhs) : DElement(rhs), - _text(rhs._text), - _pos(rhs._pos), - _rect(rhs._rect) + m_text(rhs.m_text), + m_pos(rhs.m_pos), + m_rect(rhs.m_rect) { } @@ -56,26 +56,26 @@ DBoundary &DBoundary::operator=(const DBoundary &rhs) { if (this != &rhs) { DElement::operator=(rhs); - _text = rhs._text; - _pos = rhs._pos; - _rect = rhs._rect; + m_text = rhs.m_text; + m_pos = rhs.m_pos; + m_rect = rhs.m_rect; } return *this; } void DBoundary::setText(const QString &text) { - _text = text; + m_text = text; } void DBoundary::setPos(const QPointF &pos) { - _pos = pos; + m_pos = pos; } void DBoundary::setRect(const QRectF &rect) { - _rect = rect; + m_rect = rect; } void DBoundary::accept(DVisitor *visitor) @@ -88,4 +88,4 @@ void DBoundary::accept(DConstVisitor *visitor) const visitor->visitDBoundary(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dboundary.h b/src/libs/3rdparty/modeling/qmt/diagram/dboundary.h index 337771a430..700ff7d46c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dboundary.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dboundary.h @@ -36,55 +36,34 @@ #include <QPointF> #include <QRectF> - namespace qmt { -class QMT_EXPORT DBoundary : - public DElement +class QMT_EXPORT DBoundary : public DElement { public: DBoundary(); - DBoundary(const DBoundary &rhs); - ~DBoundary(); -public: - DBoundary &operator=(const DBoundary &rhs); -public: - - Uid getModelUid() const { return Uid::getInvalidUid(); } - - QString getText() const { return _text; } - + Uid modelUid() const { return Uid::invalidUid(); } + QString text() const { return m_text; } void setText(const QString &text); - - QPointF getPos() const { return _pos; } - + QPointF pos() const { return m_pos; } void setPos(const QPointF &pos); - - QRectF getRect() const { return _rect; } - + QRectF rect() const { return m_rect; } void setRect(const QRectF &rect); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - QString _text; - - QPointF _pos; - - QRectF _rect; - + QString m_text; + QPointF m_pos; + QRectF m_rect; }; -} +} // namespace qmt #endif // QMT_DBOUNDARY_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dclass.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dclass.cpp index a77e53aff4..c47cac8fe1 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dclass.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dclass.cpp @@ -33,43 +33,42 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DClass::DClass() - : _template_display(TEMPLATE_SMART), - _show_all_members(false) + : m_templateDisplay(TemplateSmart), + m_showAllMembers(false) { } -void DClass::setNamespace(const QString &name_space) +void DClass::setUmlNamespace(const QString ¨Namespace) { - _namespace = name_space; + m_umlNamespace = umlNamespace; } -void DClass::setTemplateParameters(const QList<QString> &template_parameters) +void DClass::setTemplateParameters(const QList<QString> &templateParameters) { - _template_parameters = template_parameters; + m_templateParameters = templateParameters; } void DClass::setMembers(const QList<MClassMember> &members) { - _members = members; + m_members = members; } -void DClass::setVisibleMembers(const QSet<Uid> &visible_members) +void DClass::setVisibleMembers(const QSet<Uid> &visibleMembers) { - _visible_members = visible_members; + m_visibleMembers = visibleMembers; } -void DClass::setTemplateDisplay(DClass::TemplateDisplay template_display) +void DClass::setTemplateDisplay(DClass::TemplateDisplay templateDisplay) { - _template_display = template_display; + m_templateDisplay = templateDisplay; } -void DClass::setShowAllMembers(bool show_all_members) +void DClass::setShowAllMembers(bool showAllMembers) { - _show_all_members = show_all_members; + m_showAllMembers = showAllMembers; } void DClass::accept(DVisitor *visitor) @@ -82,4 +81,4 @@ void DClass::accept(DConstVisitor *visitor) const visitor->visitDClass(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dclass.h b/src/libs/3rdparty/modeling/qmt/diagram/dclass.h index 8a303e2353..417978a9cf 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dclass.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dclass.h @@ -36,70 +36,44 @@ #include <QSet> - namespace qmt { -class QMT_EXPORT DClass : - public DObject +class QMT_EXPORT DClass : public DObject { public: - enum TemplateDisplay { - TEMPLATE_SMART, - TEMPLATE_BOX, - TEMPLATE_NAME + TemplateSmart, + TemplateBox, + TemplateName }; -public: DClass(); -public: - - QString getNamespace() const { return _namespace; } - - void setNamespace(const QString &name_space); - - QList<QString> getTemplateParameters() const { return _template_parameters; } - - void setTemplateParameters(const QList<QString> &template_parameters); - - QList<MClassMember> getMembers() const { return _members; } - + QString umlNamespace() const { return m_umlNamespace; } + void setUmlNamespace(const QString ¨Namespace); + QList<QString> templateParameters() const { return m_templateParameters; } + void setTemplateParameters(const QList<QString> &templateParameters); + QList<MClassMember> members() const { return m_members; } void setMembers(const QList<MClassMember> &members); - - QSet<Uid> getVisibleMembers() const { return _visible_members; } - - void setVisibleMembers(const QSet<Uid> &visible_members); - - TemplateDisplay getTemplateDisplay() const { return _template_display; } - - void setTemplateDisplay(TemplateDisplay template_display); - - bool getShowAllMembers() const { return _show_all_members; } - - void setShowAllMembers(bool show_all_members); - -public: + QSet<Uid> visibleMembers() const { return m_visibleMembers; } + void setVisibleMembers(const QSet<Uid> &visibleMembers); + TemplateDisplay templateDisplay() const { return m_templateDisplay; } + void setTemplateDisplay(TemplateDisplay templateDisplay); + bool showAllMembers() const { return m_showAllMembers; } + void setShowAllMembers(bool showAllMembers); virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - QString _namespace; - - QList<QString> _template_parameters; - - QList<MClassMember> _members; - - QSet<Uid> _visible_members; - - TemplateDisplay _template_display; - - bool _show_all_members; + QString m_umlNamespace; + QList<QString> m_templateParameters; + QList<MClassMember> m_members; + QSet<Uid> m_visibleMembers; + TemplateDisplay m_templateDisplay; + bool m_showAllMembers; }; -} +} // namespace qmt #endif // QMT_DCLASS_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.cpp index 4b5b92bad6..c782720ceb 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.cpp @@ -33,18 +33,17 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DComponent::DComponent() : DObject(), - _plain_shape(false) + m_isPlainShape(false) { } -void DComponent::setPlainShape(bool plane_shape) +void DComponent::setPlainShape(bool planeShape) { - _plain_shape = plane_shape; + m_isPlainShape = planeShape; } void DComponent::accept(DVisitor *visitor) @@ -57,4 +56,4 @@ void DComponent::accept(DConstVisitor *visitor) const visitor->visitDComponent(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.h b/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.h index f5871ca38d..14ad43680d 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dcomponent.h @@ -33,32 +33,23 @@ #include "dobject.h" - namespace qmt { -class QMT_EXPORT DComponent : - public DObject +class QMT_EXPORT DComponent : public DObject { public: DComponent(); -public: - - bool getPlainShape() const { return _plain_shape; } - - void setPlainShape(bool plane_shape); - -public: + bool isPlainShape() const { return m_isPlainShape; } + void setPlainShape(bool planeShape); virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - bool _plain_shape; + bool m_isPlainShape; }; -} +} // namespace qmt #endif // QMT_DCOMPONENT_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dconstvisitor.h b/src/libs/3rdparty/modeling/qmt/diagram/dconstvisitor.h index 686e6e84c5..2a1c396f62 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dconstvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dconstvisitor.h @@ -47,39 +47,26 @@ class DAssociation; class DAnnotation; class DBoundary; - class DConstVisitor { public: virtual ~DConstVisitor() { } virtual void visitDElement(const DElement *element) = 0; - virtual void visitDObject(const DObject *object) = 0; - virtual void visitDPackage(const DPackage *package) = 0; - virtual void visitDClass(const DClass *klass) = 0; - virtual void visitDComponent(const DComponent *component) = 0; - virtual void visitDDiagram(const DDiagram *diagram) = 0; - virtual void visitDItem(const DItem *item) = 0; - virtual void visitDRelation(const DRelation *relation) = 0; - virtual void visitDInheritance(const DInheritance *inheritance) = 0; - virtual void visitDDependency(const DDependency *dependency) = 0; - virtual void visitDAssociation(const DAssociation *association) = 0; - virtual void visitDAnnotation(const DAnnotation *annotation) = 0; - virtual void visitDBoundary(const DBoundary *boundary) = 0; }; -} +} // namespace qmt #endif // QMT_DCONSTVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ddependency.cpp b/src/libs/3rdparty/modeling/qmt/diagram/ddependency.cpp index 441b00c44d..016542cf00 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ddependency.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/ddependency.cpp @@ -33,11 +33,10 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DDependency::DDependency() - : _direction(MDependency::A_TO_B) + : m_direction(MDependency::AToB) { } @@ -45,29 +44,29 @@ DDependency::~DDependency() { } -Uid DDependency::getSource() const +Uid DDependency::source() const { - return _direction == MDependency::B_TO_A ? getEndB() : getEndA(); + return m_direction == MDependency::BToA ? endBUid() : endAUid(); } void DDependency::setSource(const Uid &source) { - _direction == MDependency::B_TO_A ? setEndB(source) : setEndA(source); + m_direction == MDependency::BToA ? setEndBUid(source) : setEndAUid(source); } -Uid DDependency::getTarget() const +Uid DDependency::target() const { - return _direction == MDependency::B_TO_A ? getEndA() : getEndB(); + return m_direction == MDependency::BToA ? endAUid() : endBUid(); } void DDependency::setTarget(const Uid &target) { - return _direction == MDependency::B_TO_A ? setEndA(target) : setEndB(target); + return m_direction == MDependency::BToA ? setEndAUid(target) : setEndBUid(target); } void DDependency::setDirection(MDependency::Direction direction) { - _direction = direction; + m_direction = direction; } void DDependency::accept(DVisitor *visitor) @@ -80,4 +79,4 @@ void DDependency::accept(DConstVisitor *visitor) const visitor->visitDDependency(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ddependency.h b/src/libs/3rdparty/modeling/qmt/diagram/ddependency.h index 84497a2d40..690817c4a4 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ddependency.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/ddependency.h @@ -35,46 +35,30 @@ #include "qmt/model/mdependency.h" - namespace qmt { class DObject; - -class QMT_EXPORT DDependency : - public DRelation +class QMT_EXPORT DDependency : public DRelation { public: DDependency(); - ~DDependency(); -public: - - Uid getSource() const; - + Uid source() const; void setSource(const Uid &source); - - Uid getTarget() const; - + Uid target() const; void setTarget(const Uid &target); - - MDependency::Direction getDirection() const { return _direction; } - + MDependency::Direction direction() const { return m_direction; } void setDirection(MDependency::Direction direction); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - MDependency::Direction _direction; - + MDependency::Direction m_direction; }; -} +} // namespace qmt #endif // QMT_DDEPENDENCY_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.cpp b/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.cpp index b4b720ca23..0c33680e38 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.cpp @@ -33,7 +33,6 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DDiagram::DDiagram() @@ -50,4 +49,4 @@ void DDiagram::accept(DConstVisitor *visitor) const visitor->visitDDiagram(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.h b/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.h index 6ac97eb8f9..a5df33f823 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/ddiagram.h @@ -35,20 +35,15 @@ namespace qmt { -class QMT_EXPORT DDiagram : - public DObject +class QMT_EXPORT DDiagram : public DObject { public: DDiagram(); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; - }; -} +} // namespace qmt #endif // QMT_DDIAGRAM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/delement.cpp b/src/libs/3rdparty/modeling/qmt/diagram/delement.cpp index be191966d3..63d036e6aa 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/delement.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/delement.cpp @@ -33,26 +33,24 @@ #include "dconstvisitor.h" #include "dvisitor.h" - namespace qmt { DElement::DElement() { } - DElement::~DElement() { } void DElement::setUid(const Uid &uid) { - _uid = uid; + m_uid = uid; } void DElement::renewUid() { - _uid.renew(); + m_uid.renew(); } void DElement::accept(DVisitor *visitor) @@ -65,4 +63,4 @@ void DElement::accept(DConstVisitor *visitor) const visitor->visitDElement(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/delement.h b/src/libs/3rdparty/modeling/qmt/diagram/delement.h index af7f5a17cc..01b2555d64 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/delement.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/delement.h @@ -35,40 +35,29 @@ #include <QString> - namespace qmt { class DVisitor; class DConstVisitor; - class QMT_EXPORT DElement { public: DElement(); - virtual ~DElement(); -public: - Uid getUid() const { return _uid; } - + Uid uid() const { return m_uid; } void setUid(const Uid &uid); - void renewUid(); - - virtual Uid getModelUid() const = 0; - -public: + virtual Uid modelUid() const = 0; virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - Uid _uid; + Uid m_uid; }; -} +} // namespace qmt #endif // QMT_DELEMENT_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.cpp index 0bd1a58979..b9916a1445 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.cpp @@ -34,7 +34,6 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DInheritance::DInheritance() @@ -42,24 +41,24 @@ DInheritance::DInheritance() { } -Uid DInheritance::getDerived() const +Uid DInheritance::derived() const { - return getEndA(); + return endAUid(); } void DInheritance::setDerived(const Uid &derived) { - setEndA(derived); + setEndAUid(derived); } -Uid DInheritance::getBase() const +Uid DInheritance::base() const { - return getEndB(); + return endBUid(); } void DInheritance::setBase(const Uid &base) { - setEndB(base); + setEndBUid(base); } void DInheritance::accept(DVisitor *visitor) @@ -72,4 +71,4 @@ void DInheritance::accept(DConstVisitor *visitor) const visitor->visitDInheritance(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.h b/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.h index 805097fd2b..37a7810a1d 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dinheritance.h @@ -33,36 +33,24 @@ #include "drelation.h" - namespace qmt { class DClass; - -class QMT_EXPORT DInheritance : - public DRelation +class QMT_EXPORT DInheritance : public DRelation { public: DInheritance(); -public: - - Uid getDerived() const; - + Uid derived() const; void setDerived(const Uid &derived); - - Uid getBase() const; - + Uid base() const; void setBase(const Uid &base); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; - }; -} +} // namespace qmt #endif // QMT_DINHERITANCE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ditem.cpp b/src/libs/3rdparty/modeling/qmt/diagram/ditem.cpp index 20c36c9472..81305566b6 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ditem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/ditem.cpp @@ -33,12 +33,11 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DItem::DItem() : DObject(), - _shape_editable(true) + m_isShapeEditable(true) { } @@ -48,17 +47,17 @@ DItem::~DItem() void DItem::setVariety(const QString &variety) { - _variety = variety; + m_variety = variety; } void DItem::setShape(const QString &shape) { - _shape = shape; + m_shape = shape; } -void DItem::setShapeEditable(bool shape_editable) +void DItem::setShapeEditable(bool shapeEditable) { - _shape_editable = shape_editable; + m_isShapeEditable = shapeEditable; } void DItem::accept(DVisitor *visitor) diff --git a/src/libs/3rdparty/modeling/qmt/diagram/ditem.h b/src/libs/3rdparty/modeling/qmt/diagram/ditem.h index e3a6e7bd09..faad6524e9 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/ditem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/ditem.h @@ -33,46 +33,28 @@ #include "dobject.h" - namespace qmt { -class QMT_EXPORT DItem : - public DObject +class QMT_EXPORT DItem : public DObject { public: - DItem(); - ~DItem(); -public: - - QString getVariety() const { return _variety; } - + QString variety() const { return m_variety; } void setVariety(const QString &variety); - - QString getShape() const { return _shape; } - + QString shape() const { return m_shape; } void setShape(const QString &shape); - - bool isShapeEditable() const { return _shape_editable; } - - void setShapeEditable(bool shape_editable); - -public: + bool isShapeEditable() const { return m_isShapeEditable; } + void setShapeEditable(bool shapeEditable); virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - QString _variety; - - QString _shape; - - bool _shape_editable; - + QString m_variety; + QString m_shape; + bool m_isShapeEditable; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dobject.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dobject.cpp index 5f594ebff6..caebdd56e3 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dobject.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dobject.cpp @@ -37,30 +37,30 @@ namespace qmt { DObject::DObject() : DElement(), - _model_uid(Uid::getInvalidUid()), - _depth(0), - _visual_primary_role(PRIMARY_ROLE_NORMAL), - _visual_secondary_role(SECONDARY_ROLE_NONE), - _stereotype_display(STEREOTYPE_SMART), - _auto_sized(true), - _visual_emphasized(false) + m_modelUid(Uid::invalidUid()), + m_depth(0), + m_visualPrimaryRole(PrimaryRoleNormal), + m_visualSecondaryRole(SecondaryRoleNone), + m_stereotypeDisplay(StereotypeSmart), + m_isAutoSized(true), + m_isVisualEmphasized(false) { } DObject::DObject(const DObject &rhs) : DElement(rhs), - _model_uid(rhs._model_uid), - _stereotypes(rhs._stereotypes), - _context(rhs._context), - _name(rhs._name), - _pos(rhs._pos), - _rect(rhs._rect), - _depth(rhs._depth), - _visual_primary_role(rhs._visual_primary_role), - _visual_secondary_role(rhs._visual_secondary_role), - _stereotype_display(rhs._stereotype_display), - _auto_sized(rhs._auto_sized), - _visual_emphasized(rhs._visual_emphasized) + m_modelUid(rhs.m_modelUid), + m_stereotypes(rhs.m_stereotypes), + m_context(rhs.m_context), + m_name(rhs.m_name), + m_pos(rhs.m_pos), + m_rect(rhs.m_rect), + m_depth(rhs.m_depth), + m_visualPrimaryRole(rhs.m_visualPrimaryRole), + m_visualSecondaryRole(rhs.m_visualSecondaryRole), + m_stereotypeDisplay(rhs.m_stereotypeDisplay), + m_isAutoSized(rhs.m_isAutoSized), + m_isVisualEmphasized(rhs.m_isVisualEmphasized) { } @@ -72,80 +72,80 @@ DObject &DObject::operator =(const DObject &rhs) { if (this != &rhs) { DElement::operator=(rhs); - _model_uid = rhs._model_uid; - _stereotypes = rhs._stereotypes; - _context = rhs._context; - _name = rhs._name; - _pos = rhs._pos; - _rect = rhs._rect; - _depth = rhs._depth; - _visual_primary_role = rhs._visual_primary_role; - _visual_secondary_role = rhs._visual_secondary_role; - _stereotype_display = rhs._stereotype_display; - _auto_sized = rhs._auto_sized; - _visual_emphasized = rhs._visual_emphasized; + m_modelUid = rhs.m_modelUid; + m_stereotypes = rhs.m_stereotypes; + m_context = rhs.m_context; + m_name = rhs.m_name; + m_pos = rhs.m_pos; + m_rect = rhs.m_rect; + m_depth = rhs.m_depth; + m_visualPrimaryRole = rhs.m_visualPrimaryRole; + m_visualSecondaryRole = rhs.m_visualSecondaryRole; + m_stereotypeDisplay = rhs.m_stereotypeDisplay; + m_isAutoSized = rhs.m_isAutoSized; + m_isVisualEmphasized = rhs.m_isVisualEmphasized; } return *this; } void DObject::setModelUid(const Uid &uid) { - _model_uid = uid; + m_modelUid = uid; } void DObject::setStereotypes(const QList<QString> &stereotypes) { - _stereotypes = stereotypes; + m_stereotypes = stereotypes; } void DObject::setContext(const QString &context) { - _context = context; + m_context = context; } void DObject::setName(const QString &name) { - _name = name; + m_name = name; } void DObject::setPos(const QPointF &pos) { - _pos = pos; + m_pos = pos; } void DObject::setRect(const QRectF &rect) { - _rect = rect; + m_rect = rect; } void DObject::setDepth(int depth) { - _depth = depth; + m_depth = depth; } -void DObject::setVisualPrimaryRole(DObject::VisualPrimaryRole visual_primary_role) +void DObject::setVisualPrimaryRole(DObject::VisualPrimaryRole visualPrimaryRole) { - _visual_primary_role = visual_primary_role; + m_visualPrimaryRole = visualPrimaryRole; } -void DObject::setVisualSecondaryRole(DObject::VisualSecondaryRole visual_secondary_role) +void DObject::setVisualSecondaryRole(DObject::VisualSecondaryRole visualSecondaryRole) { - _visual_secondary_role = visual_secondary_role; + m_visualSecondaryRole = visualSecondaryRole; } -void DObject::setStereotypeDisplay(DObject::StereotypeDisplay stereotype_display) +void DObject::setStereotypeDisplay(DObject::StereotypeDisplay stereotypeDisplay) { - _stereotype_display = stereotype_display; + m_stereotypeDisplay = stereotypeDisplay; } -void DObject::setAutoSize(bool auto_sized) +void DObject::setAutoSized(bool autoSized) { - _auto_sized = auto_sized; + m_isAutoSized = autoSized; } -void DObject::setVisualEmphasized(bool visual_emphasized) +void DObject::setVisualEmphasized(bool visualEmphasized) { - _visual_emphasized = visual_emphasized; + m_isVisualEmphasized = visualEmphasized; } void DObject::accept(DVisitor *visitor) @@ -158,4 +158,4 @@ void DObject::accept(DConstVisitor *visitor) const visitor->visitDObject(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dobject.h b/src/libs/3rdparty/modeling/qmt/diagram/dobject.h index f760024f81..9624ea7f1c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dobject.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dobject.h @@ -39,140 +39,91 @@ #include <QPointF> #include <QRectF> - namespace qmt { class MObject; - -class QMT_EXPORT DObject : - public DElement +class QMT_EXPORT DObject : public DElement { public: - enum VisualPrimaryRole { - PRIMARY_ROLE_NORMAL, - DEPRECATED_PRIMARY_ROLE_LIGHTER, - DEPRECATED_PRIMARY_ROLE_DARKER, - DEPRECATED_PRIMARY_ROLE_SOFTEN, - DEPRECATED_PRIMARY_ROLE_OUTLINE, - PRIMARY_ROLE_CUSTOM1, - PRIMARY_ROLE_CUSTOM2, - PRIMARY_ROLE_CUSTOM3, - PRIMARY_ROLE_CUSTOM4, - PRIMARY_ROLE_CUSTOM5 + PrimaryRoleNormal, + DeprecatedPrimaryRoleLighter, + DeprecatedPrimaryRoleDarker, + DeprecatedPrimaryRoleSoften, + DeprecatedPrimaryRoleOutline, + PrimaryRoleCustom1, + PrimaryRoleCustom2, + PrimaryRoleCustom3, + PrimaryRoleCustom4, + PrimaryRoleCustom5 }; enum VisualSecondaryRole { - SECONDARY_ROLE_NONE, - SECONDARY_ROLE_LIGHTER, - SECONDARY_ROLE_DARKER, - SECONDARY_ROLE_SOFTEN, - SECONDARY_ROLE_OUTLINE + SecondaryRoleNone, + SecondaryRoleLighter, + SecondaryRoleDarker, + SecondaryRoleSoften, + SecondaryRoleOutline }; enum StereotypeDisplay { - STEREOTYPE_NONE, - STEREOTYPE_LABEL, - STEREOTYPE_DECORATION, - STEREOTYPE_ICON, - STEREOTYPE_SMART + StereotypeNone, + StereotypeLabel, + StereotypeDecoration, + StereotypeIcon, + StereotypeSmart }; -public: DObject(); - DObject(const DObject &); - ~DObject(); -public: - DObject &operator=(const DObject &rhs); -public: - - Uid getModelUid() const { return _model_uid; } - + Uid modelUid() const { return m_modelUid; } void setModelUid(const Uid &uid); - - QList<QString> getStereotypes() const { return _stereotypes; } - + QList<QString> stereotypes() const { return m_stereotypes; } void setStereotypes(const QList<QString> &stereotypes); - - QString getContext() const { return _context; } - + QString context() const { return m_context; } void setContext(const QString &context); - - QString getName() const { return _name; } - + QString name() const { return m_name; } void setName(const QString &name); - - QPointF getPos() const { return _pos; } - + QPointF pos() const { return m_pos; } void setPos(const QPointF &pos); - - QRectF getRect() const { return _rect; } - + QRectF rect() const { return m_rect; } void setRect(const QRectF &rect); - - int getDepth() const { return _depth; } - + int depth() const { return m_depth; } void setDepth(int depth); - - VisualPrimaryRole getVisualPrimaryRole() const { return _visual_primary_role; } - - void setVisualPrimaryRole(VisualPrimaryRole visual_primary_role); - - VisualSecondaryRole getVisualSecondaryRole() const { return _visual_secondary_role; } - - void setVisualSecondaryRole(VisualSecondaryRole visual_secondary_role); - - StereotypeDisplay getStereotypeDisplay() const { return _stereotype_display; } - - void setStereotypeDisplay(StereotypeDisplay stereotype_display); - - bool hasAutoSize() const { return _auto_sized; } - - void setAutoSize(bool auto_sized); - - bool isVisualEmphasized() const { return _visual_emphasized; } - - void setVisualEmphasized(bool visual_emphasized); - -public: + VisualPrimaryRole visualPrimaryRole() const { return m_visualPrimaryRole; } + void setVisualPrimaryRole(VisualPrimaryRole visualPrimaryRole); + VisualSecondaryRole visualSecondaryRole() const { return m_visualSecondaryRole; } + void setVisualSecondaryRole(VisualSecondaryRole visualSecondaryRole); + StereotypeDisplay stereotypeDisplay() const { return m_stereotypeDisplay; } + void setStereotypeDisplay(StereotypeDisplay stereotypeDisplay); + bool isAutoSized() const { return m_isAutoSized; } + void setAutoSized(bool autoSized); + bool isVisualEmphasized() const { return m_isVisualEmphasized; } + void setVisualEmphasized(bool visualEmphasized); virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; private: - - Uid _model_uid; - - QList<QString> _stereotypes; - - QString _context; - - QString _name; - - QPointF _pos; - - QRectF _rect; - - int _depth; - - VisualPrimaryRole _visual_primary_role; - - VisualSecondaryRole _visual_secondary_role; - - StereotypeDisplay _stereotype_display; - - bool _auto_sized; - - bool _visual_emphasized; + Uid m_modelUid; + QList<QString> m_stereotypes; + QString m_context; + QString m_name; + QPointF m_pos; + QRectF m_rect; + int m_depth; + VisualPrimaryRole m_visualPrimaryRole; + VisualSecondaryRole m_visualSecondaryRole; + StereotypeDisplay m_stereotypeDisplay; + bool m_isAutoSized; + bool m_isVisualEmphasized; }; -} +} // namespace qmt #endif // QMT_DOBJECT_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dpackage.cpp b/src/libs/3rdparty/modeling/qmt/diagram/dpackage.cpp index 64363d434b..88a4d83d9b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dpackage.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/dpackage.cpp @@ -33,7 +33,6 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DPackage::DPackage() @@ -50,4 +49,4 @@ void DPackage::accept(DConstVisitor *visitor) const visitor->visitDPackage(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dpackage.h b/src/libs/3rdparty/modeling/qmt/diagram/dpackage.h index aa6f170990..02bc0bd203 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dpackage.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dpackage.h @@ -35,20 +35,15 @@ namespace qmt { -class QMT_EXPORT DPackage : - public DObject +class QMT_EXPORT DPackage : public DObject { public: DPackage(); -public: - virtual void accept(DVisitor *visitor); - virtual void accept(DConstVisitor *visitor) const; - }; -} +} // namespace qmt #endif // QMT_DPACKAGE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/drelation.cpp b/src/libs/3rdparty/modeling/qmt/diagram/drelation.cpp index 346af166e3..664abcb4b8 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/drelation.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram/drelation.cpp @@ -33,30 +33,28 @@ #include "dvisitor.h" #include "dconstvisitor.h" - namespace qmt { DRelation::IntermediatePoint::IntermediatePoint(const QPointF &pos) - : _pos(pos) + : m_pos(pos) { } void DRelation::IntermediatePoint::setPos(const QPointF &pos) { - _pos = pos; + m_pos = pos; } bool operator==(const DRelation::IntermediatePoint &lhs, const DRelation::IntermediatePoint &rhs) { - return lhs.getPos() == rhs.getPos(); + return lhs.pos() == rhs.pos(); } - DRelation::DRelation() : DElement(), - _model_uid(Uid::getInvalidUid()), - _end_a_uid(Uid::getInvalidUid()), - _end_b_uid(Uid::getInvalidUid()) + m_modelUid(Uid::invalidUid()), + m_endAUid(Uid::invalidUid()), + m_endBUid(Uid::invalidUid()) { } @@ -66,32 +64,32 @@ DRelation::~DRelation() void DRelation::setModelUid(const Uid &uid) { - _model_uid = uid; + m_modelUid = uid; } void DRelation::setStereotypes(const QList<QString> &stereotypes) { - _stereotypes = stereotypes; + m_stereotypes = stereotypes; } -void DRelation::setEndA(const Uid &uid) +void DRelation::setEndAUid(const Uid &uid) { - _end_a_uid = uid; + m_endAUid = uid; } -void DRelation::setEndB(const Uid &uid) +void DRelation::setEndBUid(const Uid &uid) { - _end_b_uid = uid; + m_endBUid = uid; } void DRelation::setName(const QString &name) { - _name = name; + m_name = name; } -void DRelation::setIntermediatePoints(const QList<DRelation::IntermediatePoint> &intermediate_points) +void DRelation::setIntermediatePoints(const QList<DRelation::IntermediatePoint> &intermediatePoints) { - _intermediate_points = intermediate_points; + m_intermediatePoints = intermediatePoints; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram/drelation.h b/src/libs/3rdparty/modeling/qmt/diagram/drelation.h index ebc9953dea..0928861a2e 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/drelation.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/drelation.h @@ -36,84 +36,57 @@ #include <QList> #include <QPointF> - namespace qmt { - class DObject; - -class QMT_EXPORT DRelation : - public DElement +class QMT_EXPORT DRelation : public DElement { - public: - - class IntermediatePoint { + class IntermediatePoint + { public: - explicit IntermediatePoint(const QPointF &pos = QPointF()); - QPointF getPos() const { return _pos; } - + QPointF pos() const { return m_pos; } void setPos(const QPointF &pos); private: - QPointF _pos; + QPointF m_pos; }; -public: DRelation(); - ~DRelation(); -public: - - Uid getModelUid() const { return _model_uid; } - + Uid modelUid() const { return m_modelUid; } void setModelUid(const Uid &uid); - - QList<QString> getStereotypes() const { return _stereotypes; } - + QList<QString> stereotypes() const { return m_stereotypes; } void setStereotypes(const QList<QString> &stereotypes); - - Uid getEndA() const { return _end_a_uid; } - - void setEndA(const Uid &uid); - - Uid getEndB() const { return _end_b_uid; } - - void setEndB(const Uid &uid); - - QString getName() const { return _name; } - + Uid endAUid() const { return m_endAUid; } + void setEndAUid(const Uid &uid); + Uid endBUid() const { return m_endBUid; } + void setEndBUid(const Uid &uid); + QString name() const { return m_name; } void setName(const QString &name); - - QList<IntermediatePoint> getIntermediatePoints() const { return _intermediate_points; } - - void setIntermediatePoints(const QList<IntermediatePoint> &intermediate_points); + QList<IntermediatePoint> intermediatePoints() const { return m_intermediatePoints; } + void setIntermediatePoints(const QList<IntermediatePoint> &intermediatePoints); private: - - Uid _model_uid; - - QList<QString> _stereotypes; - - Uid _end_a_uid; - - Uid _end_b_uid; - - QString _name; - - QList<IntermediatePoint> _intermediate_points; - + Uid m_modelUid; + QList<QString> m_stereotypes; + Uid m_endAUid; + Uid m_endBUid; + QString m_name; + QList<IntermediatePoint> m_intermediatePoints; }; bool operator==(const DRelation::IntermediatePoint &lhs, const DRelation::IntermediatePoint &rhs); - -inline bool operator!=(const DRelation::IntermediatePoint &lhs, const DRelation::IntermediatePoint &rhs) { return !(lhs == rhs); } - +inline bool operator!=(const DRelation::IntermediatePoint &lhs, + const DRelation::IntermediatePoint &rhs) +{ + return !(lhs == rhs); } +} // namespace qmt #endif // QMT_DRELATION_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram/dvisitor.h b/src/libs/3rdparty/modeling/qmt/diagram/dvisitor.h index d83b37deb9..8e90f1546b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram/dvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram/dvisitor.h @@ -53,32 +53,20 @@ public: virtual ~DVisitor() { } virtual void visitDElement(DElement *element) = 0; - virtual void visitDObject(DObject *object) = 0; - virtual void visitDPackage(DPackage *package) = 0; - virtual void visitDClass(DClass *klass) = 0; - virtual void visitDComponent(DComponent *component) = 0; - virtual void visitDDiagram(DDiagram *diagram) = 0; - virtual void visitDItem(DItem *item) = 0; - virtual void visitDRelation(DRelation *relation) = 0; - virtual void visitDInheritance(DInheritance *inheritance) = 0; - virtual void visitDDependency(DDependency *dependency) = 0; - virtual void visitDAssociation(DAssociation *association) = 0; - virtual void visitDAnnotation(DAnnotation *annotation) = 0; - virtual void visitDBoundary(DBoundary *boundary) = 0; }; -} +} // namespace qmt #endif // QMT_DVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.cpp index aa3d8ac3ee..f619073565 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.cpp @@ -45,216 +45,193 @@ #include "qmt/diagram/dboundary.h" #include "qmt/infrastructure/qmtassert.h" - namespace qmt { - DCloneVisitor::DCloneVisitor() - : _cloned(0) + : m_cloned(0) { } void DCloneVisitor::visitDElement(const DElement *element) { Q_UNUSED(element); - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); } void DCloneVisitor::visitDObject(const DObject *object) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitDElement(object); } void DCloneVisitor::visitDPackage(const DPackage *package) { - if (!_cloned) { - _cloned = new DPackage(*package); - } + if (!m_cloned) + m_cloned = new DPackage(*package); visitDObject(package); } void DCloneVisitor::visitDClass(const DClass *klass) { - if (!_cloned) { - _cloned = new DClass(*klass); - } + if (!m_cloned) + m_cloned = new DClass(*klass); visitDObject(klass); } void DCloneVisitor::visitDComponent(const DComponent *component) { - if (!_cloned) { - _cloned = new DComponent(*component); - } + if (!m_cloned) + m_cloned = new DComponent(*component); visitDObject(component); } void DCloneVisitor::visitDDiagram(const DDiagram *diagram) { - if (!_cloned) { - _cloned = new DDiagram(*diagram); - } + if (!m_cloned) + m_cloned = new DDiagram(*diagram); visitDObject(diagram); } void DCloneVisitor::visitDItem(const DItem *item) { - if (!_cloned) { - _cloned = new DItem(*item); - } + if (!m_cloned) + m_cloned = new DItem(*item); visitDObject(item); } void DCloneVisitor::visitDRelation(const DRelation *relation) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitDElement(relation); } void DCloneVisitor::visitDInheritance(const DInheritance *inheritance) { - if (!_cloned) { - _cloned = new DInheritance(*inheritance); - } + if (!m_cloned) + m_cloned = new DInheritance(*inheritance); visitDRelation(inheritance); } void DCloneVisitor::visitDDependency(const DDependency *dependency) { - if (!_cloned) { - _cloned = new DDependency(*dependency); - } + if (!m_cloned) + m_cloned = new DDependency(*dependency); visitDRelation(dependency); } void DCloneVisitor::visitDAssociation(const DAssociation *association) { - if (!_cloned) { - _cloned = new DAssociation(*association); - } + if (!m_cloned) + m_cloned = new DAssociation(*association); visitDRelation(association); } void DCloneVisitor::visitDAnnotation(const DAnnotation *annotation) { - if (!_cloned) { - _cloned = new DAnnotation(*annotation); - } + if (!m_cloned) + m_cloned = new DAnnotation(*annotation); visitDElement(annotation); } void DCloneVisitor::visitDBoundary(const DBoundary *boundary) { - if (!_cloned) { - _cloned = new DBoundary(*boundary); - } + if (!m_cloned) + m_cloned = new DBoundary(*boundary); visitDElement(boundary); } - DCloneDeepVisitor::DCloneDeepVisitor() - : _cloned(0) + : m_cloned(0) { } void DCloneDeepVisitor::visitDElement(const DElement *element) { Q_UNUSED(element); - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); } void DCloneDeepVisitor::visitDObject(const DObject *object) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitDElement(object); } void DCloneDeepVisitor::visitDPackage(const DPackage *package) { - if (!_cloned) { - _cloned = new DPackage(*package); - } + if (!m_cloned) + m_cloned = new DPackage(*package); visitDObject(package); } void DCloneDeepVisitor::visitDClass(const DClass *klass) { - if (!_cloned) { - _cloned = new DClass(*klass); - } + if (!m_cloned) + m_cloned = new DClass(*klass); visitDObject(klass); } void DCloneDeepVisitor::visitDComponent(const DComponent *component) { - if (!_cloned) { - _cloned = new DComponent(*component); - } + if (!m_cloned) + m_cloned = new DComponent(*component); visitDObject(component); } void DCloneDeepVisitor::visitDDiagram(const DDiagram *diagram) { - if (!_cloned) { - _cloned = new DDiagram(*diagram); - } + if (!m_cloned) + m_cloned = new DDiagram(*diagram); visitDObject(diagram); } void DCloneDeepVisitor::visitDItem(const DItem *item) { - if (!_cloned) { - _cloned = new DItem(*item); - } + if (!m_cloned) + m_cloned = new DItem(*item); visitDObject(item); } void DCloneDeepVisitor::visitDRelation(const DRelation *relation) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitDElement(relation); } void DCloneDeepVisitor::visitDInheritance(const DInheritance *inheritance) { - if (!_cloned) { - _cloned = new DInheritance(*inheritance); - } + if (!m_cloned) + m_cloned = new DInheritance(*inheritance); visitDRelation(inheritance); } void DCloneDeepVisitor::visitDDependency(const DDependency *dependency) { - if (!_cloned) { - _cloned = new DDependency(*dependency); - } + if (!m_cloned) + m_cloned = new DDependency(*dependency); visitDRelation(dependency); } void DCloneDeepVisitor::visitDAssociation(const DAssociation *association) { - if (!_cloned) { - _cloned = new DAssociation(*association); - } + if (!m_cloned) + m_cloned = new DAssociation(*association); visitDRelation(association); } void DCloneDeepVisitor::visitDAnnotation(const DAnnotation *annotation) { - if (!_cloned) { - _cloned = new DAnnotation(*annotation); - } + if (!m_cloned) + m_cloned = new DAnnotation(*annotation); visitDElement(annotation); } void DCloneDeepVisitor::visitDBoundary(const DBoundary *boundary) { - if (!_cloned) { - _cloned = new DBoundary(*boundary); - } + if (!m_cloned) + m_cloned = new DBoundary(*boundary); visitDElement(boundary); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.h index ba8c3ee15f..d54e4f9fdf 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dclonevisitor.h @@ -34,91 +34,58 @@ #include "qmt/diagram/dconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" -#include <qglobal.h> - namespace qmt { -class QMT_EXPORT DCloneVisitor : - public DConstVisitor +class QMT_EXPORT DCloneVisitor : public DConstVisitor { public: DCloneVisitor(); -public: - DElement *getCloned() const { return _cloned; } + DElement *cloned() const { return m_cloned; } void visitDElement(const DElement *element); - void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); - void visitDRelation(const DRelation *relation); - void visitDInheritance(const DInheritance *inheritance); - void visitDDependency(const DDependency *dependency); - void visitDAssociation(const DAssociation *association); - void visitDAnnotation(const DAnnotation *annotation); - void visitDBoundary(const DBoundary *boundary); private: - - DElement *_cloned; + DElement *m_cloned; }; - -class QMT_EXPORT DCloneDeepVisitor : - public DConstVisitor +class QMT_EXPORT DCloneDeepVisitor : public DConstVisitor { public: DCloneDeepVisitor(); -public: - DElement *getCloned() const { return _cloned; } + DElement *cloned() const { return m_cloned; } void visitDElement(const DElement *element); - void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); - void visitDRelation(const DRelation *relation); - void visitDInheritance(const DInheritance *inheritance); - void visitDDependency(const DDependency *dependency); - void visitDAssociation(const DAssociation *association); - void visitDAnnotation(const DAnnotation *annotation); - void visitDBoundary(const DBoundary *boundary); private: - - DElement *_cloned; + DElement *m_cloned; }; -} +} // namespace qmt #endif // QMT_DCLONEVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dcontainer.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dcontainer.h index 6f9d6c9d45..a9e0ed6b98 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dcontainer.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dcontainer.h @@ -34,14 +34,12 @@ #include "qmt/controller/container.h" #include "qmt/diagram/delement.h" - namespace qmt { -class QMT_EXPORT DContainer : - public Container<DElement> +class QMT_EXPORT DContainer : public Container<DElement> { }; -} +} // namespace qmt #endif // QMT_DCONTAINER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.cpp index 681f9a6150..ec3f6ebc49 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.cpp @@ -55,104 +55,103 @@ #include "qmt/model/mdependency.h" #include "qmt/model/minheritance.h" - namespace qmt { DFactory::DFactory() - : _product(0) + : m_product(0) { } void DFactory::visitMElement(const MElement *element) { Q_UNUSED(element); - QMT_CHECK(_product); + QMT_CHECK(m_product); } void DFactory::visitMObject(const MObject *object) { - DObject *diagram_object = dynamic_cast<DObject *>(_product); - QMT_CHECK(diagram_object); - diagram_object->setModelUid(object->getUid()); + DObject *diagramObject = dynamic_cast<DObject *>(m_product); + QMT_CHECK(diagramObject); + diagramObject->setModelUid(object->uid()); visitMElement(object); } void DFactory::visitMPackage(const MPackage *package) { - QMT_CHECK(!_product); - DPackage *diagram_package = new DPackage(); - _product = diagram_package; + QMT_CHECK(!m_product); + DPackage *diagramPackage = new DPackage(); + m_product = diagramPackage; visitMObject(package); } void DFactory::visitMClass(const MClass *klass) { - QMT_CHECK(!_product); - DClass *diagram_klass = new DClass(); - _product = diagram_klass; + QMT_CHECK(!m_product); + DClass *diagramKlass = new DClass(); + m_product = diagramKlass; visitMObject(klass); } void DFactory::visitMComponent(const MComponent *component) { - QMT_CHECK(!_product); - DComponent *diagram_component = new DComponent(); - _product = diagram_component; + QMT_CHECK(!m_product); + DComponent *diagramComponent = new DComponent(); + m_product = diagramComponent; visitMObject(component); } void DFactory::visitMDiagram(const MDiagram *diagram) { - QMT_CHECK(!_product); - DDiagram *diagram_diagram = new DDiagram(); - _product = diagram_diagram; + QMT_CHECK(!m_product); + DDiagram *diagramDiagram = new DDiagram(); + m_product = diagramDiagram; visitMObject(diagram); } void DFactory::visitMCanvasDiagram(const MCanvasDiagram *diagram) { - QMT_CHECK(!_product); + QMT_CHECK(!m_product); visitMDiagram(diagram); } void DFactory::visitMItem(const MItem *item) { - QMT_CHECK(!_product); - DItem *diagram_item = new DItem(); - _product = diagram_item; + QMT_CHECK(!m_product); + DItem *diagramItem = new DItem(); + m_product = diagramItem; visitMObject(item); } void DFactory::visitMRelation(const MRelation *relation) { - DRelation *diagram_relation = dynamic_cast<DRelation *>(_product); - QMT_CHECK(diagram_relation); - diagram_relation->setModelUid(relation->getUid()); + DRelation *diagramRelation = dynamic_cast<DRelation *>(m_product); + QMT_CHECK(diagramRelation); + diagramRelation->setModelUid(relation->uid()); visitMElement(relation); } void DFactory::visitMDependency(const MDependency *dependency) { - QMT_CHECK(!_product); - DDependency *diagram_dependency = new DDependency(); - _product = diagram_dependency; + QMT_CHECK(!m_product); + DDependency *diagramDependency = new DDependency(); + m_product = diagramDependency; visitMRelation(dependency); } void DFactory::visitMInheritance(const MInheritance *inheritance) { - QMT_CHECK(!_product); - DInheritance *diagram_inheritance = new DInheritance(); - _product = diagram_inheritance; + QMT_CHECK(!m_product); + DInheritance *diagramInheritance = new DInheritance(); + m_product = diagramInheritance; visitMRelation(inheritance); } void DFactory::visitMAssociation(const MAssociation *association) { - QMT_CHECK(!_product); - DAssociation *diagram_association = new DAssociation(); - _product = diagram_association; + QMT_CHECK(!m_product); + DAssociation *diagramAssociation = new DAssociation(); + m_product = diagramAssociation; visitMRelation(association); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.h index ddf2b12fe9..bddeccd1e5 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dfactory.h @@ -34,53 +34,34 @@ #include "qmt/model/mconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" -#include <qglobal.h> - namespace qmt { class DElement; -class QMT_EXPORT DFactory : - public MConstVisitor +class QMT_EXPORT DFactory : public MConstVisitor { public: DFactory(); -public: - - DElement *getProduct() const { return _product; } - -public: + DElement *product() const { return m_product; } void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); private: - - DElement *_product; + DElement *m_product; }; -} +} // namespace qmt #endif // QMT_DFACTORY_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.cpp index a53703f206..d40c54e480 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.cpp @@ -50,7 +50,7 @@ namespace qmt { // TODO may flat assignment visitor use operator=() ? DFlatAssignmentVisitor::DFlatAssignmentVisitor(DElement *target) - : _target(target) + : m_target(target) { QMT_CHECK(target); } @@ -63,18 +63,18 @@ void DFlatAssignmentVisitor::visitDElement(const DElement *element) void DFlatAssignmentVisitor::visitDObject(const DObject *object) { visitDElement(object); - DObject *target = dynamic_cast<DObject *>(_target); + DObject *target = dynamic_cast<DObject *>(m_target); QMT_CHECK(target); - target->setStereotypes(object->getStereotypes()); - target->setName(object->getName()); - target->setPos(object->getPos()); - target->setRect(object->getRect()); - target->setAutoSize(object->hasAutoSize()); - target->setDepth(object->getDepth()); - target->setVisualPrimaryRole(object->getVisualPrimaryRole()); - target->setVisualSecondaryRole(object->getVisualSecondaryRole()); + target->setStereotypes(object->stereotypes()); + target->setName(object->name()); + target->setPos(object->pos()); + target->setRect(object->rect()); + target->setAutoSized(object->isAutoSized()); + target->setDepth(object->depth()); + target->setVisualPrimaryRole(object->visualPrimaryRole()); + target->setVisualSecondaryRole(object->visualSecondaryRole()); target->setVisualEmphasized(object->isVisualEmphasized()); - target->setStereotypeDisplay(object->getStereotypeDisplay()); + target->setStereotypeDisplay(object->stereotypeDisplay()); } void DFlatAssignmentVisitor::visitDPackage(const DPackage *package) @@ -85,22 +85,22 @@ void DFlatAssignmentVisitor::visitDPackage(const DPackage *package) void DFlatAssignmentVisitor::visitDClass(const DClass *klass) { visitDObject(klass); - DClass *target = dynamic_cast<DClass *>(_target); + DClass *target = dynamic_cast<DClass *>(m_target); QMT_CHECK(target); - target->setNamespace(klass->getNamespace()); - target->setTemplateParameters(klass->getTemplateParameters()); - target->setTemplateDisplay(klass->getTemplateDisplay()); - target->setMembers(klass->getMembers()); - target->setShowAllMembers(klass->getShowAllMembers()); - target->setVisibleMembers(klass->getVisibleMembers()); + target->setUmlNamespace(klass->umlNamespace()); + target->setTemplateParameters(klass->templateParameters()); + target->setTemplateDisplay(klass->templateDisplay()); + target->setMembers(klass->members()); + target->setShowAllMembers(klass->showAllMembers()); + target->setVisibleMembers(klass->visibleMembers()); } void DFlatAssignmentVisitor::visitDComponent(const DComponent *component) { visitDObject(component); - DComponent *target = dynamic_cast<DComponent *>(_target); + DComponent *target = dynamic_cast<DComponent *>(m_target); QMT_CHECK(target); - target->setPlainShape(component->getPlainShape()); + target->setPlainShape(component->isPlainShape()); } void DFlatAssignmentVisitor::visitDDiagram(const DDiagram *diagram) @@ -111,20 +111,20 @@ void DFlatAssignmentVisitor::visitDDiagram(const DDiagram *diagram) void DFlatAssignmentVisitor::visitDItem(const DItem *item) { visitDObject(item); - DItem *target = dynamic_cast<DItem *>(_target); + DItem *target = dynamic_cast<DItem *>(m_target); QMT_CHECK(target); - target->setVariety(target->getVariety()); + target->setVariety(target->variety()); target->setShapeEditable(target->isShapeEditable()); - target->setShape(target->getShape()); + target->setShape(target->shape()); } void DFlatAssignmentVisitor::visitDRelation(const DRelation *relation) { visitDElement(relation); - DRelation *target = dynamic_cast<DRelation *>(_target); + DRelation *target = dynamic_cast<DRelation *>(m_target); QMT_CHECK(target); - target->setStereotypes(relation->getStereotypes()); - target->setIntermediatePoints(relation->getIntermediatePoints()); + target->setStereotypes(relation->stereotypes()); + target->setIntermediatePoints(relation->intermediatePoints()); } void DFlatAssignmentVisitor::visitDInheritance(const DInheritance *inheritance) @@ -135,38 +135,38 @@ void DFlatAssignmentVisitor::visitDInheritance(const DInheritance *inheritance) void DFlatAssignmentVisitor::visitDDependency(const DDependency *dependency) { visitDRelation(dependency); - DDependency *target = dynamic_cast<DDependency *>(_target); + DDependency *target = dynamic_cast<DDependency *>(m_target); QMT_CHECK(target); - target->setDirection(dependency->getDirection()); + target->setDirection(dependency->direction()); } void DFlatAssignmentVisitor::visitDAssociation(const DAssociation *association) { visitDRelation(association); - DAssociation *target = dynamic_cast<DAssociation *>(_target); + DAssociation *target = dynamic_cast<DAssociation *>(m_target); QMT_CHECK(target); - target->setA(association->getA()); - target->setB(association->getB()); + target->setEndA(association->endA()); + target->setEndB(association->endB()); } void DFlatAssignmentVisitor::visitDAnnotation(const DAnnotation *annotation) { visitDElement(annotation); - DAnnotation *target = dynamic_cast<DAnnotation *>(_target); - target->setText(annotation->getText()); - target->setPos(annotation->getPos()); - target->setRect(annotation->getRect()); - target->setAutoSize(annotation->hasAutoSize()); - target->setVisualRole(annotation->getVisualRole()); + DAnnotation *target = dynamic_cast<DAnnotation *>(m_target); + target->setText(annotation->text()); + target->setPos(annotation->pos()); + target->setRect(annotation->rect()); + target->setAutoSized(annotation->isAutoSized()); + target->setVisualRole(annotation->visualRole()); } void DFlatAssignmentVisitor::visitDBoundary(const DBoundary *boundary) { visitDElement(boundary); - DBoundary *target = dynamic_cast<DBoundary *>(_target); - target->setText(boundary->getText()); - target->setPos(boundary->getPos()); - target->setRect(boundary->getRect()); + DBoundary *target = dynamic_cast<DBoundary *>(m_target); + target->setText(boundary->text()); + target->setPos(boundary->pos()); + target->setRect(boundary->rect()); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.h index e3f00df3eb..66820b9228 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dflatassignmentvisitor.h @@ -34,49 +34,31 @@ #include "qmt/diagram/dconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { -class QMT_EXPORT DFlatAssignmentVisitor : - public DConstVisitor +class QMT_EXPORT DFlatAssignmentVisitor : public DConstVisitor { public: DFlatAssignmentVisitor(DElement *target); -public: - void visitDElement(const DElement *element); - void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); - void visitDRelation(const DRelation *relation); - void visitDInheritance(const DInheritance *inheritance); - void visitDDependency(const DDependency *dependency); - void visitDAssociation(const DAssociation *association); - void visitDAnnotation(const DAnnotation *annotation); - void visitDBoundary(const DBoundary *boundary); private: - - DElement *_target; - + DElement *m_target; }; -} +} // namespace qmt #endif // QMT_DFLATASSIGNMENTVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.cpp index a199a10900..addf82bbeb 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.cpp @@ -51,96 +51,89 @@ #include "qmt/model/mdiagram.h" #include "qmt/model/mrelation.h" - namespace qmt { -struct DiagramController::Clone { +class DiagramController::Clone +{ +public: Clone(); - Uid _element_key; - int _index_of_element; - DElement *_cloned_element; + Uid m_elementKey; + int m_indexOfElement; + DElement *m_clonedElement; }; DiagramController::Clone::Clone() - : _index_of_element(-1), - _cloned_element(0) + : m_indexOfElement(-1), + m_clonedElement(0) { } -class DiagramController::DiagramUndoCommand : - public UndoCommand +class DiagramController::DiagramUndoCommand : public UndoCommand { public: - - DiagramUndoCommand(DiagramController *diagram_controller, const Uid &diagram_key, const QString &text) + DiagramUndoCommand(DiagramController *diagramController, const Uid &diagramKey, const QString &text) : UndoCommand(text), - _diagram_controller(diagram_controller), - _diagram_key(diagram_key) + m_diagramController(diagramController), + m_diagramKey(diagramKey) { } protected: - - DiagramController *getDiagramController() const + DiagramController *diagramController() const { - return _diagram_controller; + return m_diagramController; } - Uid getDiagramKey() const { return _diagram_key; } + Uid diagramKey() const { return m_diagramKey; } - MDiagram *getDiagram() const + MDiagram *diagram() const { - MDiagram *diagram = _diagram_controller->findDiagram(_diagram_key); + MDiagram *diagram = m_diagramController->findDiagram(m_diagramKey); QMT_CHECK(diagram); return diagram; } private: - - DiagramController *_diagram_controller; - - Uid _diagram_key; + DiagramController *m_diagramController; + Uid m_diagramKey; }; - -class DiagramController::UpdateElementCommand : - public DiagramUndoCommand +class DiagramController::UpdateElementCommand : public DiagramUndoCommand { public: - UpdateElementCommand(DiagramController *diagram_controller, const Uid &diagram_key, DElement *element, - DiagramController::UpdateAction update_action) - : DiagramUndoCommand(diagram_controller, diagram_key, tr("Change")), - _update_action(update_action) + UpdateElementCommand(DiagramController *diagramController, const Uid &diagramKey, DElement *element, + DiagramController::UpdateAction updateAction) + : DiagramUndoCommand(diagramController, diagramKey, tr("Change")), + m_updateAction(updateAction) { DCloneVisitor visitor; element->accept(&visitor); - _cloned_elements.insert(visitor.getCloned()->getUid(), visitor.getCloned()); + m_clonedElements.insert(visitor.cloned()->uid(), visitor.cloned()); } ~UpdateElementCommand() { - qDeleteAll(_cloned_elements); + qDeleteAll(m_clonedElements); } bool mergeWith(const UndoCommand *other) { - const UpdateElementCommand *other_update_command = dynamic_cast<const UpdateElementCommand *>(other); - if (!other_update_command) { + const UpdateElementCommand *otherUpdateCommand = dynamic_cast<const UpdateElementCommand *>(other); + if (!otherUpdateCommand) return false; - } - if (getDiagramKey() != other_update_command->getDiagramKey()) { + if (diagramKey() != otherUpdateCommand->diagramKey()) return false; - } - if (_update_action == DiagramController::UPDATE_MAJOR || other_update_command->_update_action == DiagramController::UPDATE_MAJOR - || _update_action != other_update_command->_update_action) { + if (m_updateAction == DiagramController::UpdateMajor + || otherUpdateCommand->m_updateAction == DiagramController::UpdateMajor + || m_updateAction != otherUpdateCommand->m_updateAction) { return false; } // join other elements into this command - foreach (const DElement *other_element, other_update_command->_cloned_elements.values()) { - if (!_cloned_elements.contains(other_element->getUid())) { + foreach (const DElement *otherElement, otherUpdateCommand->m_clonedElements.values()) { + if (!m_clonedElements.contains(otherElement->uid())) { DCloneVisitor visitor; - other_element->accept(&visitor); - _cloned_elements.insert(visitor.getCloned()->getUid(), visitor.getCloned()); + otherElement->accept(&visitor); + m_clonedElements.insert(visitor.cloned()->uid(), visitor.cloned()); } } // the last update is a complete update of all changes... @@ -164,119 +157,107 @@ public: private: void swap() { - DiagramController *diagram_controller = getDiagramController(); - MDiagram *diagram = getDiagram(); - foreach (DElement *cloned_element, _cloned_elements) { - DElement *active_element = diagram_controller->findElement(cloned_element->getUid(), diagram); - QMT_CHECK(active_element); - int row = diagram->getDiagramElements().indexOf(active_element); - emit diagram_controller->beginUpdateElement(row, diagram); + DiagramController *diagramController = this->diagramController(); + MDiagram *diagram = this->diagram(); + foreach (DElement *clonedElement, m_clonedElements) { + DElement *activeElement = diagramController->findElement(clonedElement->uid(), diagram); + QMT_CHECK(activeElement); + int row = diagram->diagramElements().indexOf(activeElement); + emit diagramController->beginUpdateElement(row, diagram); // clone active element - DCloneVisitor clone_visitor; - active_element->accept(&clone_visitor); - DElement *new_element = clone_visitor.getCloned(); + DCloneVisitor cloneVisitor; + activeElement->accept(&cloneVisitor); + DElement *newElement = cloneVisitor.cloned(); // reset active element to cloned element - DFlatAssignmentVisitor visitor(active_element); - cloned_element->accept(&visitor); + DFlatAssignmentVisitor visitor(activeElement); + clonedElement->accept(&visitor); // replace stored element with new cloned active element - QMT_CHECK(cloned_element->getUid() == new_element->getUid()); - _cloned_elements.insert(new_element->getUid(), new_element); - delete cloned_element; - emit diagram_controller->endUpdateElement(row, diagram); + QMT_CHECK(clonedElement->uid() == newElement->uid()); + m_clonedElements.insert(newElement->uid(), newElement); + delete clonedElement; + emit diagramController->endUpdateElement(row, diagram); } - diagram_controller->diagramModified(diagram); + diagramController->diagramModified(diagram); } -private: - - DiagramController::UpdateAction _update_action; - - QHash<Uid, DElement *> _cloned_elements; + DiagramController::UpdateAction m_updateAction; + QHash<Uid, DElement *> m_clonedElements; }; - -class DiagramController::AbstractAddRemCommand : - public DiagramUndoCommand +class DiagramController::AbstractAddRemCommand : public DiagramUndoCommand { protected: - AbstractAddRemCommand(DiagramController *diagram_controller, const Uid &diagram_key, const QString &command_label) - : DiagramUndoCommand(diagram_controller, diagram_key, command_label) + AbstractAddRemCommand(DiagramController *diagramController, const Uid &diagramKey, const QString &commandLabel) + : DiagramUndoCommand(diagramController, diagramKey, commandLabel) { } ~AbstractAddRemCommand() { - foreach (const Clone &clone, _cloned_elements) { - delete clone._cloned_element; - } + foreach (const Clone &clone, m_clonedElements) + delete clone.m_clonedElement; } void remove() { - DiagramController *diagram_controller = getDiagramController(); - MDiagram *diagram = getDiagram(); + DiagramController *diagramController = this->diagramController(); + MDiagram *diagram = this->diagram(); bool removed = false; - for (int i = 0; i < _cloned_elements.count(); ++i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(!clone._cloned_element); - DElement *active_element = diagram_controller->findElement(clone._element_key, diagram); - QMT_CHECK(active_element); - clone._index_of_element = diagram->getDiagramElements().indexOf(active_element); - QMT_CHECK(clone._index_of_element >= 0); - emit diagram_controller->beginRemoveElement(clone._index_of_element, diagram); - DCloneDeepVisitor clone_visitor; - active_element->accept(&clone_visitor); - clone._cloned_element = clone_visitor.getCloned(); - diagram->removeDiagramElement(active_element); - emit diagram_controller->endRemoveElement(clone._index_of_element, diagram); + for (int i = 0; i < m_clonedElements.count(); ++i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(!clone.m_clonedElement); + DElement *activeElement = diagramController->findElement(clone.m_elementKey, diagram); + QMT_CHECK(activeElement); + clone.m_indexOfElement = diagram->diagramElements().indexOf(activeElement); + QMT_CHECK(clone.m_indexOfElement >= 0); + emit diagramController->beginRemoveElement(clone.m_indexOfElement, diagram); + DCloneDeepVisitor cloneVisitor; + activeElement->accept(&cloneVisitor); + clone.m_clonedElement = cloneVisitor.cloned(); + diagram->removeDiagramElement(activeElement); + emit diagramController->endRemoveElement(clone.m_indexOfElement, diagram); removed = true; } - if (removed) { - diagram_controller->diagramModified(diagram); - } + if (removed) + diagramController->diagramModified(diagram); } void insert() { - DiagramController *diagram_controller = getDiagramController(); - MDiagram *diagram = getDiagram(); + DiagramController *diagramController = this->diagramController(); + MDiagram *diagram = this->diagram(); bool inserted = false; - for (int i = _cloned_elements.count() - 1; i >= 0; --i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(clone._cloned_element); - QMT_CHECK(clone._cloned_element->getUid() == clone._element_key); - emit diagram_controller->beginInsertElement(clone._index_of_element, diagram); - diagram->insertDiagramElement(clone._index_of_element, clone._cloned_element); - clone._cloned_element = 0; - emit diagram_controller->endInsertElement(clone._index_of_element, diagram); + for (int i = m_clonedElements.count() - 1; i >= 0; --i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(clone.m_clonedElement); + QMT_CHECK(clone.m_clonedElement->uid() == clone.m_elementKey); + emit diagramController->beginInsertElement(clone.m_indexOfElement, diagram); + diagram->insertDiagramElement(clone.m_indexOfElement, clone.m_clonedElement); + clone.m_clonedElement = 0; + emit diagramController->endInsertElement(clone.m_indexOfElement, diagram); inserted = true; } - if (inserted) { - diagram_controller->diagramModified(diagram); - } - + if (inserted) + diagramController->diagramModified(diagram); } -protected: - QList<Clone> _cloned_elements; - + QList<Clone> m_clonedElements; }; -class DiagramController::AddElementsCommand : - public AbstractAddRemCommand +class DiagramController::AddElementsCommand : public AbstractAddRemCommand { public: - AddElementsCommand(DiagramController *diagram_controller, const Uid &diagram_key, const QString &command_label) - : AbstractAddRemCommand(diagram_controller, diagram_key, command_label) + AddElementsCommand(DiagramController *diagramController, const Uid &diagramKey, const QString &commandLabel) + : AbstractAddRemCommand(diagramController, diagramKey, commandLabel) { } - void add(const Uid &element_key) + void add(const Uid &elementKey) { Clone clone; - clone._element_key = element_key; - _cloned_elements.append(clone); + clone.m_elementKey = elementKey; + m_clonedElements.append(clone); } void redo() @@ -294,13 +275,11 @@ public: } }; - -class DiagramController::RemoveElementsCommand : - public AbstractAddRemCommand +class DiagramController::RemoveElementsCommand : public AbstractAddRemCommand { public: - RemoveElementsCommand(DiagramController *diagram_controller, const Uid &diagram_key, const QString &command_label) - : AbstractAddRemCommand(diagram_controller, diagram_key, command_label) + RemoveElementsCommand(DiagramController *diagramController, const Uid &diagramKey, const QString &commandLabel) + : AbstractAddRemCommand(diagramController, diagramKey, commandLabel) { } @@ -308,15 +287,15 @@ public: { Clone clone; - MDiagram *diagram = getDiagram(); - clone._element_key = element->getUid(); - clone._index_of_element = diagram->getDiagramElements().indexOf(element); - QMT_CHECK(clone._index_of_element >= 0); + MDiagram *diagram = this->diagram(); + clone.m_elementKey = element->uid(); + clone.m_indexOfElement = diagram->diagramElements().indexOf(element); + QMT_CHECK(clone.m_indexOfElement >= 0); DCloneDeepVisitor visitor; element->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - QMT_CHECK(clone._cloned_element); - _cloned_elements.append(clone); + clone.m_clonedElement = visitor.cloned(); + QMT_CHECK(clone.m_clonedElement); + m_clonedElements.append(clone); } void redo() @@ -334,33 +313,28 @@ public: } }; - -class DiagramController::FindDiagramsVisitor : - public MChildrenVisitor +class DiagramController::FindDiagramsVisitor : public MChildrenVisitor { public: - - FindDiagramsVisitor(QList<MDiagram *> *all_diagrams) - : _all_diagrams(all_diagrams) + FindDiagramsVisitor(QList<MDiagram *> *allDiagrams) + : m_allDiagrams(allDiagrams) { } void visitMDiagram(MDiagram *diagram) { - _all_diagrams->append(diagram); + m_allDiagrams->append(diagram); MChildrenVisitor::visitMDiagram(diagram); } private: - - QList<MDiagram *> *_all_diagrams; + QList<MDiagram *> *m_allDiagrams; }; - DiagramController::DiagramController(QObject *parent) : QObject(parent), - _model_controller(0), - _undo_controller(0) + m_modelController(0), + m_undoController(0) { } @@ -368,54 +342,68 @@ DiagramController::~DiagramController() { } -void DiagramController::setModelController(ModelController *model_controller) +void DiagramController::setModelController(ModelController *modelController) { - if (_model_controller) { - disconnect(_model_controller, 0, this, 0); - _model_controller = 0; + if (m_modelController) { + disconnect(m_modelController, 0, this, 0); + m_modelController = 0; } - if (model_controller) { - _model_controller = model_controller; - connect(model_controller, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); - connect(model_controller, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); + if (modelController) { + m_modelController = modelController; + connect(modelController, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); + connect(modelController, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); - connect(model_controller, SIGNAL(beginUpdateObject(int,const MObject*)), this, SLOT(onBeginUpdateObject(int,const MObject*))); - connect(model_controller, SIGNAL(endUpdateObject(int,const MObject*)), this, SLOT(onEndUpdateObject(int,const MObject*))); - connect(model_controller, SIGNAL(beginInsertObject(int,const MObject*)), this, SLOT(onBeginInsertObject(int,const MObject*))); - connect(model_controller, SIGNAL(endInsertObject(int,const MObject*)), this, SLOT(onEndInsertObject(int,const MObject*))); - connect(model_controller, SIGNAL(beginRemoveObject(int,const MObject*)), this, SLOT(onBeginRemoveObject(int,const MObject*))); - connect(model_controller, SIGNAL(endRemoveObject(int,const MObject*)), this, SLOT(onEndRemoveObject(int,const MObject*))); - connect(model_controller, SIGNAL(beginMoveObject(int,const MObject*)), this, SLOT(onBeginMoveObject(int,const MObject*))); - connect(model_controller, SIGNAL(endMoveObject(int,const MObject*)), this, SLOT(onEndMoveObject(int,const MObject*))); + connect(modelController, SIGNAL(beginUpdateObject(int,const MObject*)), + this, SLOT(onBeginUpdateObject(int,const MObject*))); + connect(modelController, SIGNAL(endUpdateObject(int,const MObject*)), + this, SLOT(onEndUpdateObject(int,const MObject*))); + connect(modelController, SIGNAL(beginInsertObject(int,const MObject*)), + this, SLOT(onBeginInsertObject(int,const MObject*))); + connect(modelController, SIGNAL(endInsertObject(int,const MObject*)), + this, SLOT(onEndInsertObject(int,const MObject*))); + connect(modelController, SIGNAL(beginRemoveObject(int,const MObject*)), + this, SLOT(onBeginRemoveObject(int,const MObject*))); + connect(modelController, SIGNAL(endRemoveObject(int,const MObject*)), + this, SLOT(onEndRemoveObject(int,const MObject*))); + connect(modelController, SIGNAL(beginMoveObject(int,const MObject*)), + this, SLOT(onBeginMoveObject(int,const MObject*))); + connect(modelController, SIGNAL(endMoveObject(int,const MObject*)), + this, SLOT(onEndMoveObject(int,const MObject*))); - connect(model_controller, SIGNAL(beginUpdateRelation(int,const MObject*)), this, SLOT(onBeginUpdateRelation(int,const MObject*))); - connect(model_controller, SIGNAL(endUpdateRelation(int,const MObject*)), this, SLOT(onEndUpdateRelation(int,const MObject*))); - connect(model_controller, SIGNAL(beginRemoveRelation(int,const MObject*)), this, SLOT(onBeginRemoveRelation(int,const MObject*))); - connect(model_controller, SIGNAL(endRemoveRelation(int,const MObject*)), this, SLOT(onEndRemoveRelation(int,const MObject*))); - connect(model_controller, SIGNAL(beginMoveRelation(int,const MObject*)), this, SLOT(onBeginMoveRelation(int,const MObject*))); - connect(model_controller, SIGNAL(endMoveRelation(int,const MObject*)), this, SLOT(onEndMoveRelation(int,const MObject*))); + connect(modelController, SIGNAL(beginUpdateRelation(int,const MObject*)), + this, SLOT(onBeginUpdateRelation(int,const MObject*))); + connect(modelController, SIGNAL(endUpdateRelation(int,const MObject*)), + this, SLOT(onEndUpdateRelation(int,const MObject*))); + connect(modelController, SIGNAL(beginRemoveRelation(int,const MObject*)), + this, SLOT(onBeginRemoveRelation(int,const MObject*))); + connect(modelController, SIGNAL(endRemoveRelation(int,const MObject*)), + this, SLOT(onEndRemoveRelation(int,const MObject*))); + connect(modelController, SIGNAL(beginMoveRelation(int,const MObject*)), + this, SLOT(onBeginMoveRelation(int,const MObject*))); + connect(modelController, SIGNAL(endMoveRelation(int,const MObject*)), + this, SLOT(onEndMoveRelation(int,const MObject*))); } } -void DiagramController::setUndoController(UndoController *undo_controller) +void DiagramController::setUndoController(UndoController *undoController) { - _undo_controller = undo_controller; + m_undoController = undoController; } -MDiagram *DiagramController::findDiagram(const Uid &diagram_key) const +MDiagram *DiagramController::findDiagram(const Uid &diagramKey) const { - return dynamic_cast<MDiagram *>(_model_controller->findObject(diagram_key)); + return dynamic_cast<MDiagram *>(m_modelController->findObject(diagramKey)); } void DiagramController::addElement(DElement *element, MDiagram *diagram) { - int row = diagram->getDiagramElements().count(); + int row = diagram->diagramElements().count(); emit beginInsertElement(row, diagram); updateElementFromModel(element, diagram, false); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, diagram->getUid(), tr("Add Object")); - _undo_controller->push(undo_command); - undo_command->add(element->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, diagram->uid(), tr("Add Object")); + m_undoController->push(undoCommand); + undoCommand->add(element->uid()); } diagram->addDiagramElement(element); emit endInsertElement(row, diagram); @@ -425,12 +413,12 @@ void DiagramController::addElement(DElement *element, MDiagram *diagram) void DiagramController::removeElement(DElement *element, MDiagram *diagram) { removeRelations(element, diagram); - int row = diagram->getDiagramElements().indexOf(element); + int row = diagram->diagramElements().indexOf(element); emit beginRemoveElement(row, diagram); - if (_undo_controller) { - RemoveElementsCommand *undo_command = new RemoveElementsCommand(this, diagram->getUid(), tr("Remove Object")); - _undo_controller->push(undo_command); - undo_command->add(element); + if (m_undoController) { + RemoveElementsCommand *undoCommand = new RemoveElementsCommand(this, diagram->uid(), tr("Remove Object")); + m_undoController->push(undoCommand); + undoCommand->add(element); } diagram->removeDiagramElement(element); emit endRemoveElement(row, diagram); @@ -444,163 +432,152 @@ DElement *DiagramController::findElement(const Uid &key, const MDiagram *diagram return diagram->findDiagramElement(key); } -bool DiagramController::hasDelegate(const MElement *model_element, const MDiagram *diagram) const +bool DiagramController::hasDelegate(const MElement *modelElement, const MDiagram *diagram) const { // PERFORM smarter implementation after map is introduced - return findDelegate(model_element, diagram) != 0; + return findDelegate(modelElement, diagram) != 0; } -DElement *DiagramController::findDelegate(const MElement *model_element, const MDiagram *diagram) const +DElement *DiagramController::findDelegate(const MElement *modelElement, const MDiagram *diagram) const { - Q_UNUSED(diagram); // PERFORM use map to increase performance - foreach (DElement *diagram_element, diagram->getDiagramElements()) { - if (diagram_element->getModelUid().isValid() && diagram_element->getModelUid() == model_element->getUid()) { - return diagram_element; - } + foreach (DElement *diagramElement, diagram->diagramElements()) { + if (diagramElement->modelUid().isValid() && diagramElement->modelUid() == modelElement->uid()) + return diagramElement; } return 0; } -void DiagramController::startUpdateElement(DElement *element, MDiagram *diagram, UpdateAction update_action) +void DiagramController::startUpdateElement(DElement *element, MDiagram *diagram, UpdateAction updateAction) { - emit beginUpdateElement(diagram->getDiagramElements().indexOf(element), diagram); - if (_undo_controller) { - _undo_controller->push(new UpdateElementCommand(this, diagram->getUid(), element, update_action)); - } + emit beginUpdateElement(diagram->diagramElements().indexOf(element), diagram); + if (m_undoController) + m_undoController->push(new UpdateElementCommand(this, diagram->uid(), element, updateAction)); } void DiagramController::finishUpdateElement(DElement *element, MDiagram *diagram, bool cancelled) { - if (!cancelled) { + if (!cancelled) updateElementFromModel(element, diagram, false); - } - emit endUpdateElement(diagram->getDiagramElements().indexOf(element), diagram); - if (!cancelled) { + emit endUpdateElement(diagram->diagramElements().indexOf(element), diagram); + if (!cancelled) diagramModified(diagram); - } } void DiagramController::breakUndoChain() { - _undo_controller->doNotMerge(); + m_undoController->doNotMerge(); } -DContainer DiagramController::cutElements(const DSelection &diagram_selection, MDiagram *diagram) +DContainer DiagramController::cutElements(const DSelection &diagramSelection, MDiagram *diagram) { - DContainer copied_elements = copyElements(diagram_selection, diagram); - deleteElements(diagram_selection, diagram, tr("Cut")); - return copied_elements; + DContainer copiedElements = copyElements(diagramSelection, diagram); + deleteElements(diagramSelection, diagram, tr("Cut")); + return copiedElements; } -DContainer DiagramController::copyElements(const DSelection &diagram_selection, const MDiagram *diagram) +DContainer DiagramController::copyElements(const DSelection &diagramSelection, const MDiagram *diagram) { QMT_CHECK(diagram); - DReferences simplified_selection = simplify(diagram_selection, diagram); - DContainer copied_elements; - foreach (const DElement *element, simplified_selection.getElements()) { + DReferences simplifiedSelection = simplify(diagramSelection, diagram); + DContainer copiedElements; + foreach (const DElement *element, simplifiedSelection.elements()) { DCloneDeepVisitor visitor; element->accept(&visitor); - DElement *cloned_element = visitor.getCloned(); - copied_elements.submit(cloned_element); + DElement *clonedElement = visitor.cloned(); + copiedElements.submit(clonedElement); } - return copied_elements; + return copiedElements; } -void DiagramController::pasteElements(const DContainer &diagram_container, MDiagram *diagram) +void DiagramController::pasteElements(const DContainer &diagramContainer, MDiagram *diagram) { QMT_CHECK(diagram); // clone all elements and renew their keys - QHash<Uid, Uid> renewed_keys; - QList<DElement *> cloned_elements; - foreach (const DElement *element, diagram_container.getElements()) { + QHash<Uid, Uid> renewedKeys; + QList<DElement *> clonedElements; + foreach (const DElement *element, diagramContainer.elements()) { if (!isDelegatedElementOnDiagram(element, diagram)) { DCloneDeepVisitor visitor; element->accept(&visitor); - DElement *cloned_element = visitor.getCloned(); - renewElementKey(cloned_element, &renewed_keys); - cloned_elements.append(cloned_element); + DElement *clonedElement = visitor.cloned(); + renewElementKey(clonedElement, &renewedKeys); + clonedElements.append(clonedElement); } } // fix all keys referencing between pasting elements - foreach(DElement *cloned_element, cloned_elements) { - DRelation *relation = dynamic_cast<DRelation *>(cloned_element); - if (relation) { - updateRelationKeys(relation, renewed_keys); - } - } - if (_undo_controller) { - _undo_controller->beginMergeSequence(tr("Paste")); + foreach(DElement *clonedElement, clonedElements) { + DRelation *relation = dynamic_cast<DRelation *>(clonedElement); + if (relation) + updateRelationKeys(relation, renewedKeys); } + if (m_undoController) + m_undoController->beginMergeSequence(tr("Paste")); // insert all elements bool added = false; - foreach (DElement *cloned_element, cloned_elements) { - if (!dynamic_cast<DRelation *>(cloned_element)) { - int row = diagram->getDiagramElements().size(); + foreach (DElement *clonedElement, clonedElements) { + if (!dynamic_cast<DRelation *>(clonedElement)) { + int row = diagram->diagramElements().size(); emit beginInsertElement(row, diagram); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, diagram->getUid(), tr("Paste")); - _undo_controller->push(undo_command); - undo_command->add(cloned_element->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, diagram->uid(), tr("Paste")); + m_undoController->push(undoCommand); + undoCommand->add(clonedElement->uid()); } - diagram->addDiagramElement(cloned_element); + diagram->addDiagramElement(clonedElement); emit endInsertElement(row, diagram); added = true; } } - foreach (DElement *cloned_element, cloned_elements) { - DRelation *cloned_relation = dynamic_cast<DRelation *>(cloned_element); - if (cloned_relation && areRelationEndsOnDiagram(cloned_relation, diagram)) { - int row = diagram->getDiagramElements().size(); + foreach (DElement *clonedElement, clonedElements) { + DRelation *clonedRelation = dynamic_cast<DRelation *>(clonedElement); + if (clonedRelation && areRelationEndsOnDiagram(clonedRelation, diagram)) { + int row = diagram->diagramElements().size(); emit beginInsertElement(row, diagram); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, diagram->getUid(), tr("Paste")); - _undo_controller->push(undo_command); - undo_command->add(cloned_element->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, diagram->uid(), tr("Paste")); + m_undoController->push(undoCommand); + undoCommand->add(clonedElement->uid()); } - diagram->addDiagramElement(cloned_element); + diagram->addDiagramElement(clonedElement); emit endInsertElement(row, diagram); added = true; } } - if (added) { + if (added) diagramModified(diagram); - } - if (_undo_controller) { - _undo_controller->endMergeSequence(); - } + if (m_undoController) + m_undoController->endMergeSequence(); } -void DiagramController::deleteElements(const DSelection &diagram_selection, MDiagram *diagram) +void DiagramController::deleteElements(const DSelection &diagramSelection, MDiagram *diagram) { - deleteElements(diagram_selection, diagram, tr("Delete")); + deleteElements(diagramSelection, diagram, tr("Delete")); } void DiagramController::onBeginResetModel() { - _all_diagrams.clear(); + m_allDiagrams.clear(); emit beginResetAllDiagrams(); } void DiagramController::onEndResetModel() { updateAllDiagramsList(); - foreach (MDiagram *diagram, _all_diagrams) { + foreach (MDiagram *diagram, m_allDiagrams) { // remove all elements which are not longer part of the model - foreach (DElement *element, diagram->getDiagramElements()) { - if (element->getModelUid().isValid()) { - MElement *model_element = _model_controller->findElement(element->getModelUid()); - if (!model_element) { + foreach (DElement *element, diagram->diagramElements()) { + if (element->modelUid().isValid()) { + MElement *modelElement = m_modelController->findElement(element->modelUid()); + if (!modelElement) removeElement(element, diagram); - } } } // update all remaining elements from model - foreach (DElement *element, diagram->getDiagramElements()) { + foreach (DElement *element, diagram->diagramElements()) updateElementFromModel(element, diagram, false); - } } emit endResetAllDiagrams(); } @@ -615,22 +592,21 @@ void DiagramController::onBeginUpdateObject(int row, const MObject *parent) void DiagramController::onEndUpdateObject(int row, const MObject *parent) { - MObject *model_object = _model_controller->getObject(row, parent); - QMT_CHECK(model_object); - MPackage *model_package = dynamic_cast<MPackage *>(model_object); - foreach (MDiagram *diagram, _all_diagrams) { - DObject *object = findDelegate<DObject>(model_object, diagram); + MObject *modelObject = m_modelController->object(row, parent); + QMT_CHECK(modelObject); + MPackage *modelPackage = dynamic_cast<MPackage *>(modelObject); + foreach (MDiagram *diagram, m_allDiagrams) { + DObject *object = findDelegate<DObject>(modelObject, diagram); if (object) { updateElementFromModel(object, diagram, true); } - if (model_package) { + if (modelPackage) { // update each element that has the updated object as its owner (for context changes) - foreach (DElement *diagram_element, diagram->getDiagramElements()) { - if (diagram_element->getModelUid().isValid()) { - MObject *mobject = _model_controller->findObject(diagram_element->getModelUid()); - if (mobject && mobject->getOwner() == model_package) { - updateElementFromModel(diagram_element, diagram, true); - } + foreach (DElement *diagramElement, diagram->diagramElements()) { + if (diagramElement->modelUid().isValid()) { + MObject *mobject = m_modelController->findObject(diagramElement->modelUid()); + if (mobject && mobject->owner() == modelPackage) + updateElementFromModel(diagramElement, diagram, true); } } } @@ -647,10 +623,10 @@ void DiagramController::onEndInsertObject(int row, const MObject *owner) { QMT_CHECK(owner); - MObject *model_object = _model_controller->getObject(row, owner); - if (MDiagram *model_diagram = dynamic_cast<MDiagram *>(model_object)) { - QMT_CHECK(!_all_diagrams.contains(model_diagram)); - _all_diagrams.append(model_diagram); + MObject *modelObject = m_modelController->object(row, owner); + if (MDiagram *modelDiagram = dynamic_cast<MDiagram *>(modelObject)) { + QMT_CHECK(!m_allDiagrams.contains(modelDiagram)); + m_allDiagrams.append(modelDiagram); } } @@ -658,8 +634,8 @@ void DiagramController::onBeginRemoveObject(int row, const MObject *parent) { QMT_CHECK(parent); - MObject *model_object = _model_controller->getObject(row, parent); - removeObjects(model_object); + MObject *modelObject = m_modelController->object(row, parent); + removeObjects(modelObject); } void DiagramController::onEndRemoveObject(int row, const MObject *parent) @@ -668,11 +644,10 @@ void DiagramController::onEndRemoveObject(int row, const MObject *parent) Q_UNUSED(parent); } -void DiagramController::onBeginMoveObject(int former_row, const MObject *former_owner) +void DiagramController::onBeginMoveObject(int formerRow, const MObject *formerOwner) { - Q_UNUSED(former_row); - Q_UNUSED(former_owner); - + Q_UNUSED(formerRow); + Q_UNUSED(formerOwner); } void DiagramController::onEndMoveObject(int row, const MObject *owner) @@ -680,15 +655,14 @@ void DiagramController::onEndMoveObject(int row, const MObject *owner) onEndUpdateObject(row, owner); // if diagram was moved update all elements because of changed context - MObject *model_object = _model_controller->getObject(row, owner); - QMT_CHECK(model_object); - MDiagram *model_diagram = dynamic_cast<MDiagram *>(model_object); - if (model_diagram) { - emit beginResetDiagram(model_diagram); - foreach (DElement *diagram_element, model_diagram->getDiagramElements()) { - updateElementFromModel(diagram_element, model_diagram, false); - } - emit endResetDiagram(model_diagram); + MObject *modelObject = m_modelController->object(row, owner); + QMT_CHECK(modelObject); + MDiagram *modelDiagram = dynamic_cast<MDiagram *>(modelObject); + if (modelDiagram) { + emit beginResetDiagram(modelDiagram); + foreach (DElement *diagramElement, modelDiagram->diagramElements()) + updateElementFromModel(diagramElement, modelDiagram, false); + emit endResetDiagram(modelDiagram); } } @@ -702,9 +676,9 @@ void DiagramController::onBeginUpdateRelation(int row, const MObject *owner) void DiagramController::onEndUpdateRelation(int row, const MObject *owner) { - MRelation *model_relation = owner->getRelations().at(row); - foreach (MDiagram *diagram, _all_diagrams) { - DRelation *relation = findDelegate<DRelation>(model_relation, diagram); + MRelation *modelRelation = owner->relations().at(row); + foreach (MDiagram *diagram, m_allDiagrams) { + DRelation *relation = findDelegate<DRelation>(modelRelation, diagram); if (relation) { updateElementFromModel(relation, diagram, true); } @@ -715,8 +689,8 @@ void DiagramController::onBeginRemoveRelation(int row, const MObject *owner) { QMT_CHECK(owner); - MRelation *model_relation = owner->getRelations().at(row); - removeRelations(model_relation); + MRelation *modelRelation = owner->relations().at(row); + removeRelations(modelRelation); } void DiagramController::onEndRemoveRelation(int row, const MObject *owner) @@ -725,10 +699,10 @@ void DiagramController::onEndRemoveRelation(int row, const MObject *owner) Q_UNUSED(owner); } -void DiagramController::onBeginMoveRelation(int former_row, const MObject *former_owner) +void DiagramController::onBeginMoveRelation(int formerRow, const MObject *formerOwner) { - Q_UNUSED(former_row); - Q_UNUSED(former_owner); + Q_UNUSED(formerRow); + Q_UNUSED(formerOwner); // nothing to do } @@ -738,153 +712,143 @@ void DiagramController::onEndMoveRelation(int row, const MObject *owner) onEndUpdateRelation(row, owner); } -void DiagramController::deleteElements(const DSelection &diagram_selection, MDiagram *diagram, const QString &command_label) +void DiagramController::deleteElements(const DSelection &diagramSelection, MDiagram *diagram, + const QString &commandLabel) { QMT_CHECK(diagram); - DReferences simplified_selection = simplify(diagram_selection, diagram); - if (simplified_selection.getElements().isEmpty()) { + DReferences simplifiedSelection = simplify(diagramSelection, diagram); + if (simplifiedSelection.elements().isEmpty()) return; - } - if (_undo_controller) { - _undo_controller->beginMergeSequence(command_label); - } + if (m_undoController) + m_undoController->beginMergeSequence(commandLabel); bool removed = false; - foreach (DElement *element, simplified_selection.getElements()) { + foreach (DElement *element, simplifiedSelection.elements()) { // element may have been deleted indirectly by predecessor element in loop - if ((element = findElement(element->getUid(), diagram))) { + if ((element = findElement(element->uid(), diagram))) { removeRelations(element, diagram); - int row = diagram->getDiagramElements().indexOf(element); - emit beginRemoveElement(diagram->getDiagramElements().indexOf(element), diagram); - if (_undo_controller) { - RemoveElementsCommand *cut_command = new RemoveElementsCommand(this, diagram->getUid(), command_label); - _undo_controller->push(cut_command); - cut_command->add(element); + int row = diagram->diagramElements().indexOf(element); + emit beginRemoveElement(diagram->diagramElements().indexOf(element), diagram); + if (m_undoController) { + RemoveElementsCommand *cutCommand = new RemoveElementsCommand(this, diagram->uid(), commandLabel); + m_undoController->push(cutCommand); + cutCommand->add(element); } diagram->removeDiagramElement(element); emit endRemoveElement(row, diagram); removed = true; } } - if (removed) { + if (removed) diagramModified(diagram); - } - if (_undo_controller) { - _undo_controller->endMergeSequence(); - } + if (m_undoController) + m_undoController->endMergeSequence(); } DElement *DiagramController::findElementOnAnyDiagram(const Uid &uid) { - foreach (MDiagram *diagram, _all_diagrams) { + foreach (MDiagram *diagram, m_allDiagrams) { DElement *element = findElement(uid, diagram); - if (element) { + if (element) return element; - } } return 0; } -void DiagramController::removeObjects(MObject *model_object) +void DiagramController::removeObjects(MObject *modelObject) { - foreach (MDiagram *diagram, _all_diagrams) { - DElement *diagram_element = findDelegate(model_object, diagram); - if (diagram_element) { - removeElement(diagram_element, diagram); - } - foreach (const Handle<MRelation> &relation, model_object->getRelations()) { - DElement *diagram_element = findDelegate(relation.getTarget(), diagram); - if (diagram_element) { - removeElement(diagram_element, diagram); - } + foreach (MDiagram *diagram, m_allDiagrams) { + DElement *diagramElement = findDelegate(modelObject, diagram); + if (diagramElement) + removeElement(diagramElement, diagram); + foreach (const Handle<MRelation> &relation, modelObject->relations()) { + DElement *diagramElement = findDelegate(relation.target(), diagram); + if (diagramElement) + removeElement(diagramElement, diagram); } } - foreach (const Handle<MObject> &object, model_object->getChildren()) { - if (object.hasTarget()) { - removeObjects(object.getTarget()); - } + foreach (const Handle<MObject> &object, modelObject->children()) { + if (object.hasTarget()) + removeObjects(object.target()); } - if (MDiagram *diagram = dynamic_cast<MDiagram *>(model_object)) { + if (MDiagram *diagram = dynamic_cast<MDiagram *>(modelObject)) { emit diagramAboutToBeRemoved(diagram); - QMT_CHECK(_all_diagrams.contains(diagram)); - _all_diagrams.removeOne(diagram); - QMT_CHECK(!_all_diagrams.contains(diagram)); + QMT_CHECK(m_allDiagrams.contains(diagram)); + m_allDiagrams.removeOne(diagram); + QMT_CHECK(!m_allDiagrams.contains(diagram)); // PERFORM increase performace - while (!diagram->getDiagramElements().isEmpty()) { - DElement *element = diagram->getDiagramElements().first(); + while (!diagram->diagramElements().isEmpty()) { + DElement *element = diagram->diagramElements().first(); removeElement(element, diagram); } } } -void DiagramController::removeRelations(MRelation *model_relation) +void DiagramController::removeRelations(MRelation *modelRelation) { - foreach (MDiagram *diagram, _all_diagrams) { - DElement *diagram_element = findDelegate(model_relation, diagram); - if (diagram_element) { - removeElement(diagram_element, diagram); - } + foreach (MDiagram *diagram, m_allDiagrams) { + DElement *diagramElement = findDelegate(modelRelation, diagram); + if (diagramElement) + removeElement(diagramElement, diagram); } } void DiagramController::removeRelations(DElement *element, MDiagram *diagram) { - DObject *diagram_object = dynamic_cast<DObject *>(element); - if (diagram_object) { - foreach (DElement *diagram_element, diagram->getDiagramElements()) { - if (DRelation *diagram_relation = dynamic_cast<DRelation *>(diagram_element)) { - if (diagram_relation->getEndA() == diagram_object->getUid() || diagram_relation->getEndB() == diagram_object->getUid()) { - removeElement(diagram_relation, diagram); + DObject *diagramObject = dynamic_cast<DObject *>(element); + if (diagramObject) { + foreach (DElement *diagramElement, diagram->diagramElements()) { + if (DRelation *diagramRelation = dynamic_cast<DRelation *>(diagramElement)) { + if (diagramRelation->endAUid() == diagramObject->uid() + || diagramRelation->endBUid() == diagramObject->uid()) { + removeElement(diagramRelation, diagram); } } } } } -void DiagramController::renewElementKey(DElement *element, QHash<Uid, Uid> *renewed_keys) +void DiagramController::renewElementKey(DElement *element, QHash<Uid, Uid> *renewedKeys) { - QMT_CHECK(renewed_keys); + QMT_CHECK(renewedKeys); if (element) { - DElement *existing_element_on_diagram = findElementOnAnyDiagram(element->getUid()); - if (existing_element_on_diagram) { - QMT_CHECK(existing_element_on_diagram != element); - Uid old_key = element->getUid(); + DElement *existingElementOnDiagram = findElementOnAnyDiagram(element->uid()); + if (existingElementOnDiagram) { + QMT_CHECK(existingElementOnDiagram != element); + Uid oldKey = element->uid(); element->renewUid(); - Uid new_key = element->getUid(); - renewed_keys->insert(old_key, new_key); + Uid newKey = element->uid(); + renewedKeys->insert(oldKey, newKey); } } } -void DiagramController::updateRelationKeys(DRelation *relation, const QHash<Uid, Uid> &renewed_keys) +void DiagramController::updateRelationKeys(DRelation *relation, const QHash<Uid, Uid> &renewedKeys) { - Uid new_end_a_key = renewed_keys.value(relation->getEndA(), Uid::getInvalidUid()); - if (new_end_a_key.isValid()) { - relation->setEndA(new_end_a_key); - } - Uid new_end_b_key = renewed_keys.value(relation->getEndB(), Uid::getInvalidUid()); - if (new_end_b_key.isValid()) { - relation->setEndB(new_end_b_key); - } + Uid newEndAKey = renewedKeys.value(relation->endAUid(), Uid::invalidUid()); + if (newEndAKey.isValid()) + relation->setEndAUid(newEndAKey); + Uid newEndBKey = renewedKeys.value(relation->endBUid(), Uid::invalidUid()); + if (newEndBKey.isValid()) + relation->setEndBUid(newEndBKey); } -void DiagramController::updateElementFromModel(DElement *element, const MDiagram *diagram, bool emit_update_signal) +void DiagramController::updateElementFromModel(DElement *element, const MDiagram *diagram, bool emitUpdateSignal) { - if (!element->getModelUid().isValid()) { + if (!element->modelUid().isValid()) return; - } DUpdateVisitor visitor(element, diagram); - MElement *melement = _model_controller->findElement(element->getModelUid()); + MElement *melement = m_modelController->findElement(element->modelUid()); QMT_CHECK(melement); - if (emit_update_signal) { + if (emitUpdateSignal) { visitor.setCheckNeedsUpdate(true); melement->accept(&visitor); - if (visitor.updateNeeded()) { - int row = diagram->getDiagramElements().indexOf(element); + if (visitor.isUpdateNeeded()) { + int row = diagram->diagramElements().indexOf(element); emit beginUpdateElement(row, diagram); visitor.setCheckNeedsUpdate(false); melement->accept(&visitor); @@ -897,52 +861,50 @@ void DiagramController::updateElementFromModel(DElement *element, const MDiagram void DiagramController::diagramModified(MDiagram *diagram) { - // the modification date is updated intentionally without signalling model controller avoiding recursive change updates + // the modification date is updated intentionally without signalling model controller + // avoiding recursive change updates diagram->setLastModifiedToNow(); emit modified(diagram); } -DReferences DiagramController::simplify(const DSelection &diagram_selection, const MDiagram *diagram) +DReferences DiagramController::simplify(const DSelection &diagramSelection, const MDiagram *diagram) { DReferences references; - foreach (const DSelection::Index &index, diagram_selection.getIndices()) { - DElement *element = findElement(index.getElementKey(), diagram); - if (element) { + foreach (const DSelection::Index &index, diagramSelection.indices()) { + DElement *element = findElement(index.elementKey(), diagram); + if (element) references.append(element); - } } return references; } -MElement *DiagramController::getDelegatedElement(const DElement *element) const +MElement *DiagramController::delegatedElement(const DElement *element) const { - if (!element->getModelUid().isValid()) { + if (!element->modelUid().isValid()) return 0; - } - return _model_controller->findElement(element->getModelUid()); + return m_modelController->findElement(element->modelUid()); } bool DiagramController::isDelegatedElementOnDiagram(const DElement *element, const MDiagram *diagram) const { - MElement *model_element = getDelegatedElement(element); - if (!model_element) { + MElement *modelElement = delegatedElement(element); + if (!modelElement) return false; - } - return hasDelegate(model_element, diagram); + return hasDelegate(modelElement, diagram); } bool DiagramController::areRelationEndsOnDiagram(const DRelation *relation, const MDiagram *diagram) const { - return findElement(relation->getEndA(), diagram) && findElement(relation->getEndB(), diagram); + return findElement(relation->endAUid(), diagram) && findElement(relation->endBUid(), diagram); } void DiagramController::updateAllDiagramsList() { - _all_diagrams.clear(); - if (_model_controller && _model_controller->getRootPackage()) { - FindDiagramsVisitor visitor(&_all_diagrams); - _model_controller->getRootPackage()->accept(&visitor); + m_allDiagrams.clear(); + if (m_modelController && m_modelController->rootPackage()) { + FindDiagramsVisitor visitor(&m_allDiagrams); + m_modelController->rootPackage()->accept(&visitor); } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.h index 5503bcfd75..13582d554a 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/diagramcontroller.h @@ -36,43 +36,33 @@ #include <QObject> #include <QHash> - namespace qmt { class UndoController; - class ModelController; - class MElement; class MObject; class MDiagram; class MRelation; - class DSelection; class DContainer; class DReferences; - class DElement; class DRelation; - -class QMT_EXPORT DiagramController : - public QObject +class QMT_EXPORT DiagramController : public QObject { Q_OBJECT public: - enum UpdateAction { - UPDATE_GEOMETRY, // update only position and size of element - UPDATE_MAJOR, // a major update of the element which will create a separate undo command - UPDATE_MINOR // a minor update of the element which may be merged with other minor updates in one undo command + UpdateGeometry, // update only position and size of element + UpdateMajor, // a major update of the element which will create a separate undo command + UpdateMinor // a minor update of the element which may be merged with other minor updates in one undo command }; private: - - struct Clone; - + class Clone; class DiagramUndoCommand; class UpdateElementCommand; class AbstractAddRemCommand; @@ -81,161 +71,110 @@ private: class FindDiagramsVisitor; public: - explicit DiagramController(QObject *parent = 0); - ~DiagramController(); signals: - void beginResetAllDiagrams(); - void endResetAllDiagrams(); - void beginResetDiagram(const MDiagram *diagram); - void endResetDiagram(const MDiagram *diagram); - void beginUpdateElement(int row, const MDiagram *diagram); - void endUpdateElement(int row, const MDiagram *diagram); - void beginInsertElement(int row, const MDiagram *diagram); - void endInsertElement(int row, const MDiagram *diagram); - void beginRemoveElement(int row, const MDiagram *diagram); - void endRemoveElement(int row, const MDiagram *diagram); - void modified(const MDiagram *diagram); - void diagramAboutToBeRemoved(const MDiagram *diagram); public: - - ModelController *getModelController() const { return _model_controller; } - - void setModelController(ModelController *model_controller); - - UndoController *getUndoController() const { return _undo_controller; } - - void setUndoController(UndoController *undo_controller); + ModelController *modelController() const { return m_modelController; } + void setModelController(ModelController *modelController); + UndoController *undoController() const { return m_undoController; } + void setUndoController(UndoController *undoController); private: - - MDiagram *findDiagram(const Uid &diagram_key) const; + MDiagram *findDiagram(const Uid &diagramKey) const; public: - void addElement(DElement *element, MDiagram *diagram); - void removeElement(DElement *element, MDiagram *diagram); DElement *findElement(const Uid &key, const MDiagram *diagram) const; template<class T> - T *findElement(const Uid &key, const MDiagram *diagram) const { return dynamic_cast<T *>(findElement(key, diagram)); } - - bool hasDelegate(const MElement *model_element, const MDiagram *diagram) const; + T *findElement(const Uid &key, const MDiagram *diagram) const + { + return dynamic_cast<T *>(findElement(key, diagram)); + } - DElement *findDelegate(const MElement *model_element, const MDiagram *diagram) const; + bool hasDelegate(const MElement *modelElement, const MDiagram *diagram) const; + DElement *findDelegate(const MElement *modelElement, const MDiagram *diagram) const; template<class T> - T *findDelegate(const MElement *model_element, const MDiagram *diagram) const + T *findDelegate(const MElement *modelElement, const MDiagram *diagram) const { - return dynamic_cast<T *>(findDelegate(model_element, diagram)); + return dynamic_cast<T *>(findDelegate(modelElement, diagram)); } - void startUpdateElement(DElement *element, MDiagram *diagram, UpdateAction update_action); - + void startUpdateElement(DElement *element, MDiagram *diagram, UpdateAction updateAction); void finishUpdateElement(DElement *element, MDiagram *diagram, bool cancelled); void breakUndoChain(); -public: - - DContainer cutElements(const DSelection &diagram_selection, MDiagram *diagram); - - DContainer copyElements(const DSelection &diagram_selection, const MDiagram *diagram); - - void pasteElements(const DContainer &diagram_container, MDiagram *diagram); - - void deleteElements(const DSelection &diagram_selection, MDiagram *diagram); + DContainer cutElements(const DSelection &diagramSelection, MDiagram *diagram); + DContainer copyElements(const DSelection &diagramSelection, const MDiagram *diagram); + void pasteElements(const DContainer &diagramContainer, MDiagram *diagram); + void deleteElements(const DSelection &diagramSelection, MDiagram *diagram); private slots: - void onBeginResetModel(); - void onEndResetModel(); - void onBeginUpdateObject(int row, const MObject *parent); - void onEndUpdateObject(int row, const MObject *parent); - void onBeginInsertObject(int row, const MObject *owner); - void onEndInsertObject(int row, const MObject *owner); - void onBeginRemoveObject(int row, const MObject *parent); - void onEndRemoveObject(int row, const MObject *parent); - - void onBeginMoveObject(int former_row, const MObject *former_owner); - + void onBeginMoveObject(int formerRow, const MObject *formerOwner); void onEndMoveObject(int row, const MObject *owner); - void onBeginUpdateRelation(int row, const MObject *owner); - void onEndUpdateRelation(int row, const MObject *owner); - void onBeginRemoveRelation(int row, const MObject *owner); - void onEndRemoveRelation(int row, const MObject *owner); - - void onBeginMoveRelation(int former_row, const MObject *former_owner); - + void onBeginMoveRelation(int formerRow, const MObject *formerOwner); void onEndMoveRelation(int row, const MObject *owner); private: - - void deleteElements(const DSelection &diagram_selection, MDiagram *diagram, const QString &command_label); + void deleteElements(const DSelection &diagramSelection, MDiagram *diagram, + const QString &commandLabel); DElement *findElementOnAnyDiagram(const Uid &uid); - void removeObjects(MObject *model_object); - - void removeRelations(MRelation *model_relation); - + void removeObjects(MObject *modelObject); + void removeRelations(MRelation *modelRelation); void removeRelations(DElement *element, MDiagram *diagram); - void renewElementKey(DElement *element, QHash<Uid, Uid> *renewed_keys); - - void updateRelationKeys(DRelation *relation, const QHash<Uid, Uid> &renewed_keys); - - void updateElementFromModel(DElement *element, const MDiagram *diagram, bool emit_update_signal); + void renewElementKey(DElement *element, QHash<Uid, Uid> *renewedKeys); + void updateRelationKeys(DRelation *relation, const QHash<Uid, Uid> &renewedKeys); + void updateElementFromModel(DElement *element, const MDiagram *diagram, bool emitUpdateSignal); void diagramModified(MDiagram *diagram); - DReferences simplify(const DSelection &diagram_selection, const MDiagram *diagram); - - MElement *getDelegatedElement(const DElement *element) const; + DReferences simplify(const DSelection &diagramSelection, const MDiagram *diagram); + MElement *delegatedElement(const DElement *element) const; bool isDelegatedElementOnDiagram(const DElement *element, const MDiagram *diagram) const; - bool areRelationEndsOnDiagram(const DRelation *relation, const MDiagram *diagram) const; void updateAllDiagramsList(); -private: - - ModelController *_model_controller; - - UndoController *_undo_controller; - - QList<MDiagram *> _all_diagrams; + ModelController *m_modelController; + UndoController *m_undoController; + QList<MDiagram *> m_allDiagrams; }; -} +} // namespace qmt #endif // DIAGRAMCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dreferences.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dreferences.h index 9c9568e92b..c629f9b3fe 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dreferences.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dreferences.h @@ -34,16 +34,14 @@ #include "qmt/controller/references.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class DElement; -class QMT_EXPORT DReferences : - public References<DElement> +class QMT_EXPORT DReferences : public References<DElement> { }; -} +} // namespace qmt #endif // QMT_DREFERENCES_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dselection.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dselection.h index 5fa6635394..f1e1e0f942 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dselection.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dselection.h @@ -34,14 +34,12 @@ #include "qmt/controller/selection.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { -class QMT_EXPORT DSelection : - public Selection +class QMT_EXPORT DSelection : public Selection { }; -} +} // namespace qmt #endif // QMT_DSELECTION_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.cpp index 66bba34afa..d001c8f2f1 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.cpp @@ -51,62 +51,56 @@ #include "qmt/model/mdependency.h" #include "qmt/model/minheritance.h" - namespace qmt { -DUpdateVisitor::DUpdateVisitor(DElement *target, const MDiagram *diagram, bool check_needs_update) - : _target(target), - _diagram(diagram), - _check_needs_update(check_needs_update), - _update_needed(!check_needs_update) +DUpdateVisitor::DUpdateVisitor(DElement *target, const MDiagram *diagram, bool checkNeedsUpdate) + : m_target(target), + m_diagram(diagram), + m_checkNeedsUpdate(checkNeedsUpdate), + m_isUpdateNeeded(!checkNeedsUpdate) { } -void DUpdateVisitor::setCheckNeedsUpdate(bool check_needs_update) +void DUpdateVisitor::setCheckNeedsUpdate(bool checkNeedsUpdate) { - _check_needs_update = check_needs_update; - _update_needed = !check_needs_update; + m_checkNeedsUpdate = checkNeedsUpdate; + m_isUpdateNeeded = !checkNeedsUpdate; } void DUpdateVisitor::visitMElement(const MElement *element) { Q_UNUSED(element); - QMT_CHECK(_target); + QMT_CHECK(m_target); } void DUpdateVisitor::visitMObject(const MObject *object) { - DObject *dobject = dynamic_cast<DObject *>(_target); + DObject *dobject = dynamic_cast<DObject *>(m_target); QMT_CHECK(dobject); - if (isUpdating(object->getStereotypes() != dobject->getStereotypes())) { - dobject->setStereotypes(object->getStereotypes()); - } - const MObject *object_owner = object->getOwner(); - const MObject *diagram_owner = _diagram->getOwner(); - if (object_owner && diagram_owner && object_owner->getUid() != diagram_owner->getUid()) { - if (isUpdating(object_owner->getName() != dobject->getContext())) { - dobject->setContext(object_owner->getName()); - } + if (isUpdating(object->stereotypes() != dobject->stereotypes())) + dobject->setStereotypes(object->stereotypes()); + const MObject *objectOwner = object->owner(); + const MObject *diagramOwner = m_diagram->owner(); + if (objectOwner && diagramOwner && objectOwner->uid() != diagramOwner->uid()) { + if (isUpdating(objectOwner->name() != dobject->context())) + dobject->setContext(objectOwner->name()); } else { - if (isUpdating(!dobject->getContext().isEmpty())) { + if (isUpdating(!dobject->context().isEmpty())) dobject->setContext(QString()); - } - } - if (isUpdating(object->getName() != dobject->getName())) { - dobject->setName(object->getName()); } + if (isUpdating(object->name() != dobject->name())) + dobject->setName(object->name()); // TODO unlikely that this is called for all objects if hierarchy is modified // PERFORM remove loop int depth = 1; - const MObject *owner = object->getOwner(); + const MObject *owner = object->owner(); while (owner) { - owner = owner->getOwner(); + owner = owner->owner(); depth += 1; } - if (isUpdating(depth != dobject->getDepth())) { + if (isUpdating(depth != dobject->depth())) dobject->setDepth(depth); - } visitMElement(object); } @@ -117,17 +111,14 @@ void DUpdateVisitor::visitMPackage(const MPackage *package) void DUpdateVisitor::visitMClass(const MClass *klass) { - DClass *dclass = dynamic_cast<DClass *>(_target); + DClass *dclass = dynamic_cast<DClass *>(m_target); QMT_CHECK(dclass); - if (isUpdating(klass->getNamespace() != dclass->getNamespace())) { - dclass->setNamespace(klass->getNamespace()); - } - if (isUpdating(klass->getTemplateParameters() != dclass->getTemplateParameters())) { - dclass->setTemplateParameters(klass->getTemplateParameters()); - } - if (isUpdating(klass->getMembers() != dclass->getMembers())) { - dclass->setMembers(klass->getMembers()); - } + if (isUpdating(klass->umlNamespace() != dclass->umlNamespace())) + dclass->setUmlNamespace(klass->umlNamespace()); + if (isUpdating(klass->templateParameters() != dclass->templateParameters())) + dclass->setTemplateParameters(klass->templateParameters()); + if (isUpdating(klass->members() != dclass->members())) + dclass->setMembers(klass->members()); visitMObject(klass); } @@ -148,37 +139,32 @@ void DUpdateVisitor::visitMCanvasDiagram(const MCanvasDiagram *diagram) void DUpdateVisitor::visitMItem(const MItem *item) { - DItem *ditem = dynamic_cast<DItem *>(_target); + DItem *ditem = dynamic_cast<DItem *>(m_target); QMT_CHECK(ditem); - if (isUpdating(item->isShapeEditable() != ditem->isShapeEditable())) { + if (isUpdating(item->isShapeEditable() != ditem->isShapeEditable())) ditem->setShapeEditable(item->isShapeEditable()); - } - if (isUpdating(item->getVariety() != ditem->getVariety())) { - ditem->setVariety(item->getVariety()); - } + if (isUpdating(item->variety() != ditem->variety())) + ditem->setVariety(item->variety()); visitMObject(item); } void DUpdateVisitor::visitMRelation(const MRelation *relation) { - DRelation *drelation = dynamic_cast<DRelation *>(_target); + DRelation *drelation = dynamic_cast<DRelation *>(m_target); QMT_CHECK(drelation); - if (isUpdating(relation->getStereotypes() != drelation->getStereotypes())) { - drelation->setStereotypes(relation->getStereotypes()); - } - if (isUpdating(relation->getName() != drelation->getName())) { - drelation->setName(relation->getName()); - } + if (isUpdating(relation->stereotypes() != drelation->stereotypes())) + drelation->setStereotypes(relation->stereotypes()); + if (isUpdating(relation->name() != drelation->name())) + drelation->setName(relation->name()); visitMElement(relation); } void DUpdateVisitor::visitMDependency(const MDependency *dependency) { - DDependency *ddependency = dynamic_cast<DDependency *>(_target); + DDependency *ddependency = dynamic_cast<DDependency *>(m_target); QMT_CHECK(ddependency); - if (isUpdating(dependency->getDirection() != ddependency->getDirection())) { - ddependency->setDirection(dependency->getDirection()); - } + if (isUpdating(dependency->direction() != ddependency->direction())) + ddependency->setDirection(dependency->direction()); visitMRelation(dependency); } @@ -189,36 +175,33 @@ void DUpdateVisitor::visitMInheritance(const MInheritance *inheritance) void DUpdateVisitor::visitMAssociation(const MAssociation *association) { - DAssociation *dassociation = dynamic_cast<DAssociation *>(_target); + DAssociation *dassociation = dynamic_cast<DAssociation *>(m_target); QMT_CHECK(dassociation); - DAssociationEnd end_a; - end_a.setName(association->getA().getName()); - end_a.setCardinatlity(association->getA().getCardinality()); - end_a.setNavigable(association->getA().isNavigable()); - end_a.setKind(association->getA().getKind()); - if (isUpdating(end_a != dassociation->getA())) { - dassociation->setA(end_a); - } - DAssociationEnd end_b; - end_b.setName(association->getB().getName()); - end_b.setCardinatlity(association->getB().getCardinality()); - end_b.setNavigable(association->getB().isNavigable()); - end_b.setKind(association->getB().getKind()); - if (isUpdating(end_b != dassociation->getB())) { - dassociation->setB(end_b); - } + DAssociationEnd endA; + endA.setName(association->endA().name()); + endA.setCardinatlity(association->endA().cardinality()); + endA.setNavigable(association->endA().isNavigable()); + endA.setKind(association->endA().kind()); + if (isUpdating(endA != dassociation->endA())) + dassociation->setEndA(endA); + DAssociationEnd endB; + endB.setName(association->endB().name()); + endB.setCardinatlity(association->endB().cardinality()); + endB.setNavigable(association->endB().isNavigable()); + endB.setKind(association->endB().kind()); + if (isUpdating(endB != dassociation->endB())) + dassociation->setEndB(endB); visitMRelation(association); } -bool DUpdateVisitor::isUpdating(bool value_changed) +bool DUpdateVisitor::isUpdating(bool valueChanged) { - if (_check_needs_update) { - if (value_changed) { - _update_needed = true; - } + if (m_checkNeedsUpdate) { + if (valueChanged) + m_isUpdateNeeded = true; return false; } - return value_changed; + return valueChanged; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.h index 1867ce66ed..b16ca6b815 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dupdatevisitor.h @@ -34,63 +34,40 @@ #include "qmt/model/mconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class DElement; - -class QMT_EXPORT DUpdateVisitor : - public MConstVisitor +class QMT_EXPORT DUpdateVisitor : public MConstVisitor { public: - DUpdateVisitor(DElement *target, const MDiagram *diagram, bool check_needs_update = false); - -public: - - bool updateNeeded() const { return _update_needed; } + DUpdateVisitor(DElement *target, const MDiagram *diagram, bool checkNeedsUpdate = false); - void setCheckNeedsUpdate(bool check_needs_update); + bool isUpdateNeeded() const { return m_isUpdateNeeded; } + void setCheckNeedsUpdate(bool checkNeedsUpdate); void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); private: + bool isUpdating(bool valueChanged); - bool isUpdating(bool value_changed); - -private: - - DElement *_target; - - const MDiagram *_diagram; - - bool _check_needs_update; - - bool _update_needed; + DElement *m_target; + const MDiagram *m_diagram; + bool m_checkNeedsUpdate; + bool m_isUpdateNeeded; }; -} +} // namespace qmt #endif // QMT_DUPDATEVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.cpp b/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.cpp index 28f7ec599b..8e4c6ac4cc 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.cpp @@ -115,8 +115,6 @@ void DVoidVisitor::visitDBoundary(DBoundary *boundary) visitDElement(boundary); } - - DConstVoidVisitor::DConstVoidVisitor() { } @@ -186,5 +184,4 @@ void DConstVoidVisitor::visitDBoundary(const DBoundary *boundary) visitDElement(boundary); } -} - +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.h b/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.h index a8484bc8d7..0f2fd7d419 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_controller/dvoidvisitor.h @@ -35,77 +35,48 @@ #include "qmt/diagram/dconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { -class QMT_EXPORT DVoidVisitor : - public DVisitor +class QMT_EXPORT DVoidVisitor : public DVisitor { public: DVoidVisitor(); void visitDElement(DElement *element); - void visitDObject(DObject *object); - void visitDPackage(DPackage *package); - void visitDClass(DClass *klass); - void visitDComponent(DComponent *component); - void visitDDiagram(DDiagram *diagram); - void visitDItem(DItem *item); - void visitDRelation(DRelation *relation); - void visitDInheritance(DInheritance *inheritance); - void visitDDependency(DDependency *dependency); - void visitDAssociation(DAssociation *association); - void visitDAnnotation(DAnnotation *annotation); - void visitDBoundary(DBoundary *boundary); - }; -class QMT_EXPORT DConstVoidVisitor : - public DConstVisitor +class QMT_EXPORT DConstVoidVisitor : public DConstVisitor { public: DConstVoidVisitor(); void visitDElement(const DElement *element); - void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); - void visitDRelation(const DRelation *relation); - void visitDInheritance(const DInheritance *inheritance); - void visitDDependency(const DDependency *dependency); - void visitDAssociation(const DAssociation *association); - void visitDAnnotation(const DAnnotation *annotation); - void visitDBoundary(const DBoundary *boundary); - }; -} +} // namespace qmt #endif // DVOIDVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/alignable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/alignable.h index 80bf573bb9..c95a9e2329 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/alignable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/alignable.h @@ -33,33 +33,28 @@ #include <QString> - namespace qmt { -class IAlignable { - +class IAlignable +{ public: enum AlignType { - ALIGN_LEFT, - ALIGN_RIGHT, - ALIGN_TOP, - ALIGN_BOTTOM, - ALIGN_HCENTER, - ALIGN_VCENTER, - ALIGN_WIDTH, - ALIGN_HEIGHT, - ALIGN_SIZE + AlignLeft, + AlignRight, + AlignTop, + AlignBottom, + AlignHcenter, + AlignVcenter, + AlignWidth, + AlignHeight, + AlignSize }; -public: - virtual ~IAlignable() { } -public: - - virtual void align(AlignType align_type, const QString &identifier) = 0; + virtual void align(AlignType alignType, const QString &identifier) = 0; }; -} +} // namespace qmt #endif // QMT_ALIGNABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/editable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/editable.h index 64c0bda7a3..a5b6215cac 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/editable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/editable.h @@ -33,17 +33,16 @@ namespace qmt { -class IEditable { +class IEditable +{ public: ~IEditable() { } -public: - virtual bool isEditable() const = 0; virtual void edit() = 0; }; -} +} // namespace qmt #endif // QMT_EDITABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/intersectionable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/intersectionable.h index 8d88084f23..d2098bb642 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/intersectionable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/intersectionable.h @@ -38,18 +38,17 @@ class QPointF; class QLineF; QT_END_NAMESPACE - namespace qmt { -class IIntersectionable { +class IIntersectionable +{ public: - virtual ~IIntersectionable() { } - virtual bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line = 0) const = 0; - + virtual bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine = 0) const = 0; }; -} +} // namespace qmt #endif // QMT_INTERSECTIONABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/latchable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/latchable.h index b1b03ab1d4..29b5e76aab 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/latchable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/latchable.h @@ -35,62 +35,61 @@ namespace qmt { -class ILatchable { +class ILatchable +{ public: - enum Action { - MOVE, - RESIZE_LEFT, - RESIZE_TOP, - RESIZE_RIGHT, - RESIZE_BOTTOM + Move, + ResizeLeft, + ResizeTop, + ResizeRight, + ResizeBottom }; enum LatchType { - NONE, - LEFT, - TOP, - RIGHT, - BOTTOM, - HCENTER, - VCENTER + None, + Left, + Top, + Right, + Bottom, + Hcenter, + Vcenter }; - struct Latch { + class Latch + { + public: Latch() - : _latch_type(NONE), - _pos(0.0), - _other_pos1(0.0), - _other_pos2(0.0), - _identifier() + : m_latchType(None), + m_pos(0.0), + m_otherPos1(0.0), + m_otherPos2(0.0), + m_identifier() { } - Latch(LatchType latch_type, qreal pos, qreal other_pos1, qreal other_pos2, const QString &identifier) - : _latch_type(latch_type), - _pos(pos), - _other_pos1(other_pos1), - _other_pos2(other_pos2), - _identifier(identifier) + Latch(LatchType latchType, qreal pos, qreal otherPos1, qreal otherPos2, + const QString &identifier) + : m_latchType(latchType), + m_pos(pos), + m_otherPos1(otherPos1), + m_otherPos2(otherPos2), + m_identifier(identifier) { } - LatchType _latch_type; - qreal _pos; - qreal _other_pos1, _other_pos2; - QString _identifier; + LatchType m_latchType; + qreal m_pos; + qreal m_otherPos1, m_otherPos2; + QString m_identifier; }; -public: - virtual ~ILatchable() { } - virtual QList<Latch> getHorizontalLatches(Action action, bool grabbed_item) const = 0; - - virtual QList<Latch> getVerticalLatches(Action action, bool grabbed_item) const = 0; - + virtual QList<Latch> horizontalLatches(Action action, bool grabbedItem) const = 0; + virtual QList<Latch> verticalLatches(Action action, bool grabbedItem) const = 0; }; -} +} // namespace qmt #endif // QMT_LATCHABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/moveable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/moveable.h index c040ad7697..aef4eac91f 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/moveable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/moveable.h @@ -37,18 +37,17 @@ QT_BEGIN_NAMESPACE class QPointF; QT_END_NAMESPACE - namespace qmt { -class IMoveable { +class IMoveable +{ public: virtual ~IMoveable() { } virtual void moveDelta(const QPointF &delta) = 0; - - virtual void alignItemPositionToRaster(double raster_width, double raster_height) = 0; + virtual void alignItemPositionToRaster(double rasterWidth, double rasterHeight) = 0; }; -} +} // namespace qmt #endif // QMT_MOVEABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/relationable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/relationable.h index 97d2d8991f..abcbe28633 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/relationable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/relationable.h @@ -35,22 +35,21 @@ QT_BEGIN_NAMESPACE class QString; -class QGraphicsItem; class QPointF; QT_END_NAMESPACE - namespace qmt { -class IRelationable { +class IRelationable +{ public: virtual ~IRelationable() { } - virtual QPointF getRelationStartPos() const = 0; - - virtual void relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points) = 0; + virtual QPointF relationStartPos() const = 0; + virtual void relationDrawn(const QString &id, const QPointF &toScenePos, + const QList<QPointF> &intermediatePoints) = 0; }; -} +} // namespace qmt #endif // QMT_RELATIONABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/resizable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/resizable.h index d4676d7a75..ea3766f3e5 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/resizable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/resizable.h @@ -39,32 +39,29 @@ class QRectF; class QSizeF; QT_END_NAMESPACE - namespace qmt { -class IResizable { +class IResizable +{ public: - enum Side { - SIDE_NONE, - SIDE_LEFT_OR_TOP, - SIDE_RIGHT_OR_BOTTOM + SideNone, + SideLeftOrTop, + SideRightOrBottom }; -public: virtual ~IResizable() { } - virtual QPointF getPos() const = 0; - - virtual QRectF getRect() const = 0; - - virtual QSizeF getMinimumSize() const = 0; - - virtual void setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta) = 0; + virtual QPointF pos() const = 0; + virtual QRectF rect() const = 0; + virtual QSizeF minimumSize() const = 0; - virtual void alignItemSizeToRaster(Side adjust_horizontal_side, Side adjust_vertical_side, double raster_width, double raster_height) = 0; + virtual void setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, + const QPointF &topLeftDelta, const QPointF &bottomRightDelta) = 0; + virtual void alignItemSizeToRaster(Side adjustHorizontalSide, Side adjustVerticalSide, + double rasterWidth, double rasterHeight) = 0; }; -} +} // namespace qmt #endif // QMT_RESIZABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/selectable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/selectable.h index 9db5cc15ac..ada6e6f6a7 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/selectable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/selectable.h @@ -33,19 +33,17 @@ namespace qmt { -class ISelectable { +class ISelectable +{ public: virtual ~ISelectable() { } virtual bool isSecondarySelected() const = 0; - - virtual void setSecondarySelected(bool secondary_selected) = 0; - + virtual void setSecondarySelected(bool secondarySelected) = 0; virtual bool isFocusSelected() const = 0; - - virtual void setFocusSelected(bool focus_selected) = 0; + virtual void setFocusSelected(bool focusSelected) = 0; }; -} +} // namespace qmt #endif // QMT_SELECTABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/windable.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/windable.h index 285e0716c3..cdf0d4aaa8 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/windable.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/capabilities/windable.h @@ -37,25 +37,20 @@ QT_BEGIN_NAMESPACE class QPointF; QT_END_NAMESPACE - namespace qmt { -class IWindable { +class IWindable +{ public: - virtual ~IWindable() { } - virtual QPointF getHandlePos(int index) = 0; - - virtual void insertHandle(int before_index, const QPointF &pos) = 0; - + virtual QPointF handlePos(int index) = 0; + virtual void insertHandle(int beforeIndex, const QPointF &pos) = 0; virtual void deleteHandle(int index) = 0; - virtual void setHandlePos(int index, const QPointF &pos) = 0; - - virtual void alignHandleToRaster(int index, double raster_width, double raster_height) = 0; + virtual void alignHandleToRaster(int index, double rasterWidth, double rasterHeight) = 0; }; -} +} // namespace qmt #endif // QMT_WINDABLE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.cpp index 7bf53adad0..eb369989da 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.cpp @@ -32,14 +32,11 @@ #include "diagramscenemodel.h" -#include <QDebug> - - namespace qmt { -DiagramGraphicsScene::DiagramGraphicsScene(DiagramSceneModel *diagram_scene_model, QObject *parent) +DiagramGraphicsScene::DiagramGraphicsScene(DiagramSceneModel *diagramSceneModel, QObject *parent) : QGraphicsScene(parent), - _diagram_scene_model(diagram_scene_model) + m_diagramSceneModel(diagramSceneModel) { } @@ -109,21 +106,21 @@ void DiagramGraphicsScene::keyReleaseEvent(QKeyEvent *event) void DiagramGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { - _diagram_scene_model->sceneActivated(); + m_diagramSceneModel->sceneActivated(); QGraphicsScene::mousePressEvent(event); - _diagram_scene_model->mousePressEvent(event); + m_diagramSceneModel->mousePressEvent(event); } void DiagramGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { QGraphicsScene::mouseMoveEvent(event); - _diagram_scene_model->mouseMoveEvent(event); + m_diagramSceneModel->mouseMoveEvent(event); } void DiagramGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { QGraphicsScene::mouseReleaseEvent(event); - _diagram_scene_model->mouseReleaseEvent(event); + m_diagramSceneModel->mouseReleaseEvent(event); } void DiagramGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) @@ -141,4 +138,4 @@ void DiagramGraphicsScene::inputMethodEvent(QInputMethodEvent *event) QGraphicsScene::inputMethodEvent(event); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.h index df98fbdf98..b1c2e860f6 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramgraphicsscene.h @@ -34,69 +34,45 @@ #include <QGraphicsScene> #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class DiagramSceneModel; -class QMT_EXPORT DiagramGraphicsScene : - public QGraphicsScene +class QMT_EXPORT DiagramGraphicsScene : public QGraphicsScene { Q_OBJECT public: - DiagramGraphicsScene(DiagramSceneModel *diagram_scene_model, QObject *parent = 0); - + DiagramGraphicsScene(DiagramSceneModel *diagramSceneModel, QObject *parent = 0); ~DiagramGraphicsScene(); signals: - void sceneActivated(); protected: - bool event(QEvent *event); - bool eventFilter(QObject *watched, QEvent *event); - void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); - void dragEnterEvent(QGraphicsSceneDragDropEvent *event); - void dragMoveEvent(QGraphicsSceneDragDropEvent *event); - void dragLeaveEvent(QGraphicsSceneDragDropEvent *event); - void dropEvent(QGraphicsSceneDragDropEvent *event); - void focusInEvent(QFocusEvent *event); - void focusOutEvent(QFocusEvent *event); - void helpEvent(QGraphicsSceneHelpEvent *event); - void keyPressEvent(QKeyEvent *event); - void keyReleaseEvent(QKeyEvent *event); - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void wheelEvent(QGraphicsSceneWheelEvent *event); - void inputMethodEvent(QInputMethodEvent *event); private: - - DiagramSceneModel *_diagram_scene_model; - + DiagramSceneModel *m_diagramSceneModel; }; -} +} // namespace qmt #endif // QMT_DIAGRAMGRAPHICSSCENE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramsceneconstants.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramsceneconstants.h index 94a04f5472..b6358daa46 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramsceneconstants.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramsceneconstants.h @@ -34,33 +34,21 @@ namespace qmt { const int BOUNDARY_ITEMS_ZVALUE = -1000; - // all model objects have z-values from -500 to 500 depending on their depth in the model tree - const int RELATION_ITEMS_ZVALUE = 1000; - const int RELATION_ITEMS_ZVALUE_SELECTED = 1001; - const int ANNOTATION_ITEMS_ZVALUE = 1500; - const int RELATION_STARTER_ZVALUE = 2000; - const int LATCH_LINES_ZVALUE = 3000; - const int ALIGN_BUTTONS_ZVALUE = 3500; - const int PREVIEW_RELATION_ZVALUE = 4000; - const double RASTER_WIDTH = 5.0; - const double RASTER_HEIGHT = 5.0; - const double CUSTOM_ICON_MINIMUM_AUTO_WIDTH = 40.0; // must be n * 2 * RASTER_WIDTH - const double CUSTOM_ICON_MINIMUM_AUTO_HEIGHT = 40.0; // must be n * 2 * RASTER_HEIGHT -} +} // namespace qmt #endif // QMT_DIAGRAMSCENECONSTANTS_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.cpp index 25ffdfb98b..a43ed07ffd 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.cpp @@ -67,17 +67,9 @@ #include <QtSvg/QSvgGenerator> #endif -#ifdef USE_EMF_CLIPBOARD -// TODO implement emf clipboard -#endif - -#include <QDebug> - - namespace qmt { -class DiagramSceneModel::OriginItem : - public QGraphicsItem +class DiagramSceneModel::OriginItem : public QGraphicsItem { public: OriginItem(QGraphicsItem *parent = 0) @@ -102,359 +94,356 @@ public: } }; - DiagramSceneModel::DiagramSceneModel(QObject *parent) : QObject(parent), - _diagram_controller(0), - _diagram_scene_controller(0), - _style_controller(0), - _stereotype_controller(0), - _diagram(0), - _graphics_scene(new DiagramGraphicsScene(this)), - _latch_controller(new LatchController(this)), - _busy(NOT_BUSY), - _origin_item(new OriginItem()), - _focus_item(0) -{ - _latch_controller->setDiagramSceneModel(this); - connect(_graphics_scene, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); + m_diagramController(0), + m_diagramSceneController(0), + m_styleController(0), + m_stereotypeController(0), + m_diagram(0), + m_graphicsScene(new DiagramGraphicsScene(this)), + m_latchController(new LatchController(this)), + m_busyState(NotBusy), + m_originItem(new OriginItem()), + m_focusItem(0) +{ + m_latchController->setDiagramSceneModel(this); + connect(m_graphicsScene, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); // add one item at origin to force scene rect to include origin always - _graphics_scene->addItem(_origin_item); + m_graphicsScene->addItem(m_originItem); - _latch_controller->addToGraphicsScene(_graphics_scene); + m_latchController->addToGraphicsScene(m_graphicsScene); } DiagramSceneModel::~DiagramSceneModel() { - QMT_CHECK(_busy == NOT_BUSY); - _latch_controller->removeFromGraphicsScene(_graphics_scene); + QMT_CHECK(m_busyState == NotBusy); + m_latchController->removeFromGraphicsScene(m_graphicsScene); disconnect(); - if (_diagram_controller) { - disconnect(_diagram_controller, 0, this, 0); - } - _graphics_scene->deleteLater(); + if (m_diagramController) + disconnect(m_diagramController, 0, this, 0); + m_graphicsScene->deleteLater(); } -void DiagramSceneModel::setDiagramController(DiagramController *diagram_controller) +void DiagramSceneModel::setDiagramController(DiagramController *diagramController) { - if (_diagram_controller == diagram_controller) { + if (m_diagramController == diagramController) return; + if (m_diagramController) { + disconnect(m_diagramController, 0, this, 0); + m_diagramController = 0; } - if (_diagram_controller) { - disconnect(_diagram_controller, 0, this, 0); - _diagram_controller = 0; - } - _diagram_controller = diagram_controller; - if (diagram_controller) { - connect(_diagram_controller, SIGNAL(beginResetAllDiagrams()), this, SLOT(onBeginResetAllDiagrams())); - connect(_diagram_controller, SIGNAL(endResetAllDiagrams()), this, SLOT(onEndResetAllDiagrams())); - connect(_diagram_controller, SIGNAL(beginResetDiagram(const MDiagram*)), this, SLOT(onBeginResetDiagram(const MDiagram*))); - connect(_diagram_controller, SIGNAL(endResetDiagram(const MDiagram*)), this, SLOT(onEndResetDiagram(const MDiagram*))); - connect(_diagram_controller, SIGNAL(beginUpdateElement(int,const MDiagram*)), this, SLOT(onBeginUpdateElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endUpdateElement(int,const MDiagram*)), this, SLOT(onEndUpdateElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(beginInsertElement(int,const MDiagram*)), this, SLOT(onBeginInsertElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endInsertElement(int,const MDiagram*)), this, SLOT(onEndInsertElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(beginRemoveElement(int,const MDiagram*)), this, SLOT(onBeginRemoveElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endRemoveElement(int,const MDiagram*)), this, SLOT(onEndRemoveElement(int,const MDiagram*))); + m_diagramController = diagramController; + if (diagramController) { + connect(m_diagramController, SIGNAL(beginResetAllDiagrams()), this, SLOT(onBeginResetAllDiagrams())); + connect(m_diagramController, SIGNAL(endResetAllDiagrams()), this, SLOT(onEndResetAllDiagrams())); + connect(m_diagramController, SIGNAL(beginResetDiagram(const MDiagram*)), + this, SLOT(onBeginResetDiagram(const MDiagram*))); + connect(m_diagramController, SIGNAL(endResetDiagram(const MDiagram*)), + this, SLOT(onEndResetDiagram(const MDiagram*))); + connect(m_diagramController, SIGNAL(beginUpdateElement(int,const MDiagram*)), + this, SLOT(onBeginUpdateElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endUpdateElement(int,const MDiagram*)), + this, SLOT(onEndUpdateElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(beginInsertElement(int,const MDiagram*)), + this, SLOT(onBeginInsertElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endInsertElement(int,const MDiagram*)), + this, SLOT(onEndInsertElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(beginRemoveElement(int,const MDiagram*)), + this, SLOT(onBeginRemoveElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endRemoveElement(int,const MDiagram*)), + this, SLOT(onEndRemoveElement(int,const MDiagram*))); } } -void DiagramSceneModel::setDiagramSceneController(DiagramSceneController *diagram_scene_controller) +void DiagramSceneModel::setDiagramSceneController(DiagramSceneController *diagramSceneController) { - _diagram_scene_controller = diagram_scene_controller; + m_diagramSceneController = diagramSceneController; } -void DiagramSceneModel::setStyleController(StyleController *style_controller) +void DiagramSceneModel::setStyleController(StyleController *styleController) { - _style_controller = style_controller; + m_styleController = styleController; } -void DiagramSceneModel::setStereotypeController(StereotypeController *stereotype_controller) +void DiagramSceneModel::setStereotypeController(StereotypeController *stereotypeController) { - _stereotype_controller = stereotype_controller; + m_stereotypeController = stereotypeController; } void DiagramSceneModel::setDiagram(MDiagram *diagram) { - if (_diagram != diagram) { + if (m_diagram != diagram) { onBeginResetDiagram(diagram); - _diagram = diagram; + m_diagram = diagram; onEndResetDiagram(diagram); } } -QGraphicsScene *DiagramSceneModel::getGraphicsScene() const +QGraphicsScene *DiagramSceneModel::graphicsScene() const { - return _graphics_scene; + return m_graphicsScene; } bool DiagramSceneModel::hasSelection() const { - return !_graphics_scene->selectedItems().isEmpty(); + return !m_graphicsScene->selectedItems().isEmpty(); } bool DiagramSceneModel::hasMultiObjectsSelection() const { int count = 0; - foreach (QGraphicsItem *item, _graphics_scene->selectedItems()) { - DElement *element = _item_to_element_map.value(item); + foreach (QGraphicsItem *item, m_graphicsScene->selectedItems()) { + DElement *element = m_itemToElementMap.value(item); QMT_CHECK(element); if (dynamic_cast<DObject *>(element) != 0) { ++count; - if (count > 1) { + if (count > 1) return true; - } } } return false; } -DSelection DiagramSceneModel::getSelectedElements() const +DSelection DiagramSceneModel::selectedElements() const { DSelection selection; - foreach (QGraphicsItem *item, _graphics_scene->selectedItems()) { - DElement *element = _item_to_element_map.value(item); + foreach (QGraphicsItem *item, m_graphicsScene->selectedItems()) { + DElement *element = m_itemToElementMap.value(item); QMT_CHECK(element); - selection.append(element->getUid(), _diagram->getUid()); + selection.append(element->uid(), m_diagram->uid()); } return selection; } -DElement *DiagramSceneModel::findTopmostElement(const QPointF &scene_pos) const +DElement *DiagramSceneModel::findTopmostElement(const QPointF &scenePos) const { // fetch affected items from scene in correct drawing order to find topmost element - QList<QGraphicsItem *> items = _graphics_scene->items(scene_pos); + QList<QGraphicsItem *> items = m_graphicsScene->items(scenePos); foreach (QGraphicsItem *item, items) { - if (_graphics_items.contains(item)) { - return _item_to_element_map.value(item); - } + if (m_graphicsItems.contains(item)) + return m_itemToElementMap.value(item); } return 0; } -QGraphicsItem *DiagramSceneModel::getGraphicsItem(DElement *element) const +QGraphicsItem *DiagramSceneModel::graphicsItem(DElement *element) const { - return _element_to_item_map.value(element); + return m_elementToItemMap.value(element); } -QGraphicsItem *DiagramSceneModel::getGraphicsItem(const Uid &uid) const +QGraphicsItem *DiagramSceneModel::graphicsItem(const Uid &uid) const { - return _element_to_item_map.value(_diagram_controller->findElement(uid, _diagram)); + return m_elementToItemMap.value(m_diagramController->findElement(uid, m_diagram)); } bool DiagramSceneModel::isSelectedItem(QGraphicsItem *item) const { - return _selected_items.contains(item); + return m_selectedItems.contains(item); } -DElement *DiagramSceneModel::getElement(QGraphicsItem *item) const +DElement *DiagramSceneModel::element(QGraphicsItem *item) const { - return _item_to_element_map.value(item); + return m_itemToElementMap.value(item); } bool DiagramSceneModel::isElementEditable(const DElement *element) const { - IEditable *editable = dynamic_cast<IEditable *>(_element_to_item_map.value(element)); + IEditable *editable = dynamic_cast<IEditable *>(m_elementToItemMap.value(element)); return editable != 0 && editable->isEditable(); } void DiagramSceneModel::selectAllElements() { - foreach (QGraphicsItem *item, _graphics_items) { + foreach (QGraphicsItem *item, m_graphicsItems) item->setSelected(true); - } } void DiagramSceneModel::selectElement(DElement *element) { - QGraphicsItem *select_item = _element_to_item_map.value(element); - foreach (QGraphicsItem *item, _selected_items) { - if (item != select_item) { + QGraphicsItem *selectItem = m_elementToItemMap.value(element); + foreach (QGraphicsItem *item, m_selectedItems) { + if (item != selectItem) item->setSelected(false); - } - } - if (select_item) { - select_item->setSelected(true); } + if (selectItem) + selectItem->setSelected(true); } void DiagramSceneModel::editElement(DElement *element) { - IEditable *editable = dynamic_cast<IEditable *>(_element_to_item_map.value(element)); - if (editable != 0 && editable->isEditable()) { + IEditable *editable = dynamic_cast<IEditable *>(m_elementToItemMap.value(element)); + if (editable != 0 && editable->isEditable()) editable->edit(); - } } void DiagramSceneModel::copyToClipboard() { - QMimeData *mime_data = new QMimeData(); + QMimeData *mimeData = new QMimeData(); // Selections would also render to the clipboard - _graphics_scene->clearSelection(); + m_graphicsScene->clearSelection(); removeExtraSceneItems(); - QRectF scene_bounding_rect = _graphics_scene->itemsBoundingRect(); + QRectF sceneBoundingRect = m_graphicsScene->itemsBoundingRect(); { // Create the image with the size of the shrunk scene - const int scale_factor = 4; + const int scaleFactor = 4; const int border = 4; - const int base_dpi = 75; - const int dots_per_meter = 10000 * base_dpi / 254; - QSize image_size = scene_bounding_rect.size().toSize(); - image_size += QSize(2 * border, 2 * border); - image_size *= scale_factor; - QImage image(image_size, QImage::Format_ARGB32); - image.setDotsPerMeterX(dots_per_meter * scale_factor); - image.setDotsPerMeterY(dots_per_meter * scale_factor); + const int baseDpi = 75; + const int dotsPerMeter = 10000 * baseDpi / 254; + QSize imageSize = sceneBoundingRect.size().toSize(); + imageSize += QSize(2 * border, 2 * border); + imageSize *= scaleFactor; + QImage image(imageSize, QImage::Format_ARGB32); + image.setDotsPerMeterX(dotsPerMeter * scaleFactor); + image.setDotsPerMeterY(dotsPerMeter * scaleFactor); image.fill(Qt::white); QPainter painter; painter.begin(&image); painter.setRenderHint(QPainter::Antialiasing); - _graphics_scene->render(&painter, + m_graphicsScene->render(&painter, QRectF(border, border, - painter.device()->width() - 2 * border, painter.device()->height() - 2 * border), - scene_bounding_rect); + painter.device()->width() - 2 * border, + painter.device()->height() - 2 * border), + sceneBoundingRect); painter.end(); - mime_data->setImageData(image); + mimeData->setImageData(image); } #ifdef USE_PDF_CLIPBOARD { - const double scale_factor = 1.0; + const double scaleFactor = 1.0; const double border = 5; - const double base_dpi = 100; - const double dots_per_mm = 25.4 / base_dpi; - - QBuffer pdf_buffer; - pdf_buffer.open(QIODevice::WriteOnly); - - QPdfWriter pdf_writer(&pdf_buffer); - QSizeF page_size = scene_bounding_rect.size(); - page_size += QSizeF(2.0 * border, 2.0 * border); - page_size *= scale_factor; - pdf_writer.setPageSize(QPdfWriter::Custom); - pdf_writer.setPageSizeMM(page_size * dots_per_mm); - - QPainter pdf_painter; - pdf_painter.begin(&pdf_writer); - _graphics_scene->render(&pdf_painter, + const double baseDpi = 100; + const double dotsPerMm = 25.4 / baseDpi; + + QBuffer pdfBuffer; + pdfBuffer.open(QIODevice::WriteOnly); + + QPdfWriter pdfWriter(&pdfBuffer); + QSizeF pageSize = sceneBoundingRect.size(); + pageSize += QSizeF(2.0 * border, 2.0 * border); + pageSize *= scaleFactor; + pdfWriter.setPageSize(QPdfWriter::Custom); + pdfWriter.setPageSizeMM(pageSize * dotsPerMm); + + QPainter pdfPainter; + pdfPainter.begin(&pdfWriter); + m_graphicsScene->render(&pdfPainter, QRectF(border, border, - pdf_painter.device()->width() - 2 * border, pdf_painter.device()->height() - 2 * border), - scene_bounding_rect); - pdf_painter.end(); - pdf_buffer.close(); - mime_data->setData(QStringLiteral("application/pdf"), pdf_buffer.buffer()); + pdfPainter.device()->width() - 2 * border, + pdfPainter.device()->height() - 2 * border), + sceneBoundingRect); + pdfPainter.end(); + pdfBuffer.close(); + mimeData->setData(QStringLiteral("application/pdf"), pdfBuffer.buffer()); } #endif #ifdef USE_SVG_CLIPBOARD { - QBuffer svg_buffer; - QSvgGenerator svg_generator; - svg_generator.setOutputDevice(&svg_buffer); - QSize svg_scene_size = scene_bounding_rect.size().toSize(); - svg_generator.setSize(svg_scene_size); - svg_generator.setViewBox(QRect(QPoint(0,0), svg_scene_size)); - QPainter svg_painter; - svg_painter.begin(&svg_generator); - svg_painter.setRenderHint(QPainter::Antialiasing); - _graphics_scene->render(&svg_painter, + QBuffer svgBuffer; + QSvgGenerator svgGenerator; + svgGenerator.setOutputDevice(&svgBuffer); + QSize svgSceneSize = sceneBoundingRect.size().toSize(); + svgGenerator.setSize(svgSceneSize); + svgGenerator.setViewBox(QRect(QPoint(0,0), svgSceneSize)); + QPainter svgPainter; + svgPainter.begin(&svgGenerator); + svgPainter.setRenderHint(QPainter::Antialiasing); + m_graphicsScene->render(&svgPainter, QRectF(border, border, - painter.device()->width() - 2 * border, painter.device()->height() - 2 * border), - scene_bounding_rect); - svg_painter.end(); - mime_data->setData(QStringLiteral("image/svg+xml"), svg_buffer.buffer()); + painter.device()->width() - 2 * border, + painter.device()->height() - 2 * border), + sceneBoundingRect); + svgPainter.end(); + mimeData->setData(QStringLiteral("image/svg+xml"), svgBuffer.buffer()); } #endif -#ifdef USE_EMF_CLIPBOARD - // TODO implement emf clipboard -#endif - - QApplication::clipboard()->setMimeData(mime_data, QClipboard::Clipboard); + QApplication::clipboard()->setMimeData(mimeData, QClipboard::Clipboard); addExtraSceneItems(); } -bool DiagramSceneModel::exportPng(const QString &file_name) +bool DiagramSceneModel::exportPng(const QString &fileName) { removeExtraSceneItems(); - QRectF scene_bounding_rect = _graphics_scene->itemsBoundingRect(); + QRectF sceneBoundingRect = m_graphicsScene->itemsBoundingRect(); // Create the image with the size of the shrunk scene - const int scale_factor = 1; + const int scaleFactor = 1; const int border = 5; - const int base_dpi = 75; - const int dots_per_meter = 10000 * base_dpi / 254; + const int baseDpi = 75; + const int dotsPerMeter = 10000 * baseDpi / 254; - QSize image_size = scene_bounding_rect.size().toSize(); - image_size += QSize(2 * border, 2 * border); - image_size *= scale_factor; + QSize imageSize = sceneBoundingRect.size().toSize(); + imageSize += QSize(2 * border, 2 * border); + imageSize *= scaleFactor; - QImage image(image_size, QImage::Format_ARGB32); - image.setDotsPerMeterX(dots_per_meter * scale_factor); - image.setDotsPerMeterY(dots_per_meter * scale_factor); + QImage image(imageSize, QImage::Format_ARGB32); + image.setDotsPerMeterX(dotsPerMeter * scaleFactor); + image.setDotsPerMeterY(dotsPerMeter * scaleFactor); image.fill(Qt::white); QPainter painter; painter.begin(&image); painter.setRenderHint(QPainter::Antialiasing); - _graphics_scene->render(&painter, + m_graphicsScene->render(&painter, QRectF(border, border, - painter.device()->width() - 2 * border, painter.device()->height() - 2 * border), - scene_bounding_rect); + painter.device()->width() - 2 * border, + painter.device()->height() - 2 * border), + sceneBoundingRect); painter.end(); - bool success = image.save(file_name); - + bool success = image.save(fileName); addExtraSceneItems(); - return success; } -void DiagramSceneModel::exportPdf(const QString &file_name) +void DiagramSceneModel::exportPdf(const QString &fileName) { removeExtraSceneItems(); - QRectF scene_bounding_rect = _graphics_scene->itemsBoundingRect(); + QRectF sceneBoundingRect = m_graphicsScene->itemsBoundingRect(); - const double scale_factor = 1.0; + const double scaleFactor = 1.0; const double border = 5; - const double base_dpi = 100; - const double dots_per_mm = 25.4 / base_dpi; + const double baseDpi = 100; + const double dotsPerMm = 25.4 / baseDpi; - QSizeF page_size = scene_bounding_rect.size(); - page_size += QSizeF(2.0 * border, 2.0 * border); - page_size *= scale_factor; + QSizeF pageSize = sceneBoundingRect.size(); + pageSize += QSizeF(2.0 * border, 2.0 * border); + pageSize *= scaleFactor; - QPdfWriter pdf_writer(file_name); - pdf_writer.setPageSize(QPdfWriter::Custom); - pdf_writer.setPageSizeMM(page_size * dots_per_mm); + QPdfWriter pdfWriter(fileName); + pdfWriter.setPageSize(QPdfWriter::Custom); + pdfWriter.setPageSizeMM(pageSize * dotsPerMm); - QPainter pdf_painter; - pdf_painter.begin(&pdf_writer); - _graphics_scene->render(&pdf_painter, + QPainter pdfPainter; + pdfPainter.begin(&pdfWriter); + m_graphicsScene->render(&pdfPainter, QRectF(border, border, - pdf_painter.device()->width() - 2 * border, pdf_painter.device()->height() - 2 * border), - scene_bounding_rect); - pdf_painter.end(); + pdfPainter.device()->width() - 2 * border, + pdfPainter.device()->height() - 2 * border), + sceneBoundingRect); + pdfPainter.end(); addExtraSceneItems(); } -void DiagramSceneModel::selectItem(QGraphicsItem *item, bool multi_select) +void DiagramSceneModel::selectItem(QGraphicsItem *item, bool multiSelect) { - if (!multi_select) { + if (!multiSelect) { if (!item->isSelected()) { - foreach (QGraphicsItem *selected_item, _selected_items) { - if (selected_item != item) { - selected_item->setSelected(false); - } + foreach (QGraphicsItem *selectedItem, m_selectedItems) { + if (selectedItem != item) + selectedItem->setSelected(false); } item->setSelected(true); } @@ -463,90 +452,85 @@ void DiagramSceneModel::selectItem(QGraphicsItem *item, bool multi_select) } } -void DiagramSceneModel::moveSelectedItems(QGraphicsItem *grabbed_item, const QPointF &delta) +void DiagramSceneModel::moveSelectedItems(QGraphicsItem *grabbedItem, const QPointF &delta) { - Q_UNUSED(grabbed_item); + Q_UNUSED(grabbedItem); if (delta != QPointF(0.0, 0.0)) { - foreach (QGraphicsItem *item, _selected_items) { - if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) { + foreach (QGraphicsItem *item, m_selectedItems) { + if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) moveable->moveDelta(delta); - } } - foreach (QGraphicsItem *item, _secondary_selected_items) { - if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) { + foreach (QGraphicsItem *item, m_secondarySelectedItems) { + if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) moveable->moveDelta(delta); - } } } } void DiagramSceneModel::alignSelectedItemsPositionOnRaster() { - foreach (QGraphicsItem *item, _selected_items) { - if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) { + foreach (QGraphicsItem *item, m_selectedItems) { + if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) moveable->alignItemPositionToRaster(RASTER_WIDTH, RASTER_HEIGHT); - } } - foreach (QGraphicsItem *item, _secondary_selected_items) { - if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) { + foreach (QGraphicsItem *item, m_secondarySelectedItems) { + if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) moveable->alignItemPositionToRaster(RASTER_WIDTH, RASTER_HEIGHT); - } } } void DiagramSceneModel::onDoubleClickedItem(QGraphicsItem *item) { - DElement *element = _item_to_element_map.value(item); - if (item) { - _diagram_scene_controller->getElementTasks()->openElement(element, _diagram); - } + DElement *element = m_itemToElementMap.value(item); + if (item) + m_diagramSceneController->elementTasks()->openElement(element, m_diagram); } -QList<QGraphicsItem *> DiagramSceneModel::collectCollidingObjectItems(const QGraphicsItem *item, CollidingMode colliding_mode) const +QList<QGraphicsItem *> DiagramSceneModel::collectCollidingObjectItems(const QGraphicsItem *item, + CollidingMode collidingMode) const { - QList<QGraphicsItem *> colliding_items; + QList<QGraphicsItem *> collidingItems; const IResizable *resizable = dynamic_cast<const IResizable *>(item); - if (!resizable) { - return colliding_items; - } - QRectF rect = resizable->getRect(); - rect.translate(resizable->getPos()); - - switch (colliding_mode) { - case COLLIDING_INNER_ITEMS: - foreach (QGraphicsItem *candidate, _graphics_items) { - if (const IResizable *candidate_resizable = dynamic_cast<const IResizable *>(candidate)) { - QRectF candidate_rect = candidate_resizable->getRect(); - candidate_rect.translate(candidate_resizable->getPos()); - if (candidate_rect.left() >= rect.left() && candidate_rect.right() <= rect.right() - && candidate_rect.top() >= rect.top() && candidate_rect.bottom() <= rect.bottom()) { - colliding_items.append(candidate); + if (!resizable) + return collidingItems; + QRectF rect = resizable->rect(); + rect.translate(resizable->pos()); + + switch (collidingMode) { + case CollidingInnerItems: + foreach (QGraphicsItem *candidate, m_graphicsItems) { + if (const IResizable *candidateResizable = dynamic_cast<const IResizable *>(candidate)) { + QRectF candidateRect = candidateResizable->rect(); + candidateRect.translate(candidateResizable->pos()); + if (candidateRect.left() >= rect.left() && candidateRect.right() <= rect.right() + && candidateRect.top() >= rect.top() && candidateRect.bottom() <= rect.bottom()) { + collidingItems.append(candidate); } } } break; - case COLLIDING_ITEMS: - foreach (QGraphicsItem *candidate, _graphics_items) { - if (const IResizable *candidate_resizable = dynamic_cast<const IResizable *>(candidate)) { - QRectF candidate_rect = candidate_resizable->getRect(); - candidate_rect.translate(candidate_resizable->getPos()); - if (candidate_rect.left() <= rect.right() && candidate_rect.right() >= rect.left() - && candidate_rect.top() <= rect.bottom() && candidate_rect.bottom() >= rect.top()) { - colliding_items.append(candidate); + case CollidingItems: + foreach (QGraphicsItem *candidate, m_graphicsItems) { + if (const IResizable *candidateResizable = dynamic_cast<const IResizable *>(candidate)) { + QRectF candidateRect = candidateResizable->rect(); + candidateRect.translate(candidateResizable->pos()); + if (candidateRect.left() <= rect.right() && candidateRect.right() >= rect.left() + && candidateRect.top() <= rect.bottom() && candidateRect.bottom() >= rect.top()) { + collidingItems.append(candidate); } } } break; - case COLLIDING_OUTER_ITEMS: - foreach (QGraphicsItem *candidate, _graphics_items) { - if (const IResizable *candidate_resizable = dynamic_cast<const IResizable *>(candidate)) { - QRectF candidate_rect = candidate_resizable->getRect(); - candidate_rect.translate(candidate_resizable->getPos()); - if (candidate_rect.left() <= rect.left() && candidate_rect.right() >= rect.right() - && candidate_rect.top() <= rect.top() && candidate_rect.bottom() >= rect.bottom()) { - colliding_items.append(candidate); + case CollidingOuterItems: + foreach (QGraphicsItem *candidate, m_graphicsItems) { + if (const IResizable *candidateResizable = dynamic_cast<const IResizable *>(candidate)) { + QRectF candidateRect = candidateResizable->rect(); + candidateRect.translate(candidateResizable->pos()); + if (candidateRect.left() <= rect.left() && candidateRect.right() >= rect.right() + && candidateRect.top() <= rect.top() && candidateRect.bottom() >= rect.bottom()) { + collidingItems.append(candidate); } } } @@ -554,18 +538,18 @@ QList<QGraphicsItem *> DiagramSceneModel::collectCollidingObjectItems(const QGra default: QMT_CHECK(false); } - return colliding_items; + return collidingItems; } void DiagramSceneModel::sceneActivated() { - emit diagramSceneActivated(_diagram); + emit diagramSceneActivated(m_diagram); } void DiagramSceneModel::mousePressEvent(QGraphicsSceneMouseEvent *event) { - updateFocusItem(QSet<QGraphicsItem *>::fromList(_graphics_scene->selectedItems())); - _latch_controller->mousePressEventLatching(event); + updateFocusItem(QSet<QGraphicsItem *>::fromList(m_graphicsScene->selectedItems())); + m_latchController->mousePressEventLatching(event); mousePressEventReparenting(event); } @@ -577,7 +561,7 @@ void DiagramSceneModel::mousePressEventReparenting(QGraphicsSceneMouseEvent *eve void DiagramSceneModel::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - _latch_controller->mouseMoveEventLatching(event); + m_latchController->mouseMoveEventLatching(event); mouseMoveEventReparenting(event); } @@ -585,246 +569,239 @@ void DiagramSceneModel::mouseMoveEventReparenting(QGraphicsSceneMouseEvent *even { if (event->modifiers() & Qt::AltModifier) { // TODO show move cursor only if elements can be moved to underlaying element - foreach (QGraphicsView *view, _graphics_scene->views()) { + foreach (QGraphicsView *view, m_graphicsScene->views()) { // TODO find a better cursor that signals "move to this package" view->setCursor(QCursor(Qt::OpenHandCursor)); } } else { - foreach (QGraphicsView *view, _graphics_scene->views()) { + foreach (QGraphicsView *view, m_graphicsScene->views()) view->unsetCursor(); - } } } void DiagramSceneModel::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - _latch_controller->mouseReleaseEventLatching(event); + m_latchController->mouseReleaseEventLatching(event); mouseReleaseEventReparenting(event); } void DiagramSceneModel::mouseReleaseEventReparenting(QGraphicsSceneMouseEvent *event) { if (event->modifiers() & Qt::AltModifier) { - ModelController *model_controller = getDiagramController()->getModelController(); - MPackage *new_owner = 0; - QSet<QGraphicsItem *> selected_item_set = _graphics_scene->selectedItems().toSet(); - QList<QGraphicsItem *> items_under_mouse = _graphics_scene->items(event->scenePos()); - foreach (QGraphicsItem *item, items_under_mouse) { - if (!selected_item_set.contains(item)) { + ModelController *modelController = diagramController()->modelController(); + MPackage *newOwner = 0; + QSet<QGraphicsItem *> selectedItemSet = m_graphicsScene->selectedItems().toSet(); + QList<QGraphicsItem *> itemsUnderMouse = m_graphicsScene->items(event->scenePos()); + foreach (QGraphicsItem *item, itemsUnderMouse) { + if (!selectedItemSet.contains(item)) { // the item may be any graphics item not matching to a DElement - DElement *element = _item_to_element_map.value(item); - if (element && element->getModelUid().isValid()) { - new_owner = model_controller->findElement<MPackage>(element->getModelUid()); - } + DElement *element = m_itemToElementMap.value(item); + if (element && element->modelUid().isValid()) + newOwner = modelController->findElement<MPackage>(element->modelUid()); } - if (new_owner) { + if (newOwner) break; - } } - if (new_owner) { - foreach (QGraphicsItem *item, _graphics_scene->selectedItems()) { - DElement *element = _item_to_element_map.value(item); + if (newOwner) { + foreach (QGraphicsItem *item, m_graphicsScene->selectedItems()) { + DElement *element = m_itemToElementMap.value(item); QMT_CHECK(element); - if (element->getModelUid().isValid()) { - MObject *model_object = model_controller->findObject(element->getModelUid()); - if (model_object) { - if (new_owner != model_object->getOwner()) { - model_controller->moveObject(new_owner, model_object); - } + if (element->modelUid().isValid()) { + MObject *modelObject = modelController->findObject(element->modelUid()); + if (modelObject) { + if (newOwner != modelObject->owner()) + modelController->moveObject(newOwner, modelObject); } } } } } - foreach (QGraphicsView *view, _graphics_scene->views()) { + foreach (QGraphicsView *view, m_graphicsScene->views()) view->unsetCursor(); - } } void DiagramSceneModel::onBeginResetAllDiagrams() { - onBeginResetDiagram(_diagram); + onBeginResetDiagram(m_diagram); } void DiagramSceneModel::onEndResetAllDiagrams() { - onEndResetDiagram(_diagram); + onEndResetDiagram(m_diagram); } void DiagramSceneModel::onBeginResetDiagram(const MDiagram *diagram) { - QMT_CHECK(_busy == NOT_BUSY); - _busy = RESET_DIAGRAM; - if (diagram == _diagram) { + QMT_CHECK(m_busyState == NotBusy); + m_busyState = ResetDiagram; + if (diagram == m_diagram) clearGraphicsScene(); - } } void DiagramSceneModel::onEndResetDiagram(const MDiagram *diagram) { - QMT_CHECK(_busy == RESET_DIAGRAM); - if (diagram == _diagram) { - QMT_CHECK(_graphics_items.size() == 0); + QMT_CHECK(m_busyState == ResetDiagram); + if (diagram == m_diagram) { + QMT_CHECK(m_graphicsItems.size() == 0); // create all items and update graphics item from element initially - foreach (DElement *element, diagram->getDiagramElements()) { + foreach (DElement *element, diagram->diagramElements()) { QGraphicsItem *item = createGraphicsItem(element); - _graphics_items.append(item); + m_graphicsItems.append(item); updateGraphicsItem(item, element); } // invalidate scene - _graphics_scene->invalidate(); + m_graphicsScene->invalidate(); // update graphics items again so every item gets a correct list of colliding items - foreach (DElement *element, diagram->getDiagramElements()) { - updateGraphicsItem(_element_to_item_map.value(element), element); - } + foreach (DElement *element, diagram->diagramElements()) + updateGraphicsItem(m_elementToItemMap.value(element), element); } - _busy = NOT_BUSY; + m_busyState = NotBusy; } void DiagramSceneModel::onBeginUpdateElement(int row, const MDiagram *diagram) { Q_UNUSED(row); Q_UNUSED(diagram); - QMT_CHECK(_busy == NOT_BUSY); - _busy = UPDATE_ELEMENT; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = UpdateElement; } void DiagramSceneModel::onEndUpdateElement(int row, const MDiagram *diagram) { - QMT_CHECK(_busy == UPDATE_ELEMENT); - if (diagram == _diagram) { - QGraphicsItem *item = _graphics_items.at(row); - updateGraphicsItem(item, diagram->getDiagramElements().at(row)); + QMT_CHECK(m_busyState == UpdateElement); + if (diagram == m_diagram) { + QGraphicsItem *item = m_graphicsItems.at(row); + updateGraphicsItem(item, diagram->diagramElements().at(row)); } - _busy = NOT_BUSY; + m_busyState = NotBusy; } void DiagramSceneModel::onBeginInsertElement(int row, const MDiagram *diagram) { Q_UNUSED(row); Q_UNUSED(diagram); - QMT_CHECK(_busy == NOT_BUSY); - _busy = INSERT_ELEMENT; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = InsertElement; } void DiagramSceneModel::onEndInsertElement(int row, const MDiagram *diagram) { - QMT_CHECK(_busy == INSERT_ELEMENT); + QMT_CHECK(m_busyState == InsertElement); QGraphicsItem *item = 0; - if (diagram == _diagram) { - DElement *element = diagram->getDiagramElements().at(row); + if (diagram == m_diagram) { + DElement *element = diagram->diagramElements().at(row); item = createGraphicsItem(element); - _graphics_items.insert(row, item); + m_graphicsItems.insert(row, item); updateGraphicsItem(item, element); - _graphics_scene->invalidate(); + m_graphicsScene->invalidate(); updateGraphicsItem(item, element); } - _busy = NOT_BUSY; + m_busyState = NotBusy; } void DiagramSceneModel::onBeginRemoveElement(int row, const MDiagram *diagram) { - QMT_CHECK(_busy == NOT_BUSY); - if (diagram == _diagram) { - QGraphicsItem *item = _graphics_items.takeAt(row); - deleteGraphicsItem(item, diagram->getDiagramElements().at(row)); + QMT_CHECK(m_busyState == NotBusy); + if (diagram == m_diagram) { + QGraphicsItem *item = m_graphicsItems.takeAt(row); + deleteGraphicsItem(item, diagram->diagramElements().at(row)); } - _busy = REMOVE_ELEMENT; + m_busyState = RemoveElement; } void DiagramSceneModel::onEndRemoveElement(int row, const MDiagram *diagram) { Q_UNUSED(row); Q_UNUSED(diagram); - QMT_CHECK(_busy == REMOVE_ELEMENT); - _busy = NOT_BUSY; + QMT_CHECK(m_busyState == RemoveElement); + m_busyState = NotBusy; } void DiagramSceneModel::onSelectionChanged() { - bool selection_changed = false; + bool selectionChanged = false; // collect and update all primary selected items (selected by user) - QSet<QGraphicsItem *> new_selected_items = QSet<QGraphicsItem *>::fromList(_graphics_scene->selectedItems()); - updateFocusItem(new_selected_items); - foreach (QGraphicsItem *item, _selected_items) { - if (!new_selected_items.contains(item)) { - DElement *element = _item_to_element_map.value(item); + QSet<QGraphicsItem *> newSelectedItems = QSet<QGraphicsItem *>::fromList(m_graphicsScene->selectedItems()); + updateFocusItem(newSelectedItems); + foreach (QGraphicsItem *item, m_selectedItems) { + if (!newSelectedItems.contains(item)) { + DElement *element = m_itemToElementMap.value(item); updateGraphicsItem(item, element); - selection_changed = true; + selectionChanged = true; } } - foreach (QGraphicsItem *item, new_selected_items) { - if (!_selected_items.contains(item)) { - DElement *element = _item_to_element_map.value(item); + foreach (QGraphicsItem *item, newSelectedItems) { + if (!m_selectedItems.contains(item)) { + DElement *element = m_itemToElementMap.value(item); updateGraphicsItem(item, element); - selection_changed = true; + selectionChanged = true; } } - _selected_items = new_selected_items; + m_selectedItems = newSelectedItems; // collect and update all secondary selected items - QSet<QGraphicsItem *> new_secondary_selected_items; + QSet<QGraphicsItem *> newSecondarySelectedItems; // select all contained objects secondarily - foreach (QGraphicsItem *selected_item, _selected_items) { - foreach (QGraphicsItem *item, collectCollidingObjectItems(selected_item, COLLIDING_INNER_ITEMS)) { + foreach (QGraphicsItem *selectedItem, m_selectedItems) { + foreach (QGraphicsItem *item, collectCollidingObjectItems(selectedItem, CollidingInnerItems)) { if (!item->isSelected() && dynamic_cast<ISelectable *>(item) != 0 - && item->collidesWithItem(selected_item, Qt::ContainsItemBoundingRect) - && isInFrontOf(item, selected_item)) { - QMT_CHECK(!_selected_items.contains(item)); - new_secondary_selected_items.insert(item); + && item->collidesWithItem(selectedItem, Qt::ContainsItemBoundingRect) + && isInFrontOf(item, selectedItem)) { + QMT_CHECK(!m_selectedItems.contains(item)); + newSecondarySelectedItems.insert(item); } } } // select all relations where both ends are primary or secondary selected - foreach (DElement *element, _diagram->getDiagramElements()) { + foreach (DElement *element, m_diagram->diagramElements()) { DRelation *relation = dynamic_cast<DRelation *>(element); if (relation) { - QGraphicsItem *relation_item = _element_to_item_map.value(relation); - QMT_CHECK(relation_item); - DObject *end_a_object = _diagram_controller->findElement<DObject>(relation->getEndA(), _diagram); - QMT_CHECK(end_a_object); - QGraphicsItem *end_a_item = _element_to_item_map.value(end_a_object); - QMT_CHECK(end_a_item); - DObject *end_b_object = _diagram_controller->findElement<DObject>(relation->getEndB(), _diagram); - QMT_CHECK(end_b_object); - QGraphicsItem *end_b_item = _element_to_item_map.value(end_b_object); - QMT_CHECK(end_b_item); - if (!relation_item->isSelected() - && (_selected_items.contains(end_a_item) || new_secondary_selected_items.contains(end_a_item)) - && (_selected_items.contains(end_b_item) || new_secondary_selected_items.contains(end_b_item))) { - QMT_CHECK(!_selected_items.contains(relation_item)); - new_secondary_selected_items.insert(relation_item); + QGraphicsItem *relationItem = m_elementToItemMap.value(relation); + QMT_CHECK(relationItem); + DObject *endAObject = m_diagramController->findElement<DObject>(relation->endAUid(), m_diagram); + QMT_CHECK(endAObject); + QGraphicsItem *endAItem = m_elementToItemMap.value(endAObject); + QMT_CHECK(endAItem); + DObject *endBObject = m_diagramController->findElement<DObject>(relation->endBUid(), m_diagram); + QMT_CHECK(endBObject); + QGraphicsItem *endBItem = m_elementToItemMap.value(endBObject); + QMT_CHECK(endBItem); + if (!relationItem->isSelected() + && (m_selectedItems.contains(endAItem) || newSecondarySelectedItems.contains(endAItem)) + && (m_selectedItems.contains(endBItem) || newSecondarySelectedItems.contains(endBItem))) { + QMT_CHECK(!m_selectedItems.contains(relationItem)); + newSecondarySelectedItems.insert(relationItem); } } } - foreach (QGraphicsItem *item, _secondary_selected_items) { - if (!new_secondary_selected_items.contains(item)) { + foreach (QGraphicsItem *item, m_secondarySelectedItems) { + if (!newSecondarySelectedItems.contains(item)) { ISelectable *selectable = dynamic_cast<ISelectable *>(item); QMT_CHECK(selectable); selectable->setSecondarySelected(false); - selection_changed = true; + selectionChanged = true; } } - foreach (QGraphicsItem *item, new_secondary_selected_items) { - if (!_secondary_selected_items.contains(item)) { + foreach (QGraphicsItem *item, newSecondarySelectedItems) { + if (!m_secondarySelectedItems.contains(item)) { ISelectable *selectable = dynamic_cast<ISelectable *>(item); QMT_CHECK(selectable); selectable->setSecondarySelected(true); - selection_changed = true; + selectionChanged = true; } } - _secondary_selected_items = new_secondary_selected_items; + m_secondarySelectedItems = newSecondarySelectedItems; - QMT_CHECK((_selected_items & _secondary_selected_items).isEmpty()); + QMT_CHECK((m_selectedItems & m_secondarySelectedItems).isEmpty()); - if (selection_changed) { - _diagram_controller->breakUndoChain(); - emit selectionChanged(_diagram); + if (selectionChanged) { + m_diagramController->breakUndoChain(); + emit selectionHasChanged(m_diagram); } } @@ -832,39 +809,39 @@ void DiagramSceneModel::clearGraphicsScene() { // save extra items from being deleted removeExtraSceneItems(); - _graphics_scene->clear(); + m_graphicsScene->clear(); addExtraSceneItems(); - _graphics_items.clear(); - _item_to_element_map.clear(); - _element_to_item_map.clear(); - _selected_items.clear(); - _secondary_selected_items.clear(); - _focus_item = 0; + m_graphicsItems.clear(); + m_itemToElementMap.clear(); + m_elementToItemMap.clear(); + m_selectedItems.clear(); + m_secondarySelectedItems.clear(); + m_focusItem = 0; } void DiagramSceneModel::removeExtraSceneItems() { - _latch_controller->removeFromGraphicsScene(_graphics_scene); - _graphics_scene->removeItem(_origin_item); + m_latchController->removeFromGraphicsScene(m_graphicsScene); + m_graphicsScene->removeItem(m_originItem); } void DiagramSceneModel::addExtraSceneItems() { - _graphics_scene->addItem(_origin_item); - _latch_controller->addToGraphicsScene(_graphics_scene); + m_graphicsScene->addItem(m_originItem); + m_latchController->addToGraphicsScene(m_graphicsScene); } QGraphicsItem *DiagramSceneModel::createGraphicsItem(DElement *element) { QMT_CHECK(element); - QMT_CHECK(!_element_to_item_map.contains(element)); + QMT_CHECK(!m_elementToItemMap.contains(element)); CreationVisitor visitor(this); element->accept(&visitor); - QGraphicsItem *item = visitor.getCreatedGraphicsItem(); - _item_to_element_map.insert(item, element); - _element_to_item_map.insert(element, item); - _graphics_scene->addItem(item); + QGraphicsItem *item = visitor.createdGraphicsItem(); + m_itemToElementMap.insert(item, element); + m_elementToItemMap.insert(element, item); + m_graphicsScene->addItem(item); return item; } @@ -879,123 +856,117 @@ void DiagramSceneModel::updateGraphicsItem(QGraphicsItem *item, DElement *elemen void DiagramSceneModel::deleteGraphicsItem(QGraphicsItem *item, DElement *element) { - QMT_CHECK(_element_to_item_map.contains(element)); - QMT_CHECK(_item_to_element_map.contains(item)); - if (item == _focus_item) { + QMT_CHECK(m_elementToItemMap.contains(element)); + QMT_CHECK(m_itemToElementMap.contains(item)); + if (item == m_focusItem) unsetFocusItem(); - } - _graphics_scene->removeItem(item); - _element_to_item_map.remove(element); - _item_to_element_map.remove(item); - _selected_items.remove(item); - _secondary_selected_items.remove(item); + m_graphicsScene->removeItem(item); + m_elementToItemMap.remove(element); + m_itemToElementMap.remove(item); + m_selectedItems.remove(item); + m_secondarySelectedItems.remove(item); delete item; } -void DiagramSceneModel::updateFocusItem(const QSet<QGraphicsItem *> &selected_items) +void DiagramSceneModel::updateFocusItem(const QSet<QGraphicsItem *> &selectedItems) { - QGraphicsItem *mouse_grabber_item = _graphics_scene->mouseGrabberItem(); - QGraphicsItem *focus_item = 0; + QGraphicsItem *mouseGrabberItem = m_graphicsScene->mouseGrabberItem(); + QGraphicsItem *focusItem = 0; ISelectable *selectable = 0; - if (mouse_grabber_item && selected_items.contains(mouse_grabber_item)) { - selectable = dynamic_cast<ISelectable *>(mouse_grabber_item); - if (selectable) { - focus_item = mouse_grabber_item; - } + if (mouseGrabberItem && selectedItems.contains(mouseGrabberItem)) { + selectable = dynamic_cast<ISelectable *>(mouseGrabberItem); + if (selectable) + focusItem = mouseGrabberItem; } - if (focus_item && focus_item != _focus_item) { + if (focusItem && focusItem != m_focusItem) { unsetFocusItem(); selectable->setFocusSelected(true); - _focus_item = focus_item; - } else if (_focus_item && !selected_items.contains(_focus_item)) { + m_focusItem = focusItem; + } else if (m_focusItem && !selectedItems.contains(m_focusItem)) { unsetFocusItem(); } } void DiagramSceneModel::unsetFocusItem() { - if (_focus_item) { - if (ISelectable *old_selectable = dynamic_cast<ISelectable *>(_focus_item)) { - old_selectable->setFocusSelected(false); - } else { + if (m_focusItem) { + if (ISelectable *oldSelectable = dynamic_cast<ISelectable *>(m_focusItem)) + oldSelectable->setFocusSelected(false); + else QMT_CHECK(false); - } - _focus_item = 0; + m_focusItem = 0; } } -bool DiagramSceneModel::isInFrontOf(const QGraphicsItem *front_item, const QGraphicsItem *back_item) +bool DiagramSceneModel::isInFrontOf(const QGraphicsItem *frontItem, const QGraphicsItem *backItem) { - QMT_CHECK(front_item); - QMT_CHECK(back_item); + QMT_CHECK(frontItem); + QMT_CHECK(backItem); // shortcut for usual case of root items - if (front_item->parentItem() == 0 && back_item->parentItem() == 0) { - foreach (const QGraphicsItem *item, _graphics_scene->items()) { - if (item == front_item) { + if (frontItem->parentItem() == 0 && backItem->parentItem() == 0) { + foreach (const QGraphicsItem *item, m_graphicsScene->items()) { + if (item == frontItem) return true; - } else if (item == back_item) { + else if (item == backItem) return false; - } } QMT_CHECK(false); return false; } // collect all anchestors of front item - QList<const QGraphicsItem *> front_stack; - const QGraphicsItem *iterator = front_item; + QList<const QGraphicsItem *> frontStack; + const QGraphicsItem *iterator = frontItem; while (iterator != 0) { - front_stack.append(iterator); + frontStack.append(iterator); iterator = iterator->parentItem(); } // collect all anchestors of back item - QList<const QGraphicsItem *> back_stack; - iterator = back_item; + QList<const QGraphicsItem *> backStack; + iterator = backItem; while (iterator != 0) { - back_stack.append(iterator); + backStack.append(iterator); iterator = iterator->parentItem(); } // search lowest common anchestor - int front_index = front_stack.size() - 1; - int back_index = back_stack.size() - 1; - while (front_index >= 0 && back_index >= 0 && front_stack.at(front_index) == back_stack.at(back_index)) { - --front_index; - --back_index; + int frontIndex = frontStack.size() - 1; + int backIndex = backStack.size() - 1; + while (frontIndex >= 0 && backIndex >= 0 && frontStack.at(frontIndex) == backStack.at(backIndex)) { + --frontIndex; + --backIndex; } - if (front_index < 0 && back_index < 0) { - QMT_CHECK(front_item == back_item); + if (frontIndex < 0 && backIndex < 0) { + QMT_CHECK(frontItem == backItem); return false; - } else if (front_index < 0) { + } else if (frontIndex < 0) { // front item is higher in hierarchy and thus behind back item return false; - } else if (back_index < 0) { + } else if (backIndex < 0) { // back item is higher in hierarchy and thus in behind front item return true; } else { - front_item = front_stack.at(front_index); - back_item = back_stack.at(back_index); - QMT_CHECK(front_item != back_item); + frontItem = frontStack.at(frontIndex); + backItem = backStack.at(backIndex); + QMT_CHECK(frontItem != backItem); - if (front_item->zValue() != back_item->zValue()) { - return front_item->zValue() > back_item->zValue(); + if (frontItem->zValue() != backItem->zValue()) { + return frontItem->zValue() > backItem->zValue(); } else { QList<QGraphicsItem *> children; - if (front_index + 1 < front_stack.size()) { - children = front_stack.at(front_index + 1)->childItems(); - } else { - children = _graphics_scene->items(Qt::AscendingOrder); - } + if (frontIndex + 1 < frontStack.size()) + children = frontStack.at(frontIndex + 1)->childItems(); + else + children = m_graphicsScene->items(Qt::AscendingOrder); foreach (const QGraphicsItem *item, children) { - if (item == front_item) { + if (item == frontItem) return false; - } else if (item == back_item) { + else if (item == backItem) return true; - } } QMT_CHECK(false); return false; @@ -1003,4 +974,4 @@ bool DiagramSceneModel::isInFrontOf(const QGraphicsItem *front_item, const QGrap } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.h index 7e671f6a0d..505b1a4181 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodel.h @@ -45,7 +45,6 @@ class QGraphicsScene; class QGraphicsSceneMouseEvent; QT_END_NAMESPACE - namespace qmt { class DiagramGraphicsScene; @@ -61,8 +60,7 @@ class MDiagram; class DElement; class DObject; -class QMT_EXPORT DiagramSceneModel : - public QObject +class QMT_EXPORT DiagramSceneModel : public QObject { Q_OBJECT @@ -74,209 +72,119 @@ class QMT_EXPORT DiagramSceneModel : friend class DiagramGraphicsScene; public: - enum CollidingMode { - COLLIDING_INNER_ITEMS, - COLLIDING_ITEMS, - COLLIDING_OUTER_ITEMS + CollidingInnerItems, + CollidingItems, + CollidingOuterItems }; - -public: - DiagramSceneModel(QObject *parent = 0); - ~DiagramSceneModel(); signals: - void diagramSceneActivated(const MDiagram *diagram); - - void selectionChanged(const MDiagram *diagram); + void selectionHasChanged(const MDiagram *diagram); public: - - DiagramController *getDiagramController() const { return _diagram_controller; } - - void setDiagramController(DiagramController *diagram_controller); - - DiagramSceneController *getDiagramSceneController() const { return _diagram_scene_controller; } - - void setDiagramSceneController(DiagramSceneController *diagram_scene_controller); - - StyleController *getStyleController() const { return _style_controller; } - - void setStyleController(StyleController *style_controller); - - StereotypeController *getStereotypeController() const { return _stereotype_controller; } - - void setStereotypeController(StereotypeController *stereotype_controller); - - MDiagram *getDiagram() const { return _diagram; } - + DiagramController *diagramController() const { return m_diagramController; } + void setDiagramController(DiagramController *diagramController); + DiagramSceneController *diagramSceneController() const { return m_diagramSceneController; } + void setDiagramSceneController(DiagramSceneController *diagramSceneController); + StyleController *styleController() const { return m_styleController; } + void setStyleController(StyleController *styleController); + StereotypeController *stereotypeController() const { return m_stereotypeController; } + void setStereotypeController(StereotypeController *stereotypeController); + MDiagram *diagram() const { return m_diagram; } void setDiagram(MDiagram *diagram); - - QGraphicsScene *getGraphicsScene() const; - -public: + QGraphicsScene *graphicsScene() const; bool hasSelection() const; - bool hasMultiObjectsSelection() const; + DSelection selectedElements() const; + DElement *findTopmostElement(const QPointF &scenePos) const; - DSelection getSelectedElements() const; - - DElement *findTopmostElement(const QPointF &scene_pos) const; - -public: - - QList<QGraphicsItem *> getGraphicsItems() const { return _graphics_items; } - - QGraphicsItem *getGraphicsItem(DElement *element) const; - - QGraphicsItem *getGraphicsItem(const Uid &uid) const; - - QGraphicsItem *getFocusItem() const { return _focus_item; } - + QList<QGraphicsItem *> graphicsItems() const { return m_graphicsItems; } + QGraphicsItem *graphicsItem(DElement *element) const; + QGraphicsItem *graphicsItem(const Uid &uid) const; + QGraphicsItem *focusItem() const { return m_focusItem; } bool isSelectedItem(QGraphicsItem *item) const; - - QSet<QGraphicsItem *> getSelectedItems() const { return _selected_items; } - - DElement *getElement(QGraphicsItem *item) const; - + QSet<QGraphicsItem *> selectedItems() const { return m_selectedItems; } + DElement *element(QGraphicsItem *item) const; bool isElementEditable(const DElement *element) const; -public: - void selectAllElements(); - void selectElement(DElement *element); - void editElement(DElement *element); - void copyToClipboard(); + bool exportPng(const QString &fileName); + void exportPdf(const QString &fileName); - bool exportPng(const QString &file_name); - - void exportPdf(const QString &file_name); - -public: - - void selectItem(QGraphicsItem *item, bool multi_select); - - void moveSelectedItems(QGraphicsItem *grabbed_item, const QPointF &delta); - + void selectItem(QGraphicsItem *item, bool multiSelect); + void moveSelectedItems(QGraphicsItem *grabbedItem, const QPointF &delta); void alignSelectedItemsPositionOnRaster(); - void onDoubleClickedItem(QGraphicsItem *item); - - QList<QGraphicsItem *> collectCollidingObjectItems(const QGraphicsItem *item, CollidingMode colliding_mode) const; + QList<QGraphicsItem *> collectCollidingObjectItems(const QGraphicsItem *item, + CollidingMode collidingMode) const; private: - void sceneActivated(); - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mousePressEventReparenting(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEventReparenting(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEventReparenting(QGraphicsSceneMouseEvent *event); private slots: - void onBeginResetAllDiagrams(); - void onEndResetAllDiagrams(); - void onBeginResetDiagram(const MDiagram *diagram); - void onEndResetDiagram(const MDiagram *diagram); - void onBeginUpdateElement(int row, const MDiagram *diagram); - void onEndUpdateElement(int row, const MDiagram *diagram); - void onBeginInsertElement(int row, const MDiagram *diagram); - void onEndInsertElement(int row, const MDiagram *diagram); - void onBeginRemoveElement(int row, const MDiagram *diagram); - void onEndRemoveElement(int row, const MDiagram *diagram); -private slots: - void onSelectionChanged(); private: - void clearGraphicsScene(); - void removeExtraSceneItems(); - void addExtraSceneItems(); - QGraphicsItem *createGraphicsItem(DElement *element); - void updateGraphicsItem(QGraphicsItem *item, DElement *element); - void deleteGraphicsItem(QGraphicsItem *item, DElement *element); - - void updateFocusItem(const QSet<QGraphicsItem *> &selected_items); - + void updateFocusItem(const QSet<QGraphicsItem *> &selectedItems); void unsetFocusItem(); - - bool isInFrontOf(const QGraphicsItem *front_item, const QGraphicsItem *back_item); - -private: + bool isInFrontOf(const QGraphicsItem *frontItem, const QGraphicsItem *backItem); enum Busy { - NOT_BUSY, - RESET_DIAGRAM, - UPDATE_ELEMENT, - INSERT_ELEMENT, - REMOVE_ELEMENT + NotBusy, + ResetDiagram, + UpdateElement, + InsertElement, + RemoveElement }; -private: - - DiagramController *_diagram_controller; - - DiagramSceneController *_diagram_scene_controller; - - StyleController *_style_controller; - - StereotypeController *_stereotype_controller; - - MDiagram *_diagram; - - DiagramGraphicsScene *_graphics_scene; - - LatchController *_latch_controller; - - QList<QGraphicsItem *> _graphics_items; - - QHash<const QGraphicsItem *, DElement *> _item_to_element_map; - - QHash<const DElement *, QGraphicsItem *> _element_to_item_map; - - QSet<QGraphicsItem *> _selected_items; - - QSet<QGraphicsItem *> _secondary_selected_items; - - Busy _busy; - - OriginItem *_origin_item; - - QGraphicsItem *_focus_item; + DiagramController *m_diagramController; + DiagramSceneController *m_diagramSceneController; + StyleController *m_styleController; + StereotypeController *m_stereotypeController; + MDiagram *m_diagram; + DiagramGraphicsScene *m_graphicsScene; + LatchController *m_latchController; + QList<QGraphicsItem *> m_graphicsItems; + QHash<const QGraphicsItem *, DElement *> m_itemToElementMap; + QHash<const DElement *, QGraphicsItem *> m_elementToItemMap; + QSet<QGraphicsItem *> m_selectedItems; + QSet<QGraphicsItem *> m_secondarySelectedItems; + Busy m_busyState; + OriginItem *m_originItem; + QGraphicsItem *m_focusItem; }; -} +} // namespace qmt #endif // QMT_DIAGRAMSCENEMODEL_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.cpp index cdd7d75591..b09d5af95d 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.cpp @@ -55,12 +55,11 @@ #include "qmt/diagram/dboundary.h" #include "qmt/infrastructure/qmtassert.h" - namespace qmt { -DiagramSceneModel::CreationVisitor::CreationVisitor(DiagramSceneModel *diagram_scene_model) - : _diagram_scene_model(diagram_scene_model), - _graphics_item(0) +DiagramSceneModel::CreationVisitor::CreationVisitor(DiagramSceneModel *diagramSceneModel) + : m_diagramSceneModel(diagramSceneModel), + m_graphicsItem(0) { } @@ -78,38 +77,38 @@ void DiagramSceneModel::CreationVisitor::visitDObject(DObject *object) void DiagramSceneModel::CreationVisitor::visitDPackage(DPackage *package) { - QMT_CHECK(!_graphics_item); - _graphics_item = new PackageItem(package, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new PackageItem(package, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDClass(DClass *klass) { - QMT_CHECK(!_graphics_item); - _graphics_item = new ClassItem(klass, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new ClassItem(klass, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDComponent(DComponent *component) { - QMT_CHECK(!_graphics_item); - _graphics_item = new ComponentItem(component, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new ComponentItem(component, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDDiagram(DDiagram *diagram) { - QMT_CHECK(!_graphics_item); - _graphics_item = new DiagramItem(diagram, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new DiagramItem(diagram, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDItem(DItem *item) { - QMT_CHECK(!_graphics_item); - _graphics_item = new ItemItem(item, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new ItemItem(item, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDRelation(DRelation *relation) { - QMT_CHECK(!_graphics_item); - _graphics_item = new RelationItem(relation, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new RelationItem(relation, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDInheritance(DInheritance *inheritance) @@ -124,28 +123,27 @@ void DiagramSceneModel::CreationVisitor::visitDDependency(DDependency *dependenc void DiagramSceneModel::CreationVisitor::visitDAssociation(DAssociation *association) { - QMT_CHECK(!_graphics_item); - _graphics_item = new AssociationItem(association, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new AssociationItem(association, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDAnnotation(DAnnotation *annotation) { - QMT_CHECK(!_graphics_item); - _graphics_item = new AnnotationItem(annotation, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new AnnotationItem(annotation, m_diagramSceneModel); } void DiagramSceneModel::CreationVisitor::visitDBoundary(DBoundary *boundary) { - QMT_CHECK(!_graphics_item); - _graphics_item = new BoundaryItem(boundary, _diagram_scene_model); + QMT_CHECK(!m_graphicsItem); + m_graphicsItem = new BoundaryItem(boundary, m_diagramSceneModel); } - - -DiagramSceneModel::UpdateVisitor::UpdateVisitor(QGraphicsItem *item, DiagramSceneModel *diagram_scene_model, DElement *related_element) - : _graphics_item(item), - _diagram_scene_model(diagram_scene_model), - _related_element(related_element) +DiagramSceneModel::UpdateVisitor::UpdateVisitor(QGraphicsItem *item, DiagramSceneModel *diagramSceneModel, + DElement *relatedElement) + : m_graphicsItem(item), + m_diagramSceneModel(diagramSceneModel), + m_relatedElement(relatedElement) { } @@ -157,13 +155,13 @@ void DiagramSceneModel::UpdateVisitor::visitDElement(DElement *element) void DiagramSceneModel::UpdateVisitor::visitDObject(DObject *object) { - if (_related_element == 0) { + if (m_relatedElement == 0) { // update all related relations - foreach (QGraphicsItem *item, _diagram_scene_model->_graphics_items) { - DElement *element = _diagram_scene_model->_item_to_element_map.value(item); + foreach (QGraphicsItem *item, m_diagramSceneModel->m_graphicsItems) { + DElement *element = m_diagramSceneModel->m_itemToElementMap.value(item); QMT_CHECK(element); if (dynamic_cast<DRelation *>(element) != 0) { - UpdateVisitor visitor(item, _diagram_scene_model, object); + UpdateVisitor visitor(item, m_diagramSceneModel, object); element->accept(&visitor); } } @@ -172,13 +170,13 @@ void DiagramSceneModel::UpdateVisitor::visitDObject(DObject *object) void DiagramSceneModel::UpdateVisitor::visitDPackage(DPackage *package) { - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - if (_related_element == 0) { - PackageItem *package_item = qgraphicsitem_cast<PackageItem *>(_graphics_item); - QMT_CHECK(package_item); - QMT_CHECK(package_item->getObject() == package); - package_item->update(); + if (m_relatedElement == 0) { + PackageItem *packageItem = qgraphicsitem_cast<PackageItem *>(m_graphicsItem); + QMT_CHECK(packageItem); + QMT_CHECK(packageItem->object() == package); + packageItem->update(); } visitDObject(package); @@ -186,13 +184,13 @@ void DiagramSceneModel::UpdateVisitor::visitDPackage(DPackage *package) void DiagramSceneModel::UpdateVisitor::visitDClass(DClass *klass) { - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - if (_related_element == 0) { - ClassItem *class_item = qgraphicsitem_cast<ClassItem *>(_graphics_item); - QMT_CHECK(class_item); - QMT_CHECK(class_item->getObject() == klass); - class_item->update(); + if (m_relatedElement == 0) { + ClassItem *classItem = qgraphicsitem_cast<ClassItem *>(m_graphicsItem); + QMT_CHECK(classItem); + QMT_CHECK(classItem->object() == klass); + classItem->update(); } visitDObject(klass); @@ -200,13 +198,13 @@ void DiagramSceneModel::UpdateVisitor::visitDClass(DClass *klass) void DiagramSceneModel::UpdateVisitor::visitDComponent(DComponent *component) { - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - if (_related_element == 0) { - ComponentItem *component_item = qgraphicsitem_cast<ComponentItem *>(_graphics_item); - QMT_CHECK(component_item); - QMT_CHECK(component_item->getObject() == component); - component_item->update(); + if (m_relatedElement == 0) { + ComponentItem *componentItem = qgraphicsitem_cast<ComponentItem *>(m_graphicsItem); + QMT_CHECK(componentItem); + QMT_CHECK(componentItem->object() == component); + componentItem->update(); } visitDObject(component); @@ -214,13 +212,13 @@ void DiagramSceneModel::UpdateVisitor::visitDComponent(DComponent *component) void DiagramSceneModel::UpdateVisitor::visitDDiagram(DDiagram *diagram) { - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - if (_related_element == 0) { - DiagramItem *document_item = qgraphicsitem_cast<DiagramItem *>(_graphics_item); - QMT_CHECK(document_item); - QMT_CHECK(document_item->getObject() == diagram); - document_item->update(); + if (m_relatedElement == 0) { + DiagramItem *documentItem = qgraphicsitem_cast<DiagramItem *>(m_graphicsItem); + QMT_CHECK(documentItem); + QMT_CHECK(documentItem->object() == diagram); + documentItem->update(); } visitDObject(diagram); @@ -228,13 +226,13 @@ void DiagramSceneModel::UpdateVisitor::visitDDiagram(DDiagram *diagram) void DiagramSceneModel::UpdateVisitor::visitDItem(DItem *item) { - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - if (_related_element == 0) { - ItemItem *item_item = qgraphicsitem_cast<ItemItem *>(_graphics_item); - QMT_CHECK(item_item); - QMT_CHECK(item_item->getObject() == item); - item_item->update(); + if (m_relatedElement == 0) { + ItemItem *itemItem = qgraphicsitem_cast<ItemItem *>(m_graphicsItem); + QMT_CHECK(itemItem); + QMT_CHECK(itemItem->object() == item); + itemItem->update(); } visitDObject(item); @@ -242,13 +240,15 @@ void DiagramSceneModel::UpdateVisitor::visitDItem(DItem *item) void DiagramSceneModel::UpdateVisitor::visitDRelation(DRelation *relation) { - QMT_CHECK(_graphics_item); - - if (_related_element == 0 || _related_element->getUid() == relation->getEndA() || _related_element->getUid() == relation->getEndB()) { - RelationItem *relation_item = qgraphicsitem_cast<RelationItem *>(_graphics_item); - QMT_CHECK(relation_item); - QMT_CHECK(relation_item->getRelation() == relation); - relation_item->update(); + QMT_CHECK(m_graphicsItem); + + if (m_relatedElement == 0 + || m_relatedElement->uid() == relation->endAUid() + || m_relatedElement->uid() == relation->endBUid()) { + RelationItem *relationItem = qgraphicsitem_cast<RelationItem *>(m_graphicsItem); + QMT_CHECK(relationItem); + QMT_CHECK(relationItem->relation() == relation); + relationItem->update(); } } @@ -270,23 +270,23 @@ void DiagramSceneModel::UpdateVisitor::visitDAssociation(DAssociation *associati void DiagramSceneModel::UpdateVisitor::visitDAnnotation(DAnnotation *annotation) { Q_UNUSED(annotation); // avoid warning in release mode - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - AnnotationItem *annotation_item = qgraphicsitem_cast<AnnotationItem *>(_graphics_item); - QMT_CHECK(annotation_item); - QMT_CHECK(annotation_item->getAnnotation() == annotation); - annotation_item->update(); + AnnotationItem *annotationItem = qgraphicsitem_cast<AnnotationItem *>(m_graphicsItem); + QMT_CHECK(annotationItem); + QMT_CHECK(annotationItem->annotation() == annotation); + annotationItem->update(); } void DiagramSceneModel::UpdateVisitor::visitDBoundary(DBoundary *boundary) { Q_UNUSED(boundary); // avoid warning in release mode - QMT_CHECK(_graphics_item); + QMT_CHECK(m_graphicsItem); - BoundaryItem *boundary_item = qgraphicsitem_cast<BoundaryItem *>(_graphics_item); - QMT_CHECK(boundary_item); - QMT_CHECK(boundary_item->getBoundary() == boundary); - boundary_item->update(); + BoundaryItem *boundaryItem = qgraphicsitem_cast<BoundaryItem *>(m_graphicsItem); + QMT_CHECK(boundaryItem); + QMT_CHECK(boundaryItem->boundary() == boundary); + boundaryItem->update(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.h index 192eddaf09..47cf2ab11c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/diagramscenemodelitemvisitors.h @@ -37,96 +37,58 @@ namespace qmt { -class QMT_EXPORT DiagramSceneModel::CreationVisitor : - public DVisitor +class QMT_EXPORT DiagramSceneModel::CreationVisitor : public DVisitor { public: + CreationVisitor(DiagramSceneModel *diagramSceneModel); - CreationVisitor(DiagramSceneModel *diagram_scene_model); - -public: - - QGraphicsItem *getCreatedGraphicsItem() const { return _graphics_item; } - -public: + QGraphicsItem *createdGraphicsItem() const { return m_graphicsItem; } void visitDElement(DElement *element); - void visitDObject(DObject *object); - void visitDPackage(DPackage *package); - void visitDClass(DClass *klass); - void visitDComponent(DComponent *component); - void visitDDiagram(DDiagram *diagram); - void visitDItem(DItem *item); - void visitDRelation(DRelation *relation); - void visitDInheritance(DInheritance *inheritance); - void visitDDependency(DDependency *dependency); - void visitDAssociation(DAssociation *association); - void visitDAnnotation(DAnnotation *annotation); - void visitDBoundary(DBoundary *boundary); private: - - DiagramSceneModel *_diagram_scene_model; - - QGraphicsItem *_graphics_item; + DiagramSceneModel *m_diagramSceneModel; + QGraphicsItem *m_graphicsItem; }; -class DiagramSceneModel::UpdateVisitor : - public DVisitor +class DiagramSceneModel::UpdateVisitor : public DVisitor { public: - - UpdateVisitor(QGraphicsItem *item, DiagramSceneModel *diagram_scene_model, DElement *related_element = 0); - -public: + UpdateVisitor(QGraphicsItem *item, DiagramSceneModel *diagramSceneModel, + DElement *relatedElement = 0); void visitDElement(DElement *element); - void visitDObject(DObject *object); - void visitDPackage(DPackage *package); - void visitDClass(DClass *klass); - void visitDComponent(DComponent *component); - void visitDDiagram(DDiagram *diagram); - void visitDItem(DItem *item); - void visitDRelation(DRelation *relation); - void visitDInheritance(DInheritance *inheritance); - void visitDDependency(DDependency *dependency); - void visitDAssociation(DAssociation *association); - void visitDAnnotation(DAnnotation *annotation); - void visitDBoundary(DBoundary *boundary); private: - - QGraphicsItem *_graphics_item; - - DiagramSceneModel *_diagram_scene_model; - - DElement *_related_element; + QGraphicsItem *m_graphicsItem; + DiagramSceneModel *m_diagramSceneModel; + DElement *m_relatedElement; }; -} +} // namespace qmt #endif // QMT_DIAGRAMSCENEMODELITEMVISITORS_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.cpp index f2b1c6a4ba..04d3f69d57 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.cpp @@ -49,16 +49,13 @@ #include <QGraphicsSceneMouseEvent> #include <QCoreApplication> - namespace qmt { static const qreal MINIMUM_TEXT_WIDTH = 20.0; static const qreal CONTENTS_BORDER_VERTICAL = 4.0; static const qreal CONTENTS_BORDER_HORIZONTAL = 4.0; - -class AnnotationItem::AnnotationTextItem : - public QGraphicsTextItem +class AnnotationItem::AnnotationTextItem : public QGraphicsTextItem { public: AnnotationTextItem(QGraphicsItem *parent) @@ -76,18 +73,17 @@ public: } }; - -AnnotationItem::AnnotationItem(DAnnotation *annotation, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +AnnotationItem::AnnotationItem(DAnnotation *annotation, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsItem(parent), - _annotation(annotation), - _diagram_scene_model(diagram_scene_model), - _secondary_selected(false), - _focus_selected(false), - _selection_marker(0), - _no_text_item(0), - _text_item(0), - _on_update(false), - _on_changed(false) + m_annotation(annotation), + m_diagramSceneModel(diagramSceneModel), + m_isSecondarySelected(false), + m_isFocusSelected(false), + m_selectionMarker(0), + m_noTextItem(0), + m_textItem(0), + m_isUpdating(false), + m_isChanged(false) { setFlags(QGraphicsItem::ItemIsSelectable); } @@ -110,124 +106,121 @@ void AnnotationItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op void AnnotationItem::update() { - QMT_CHECK(!_on_update); - _on_update = true; + QMT_CHECK(!m_isUpdating); + m_isUpdating = true; prepareGeometryChange(); - const Style *style = getAdaptedStyle(); + const Style *style = adaptedStyle(); // text - if (!_text_item) { - _text_item = new AnnotationTextItem(this); - _text_item->setTextInteractionFlags(Qt::TextEditorInteraction); - _text_item->installSceneEventFilter(this); - QObject::connect(_text_item->document(), &QTextDocument::contentsChanged, _text_item, + if (!m_textItem) { + m_textItem = new AnnotationTextItem(this); + m_textItem->setTextInteractionFlags(Qt::TextEditorInteraction); + m_textItem->installSceneEventFilter(this); + QObject::connect(m_textItem->document(), &QTextDocument::contentsChanged, m_textItem, [=]() { this->onContentsChanged(); } ); } - _text_item->setFont(style->getNormalFont()); - _text_item->setDefaultTextColor(style->getTextBrush().color()); - if (!_on_changed) { - _text_item->setPlainText(getAnnotation()->getText()); - } + m_textItem->setFont(style->normalFont()); + m_textItem->setDefaultTextColor(style->textBrush().color()); + if (!m_isChanged) + m_textItem->setPlainText(annotation()->text()); // item shown if annotation has no text and is not selected - if (!_no_text_item) { - _no_text_item = new QGraphicsRectItem(this); - } - _no_text_item->setPen(QPen(QBrush(QColor(192, 192, 192)), 1, Qt::DashDotLine)); - _no_text_item->setVisible(!isSelected() && _text_item->document()->isEmpty()); + if (!m_noTextItem) + m_noTextItem = new QGraphicsRectItem(this); + m_noTextItem->setPen(QPen(QBrush(QColor(192, 192, 192)), 1, Qt::DashDotLine)); + m_noTextItem->setVisible(!isSelected() && m_textItem->document()->isEmpty()); updateSelectionMarker(); - updateGeometry(); - setZValue(ANNOTATION_ITEMS_ZVALUE); - _on_update = false; + m_isUpdating = false; } -QPointF AnnotationItem::getPos() const +QPointF AnnotationItem::pos() const { - return _annotation->getPos(); + return m_annotation->pos(); } -QRectF AnnotationItem::getRect() const +QRectF AnnotationItem::rect() const { - return _annotation->getRect(); + return m_annotation->rect(); } -QSizeF AnnotationItem::getMinimumSize() const +QSizeF AnnotationItem::minimumSize() const { return calcMinimumGeometry(); } -void AnnotationItem::setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta) +void AnnotationItem::setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, + const QPointF &topLeftDelta, const QPointF &bottomRightDelta) { - QPointF new_pos = original_pos; - QRectF new_rect = original_rect; - GeometryUtilities::adjustPosAndRect(&new_pos, &new_rect, top_left_delta, bottom_right_delta, QPointF(0.0, 0.0)); - if (new_pos != _annotation->getPos() || new_rect != _annotation->getRect()) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_annotation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _annotation->setPos(new_pos); - if (new_rect.size() != _annotation->getRect().size()) { - _annotation->setAutoSize(false); - } - _annotation->setRect(new_rect); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_annotation, _diagram_scene_model->getDiagram(), false); + QPointF newPos = originalPos; + QRectF newRect = originalRect; + GeometryUtilities::adjustPosAndRect(&newPos, &newRect, topLeftDelta, bottomRightDelta, QPointF(0.0, 0.0)); + if (newPos != m_annotation->pos() || newRect != m_annotation->rect()) { + m_diagramSceneModel->diagramController()->startUpdateElement(m_annotation, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_annotation->setPos(newPos); + if (newRect.size() != m_annotation->rect().size()) + m_annotation->setAutoSized(false); + m_annotation->setRect(newRect); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_annotation, m_diagramSceneModel->diagram(), false); } } -void AnnotationItem::alignItemSizeToRaster(Side adjust_horizontal_side, Side adjust_vertical_side, double raster_width, double raster_height) +void AnnotationItem::alignItemSizeToRaster(Side adjustHorizontalSide, Side adjustVerticalSide, + double rasterWidth, double rasterHeight) { - Q_UNUSED(adjust_horizontal_side); - Q_UNUSED(adjust_vertical_side); - Q_UNUSED(raster_width); - Q_UNUSED(raster_height); + Q_UNUSED(adjustHorizontalSide); + Q_UNUSED(adjustVerticalSide); + Q_UNUSED(rasterWidth); + Q_UNUSED(rasterHeight); } void AnnotationItem::moveDelta(const QPointF &delta) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_annotation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _annotation->setPos(_annotation->getPos() + delta); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_annotation, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_annotation, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_annotation->setPos(m_annotation->pos() + delta); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_annotation, m_diagramSceneModel->diagram(), false); } -void AnnotationItem::alignItemPositionToRaster(double raster_width, double raster_height) +void AnnotationItem::alignItemPositionToRaster(double rasterWidth, double rasterHeight) { - QPointF pos = _annotation->getPos(); - QRectF rect = _annotation->getRect(); - QPointF top_left = pos + rect.topLeft(); + QPointF pos = m_annotation->pos(); + QRectF rect = m_annotation->rect(); + QPointF topLeft = pos + rect.topLeft(); - double left_delta = qRound(top_left.x() / raster_width) * raster_width - top_left.x(); - double top_delta = qRound(top_left.y() / raster_height) * raster_height - top_left.y(); - QPointF top_left_delta(left_delta, top_delta); + double leftDelta = qRound(topLeft.x() / rasterWidth) * rasterWidth - topLeft.x(); + double topDelta = qRound(topLeft.y() / rasterHeight) * rasterHeight - topLeft.y(); + QPointF topLeftDelta(leftDelta, topDelta); - setPosAndRect(pos, rect, top_left_delta, top_left_delta); + setPosAndRect(pos, rect, topLeftDelta, topLeftDelta); } bool AnnotationItem::isSecondarySelected() const { - return _secondary_selected; + return m_isSecondarySelected; } -void AnnotationItem::setSecondarySelected(bool secondary_selected) +void AnnotationItem::setSecondarySelected(bool secondarySelected) { - if (_secondary_selected != secondary_selected) { - _secondary_selected = secondary_selected; + if (m_isSecondarySelected != secondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } bool AnnotationItem::isFocusSelected() const { - return _focus_selected; + return m_isFocusSelected; } -void AnnotationItem::setFocusSelected(bool focus_selected) +void AnnotationItem::setFocusSelected(bool focusSelected) { - if (_focus_selected != focus_selected) { - _focus_selected = focus_selected; + if (m_isFocusSelected != focusSelected) { + m_isFocusSelected = focusSelected; update(); } } @@ -239,71 +232,64 @@ bool AnnotationItem::isEditable() const void AnnotationItem::edit() { - if (_text_item) { - _text_item->setFocus(); - } + if (m_textItem) + m_textItem->setFocus(); } void AnnotationItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) { - _diagram_scene_model->selectItem(this, event->modifiers() & Qt::ControlModifier); - } - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, QPointF(0.0, 0.0)); - } + if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) + m_diagramSceneModel->selectItem(this, event->modifiers() & Qt::ControlModifier); + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, QPointF(0.0, 0.0)); } void AnnotationItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - } + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); } void AnnotationItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) { - _diagram_scene_model->alignSelectedItemsPositionOnRaster(); - } + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); + if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) + m_diagramSceneModel->alignSelectedItemsPositionOnRaster(); } } void AnnotationItem::updateSelectionMarker() { - if (isSelected() || _secondary_selected) { - if (!_selection_marker) { - _selection_marker = new RectangularSelectionItem(this, this); - _selection_marker->setShowBorder(true); - _selection_marker->setFreedom(RectangularSelectionItem::FREEDOM_HORIZONTAL_ONLY); - } - _selection_marker->setSecondarySelected(isSelected() ? false : _secondary_selected); - } else if (_selection_marker) { - if (_selection_marker->scene()) { - _selection_marker->scene()->removeItem(_selection_marker); + if (isSelected() || m_isSecondarySelected) { + if (!m_selectionMarker) { + m_selectionMarker = new RectangularSelectionItem(this, this); + m_selectionMarker->setShowBorder(true); + m_selectionMarker->setFreedom(RectangularSelectionItem::FreedomHorizontalOnly); } - delete _selection_marker; - _selection_marker = 0; + m_selectionMarker->setSecondarySelected(isSelected() ? false : m_isSecondarySelected); + } else if (m_selectionMarker) { + if (m_selectionMarker->scene()) + m_selectionMarker->scene()->removeItem(m_selectionMarker); + delete m_selectionMarker; + m_selectionMarker = 0; } } -void AnnotationItem::updateSelectionMarkerGeometry(const QRectF &annotation_rect) +void AnnotationItem::updateSelectionMarkerGeometry(const QRectF &annotationRect) { - if (_selection_marker) { - _selection_marker->setRect(annotation_rect); - } + if (m_selectionMarker) + m_selectionMarker->setRect(annotationRect); } -const Style *AnnotationItem::getAdaptedStyle() +const Style *AnnotationItem::adaptedStyle() { - return _diagram_scene_model->getStyleController()->adaptAnnotationStyle(_annotation); + return m_diagramSceneModel->styleController()->adaptAnnotationStyle(m_annotation); } bool AnnotationItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event) { - if (watched == _text_item) { + if (watched == m_textItem) { if (event->type() == QEvent::FocusIn) { scene()->clearSelection(); setSelected(true); @@ -314,19 +300,19 @@ bool AnnotationItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event) void AnnotationItem::onContentsChanged() { - QMT_CHECK(!_on_changed); - _on_changed = true; - - if (!_on_update) { - QString plain_text = _text_item->toPlainText(); - if (_annotation->getText() != plain_text) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_annotation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MINOR); - _annotation->setText(plain_text); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_annotation, _diagram_scene_model->getDiagram(), false); + QMT_CHECK(!m_isChanged); + m_isChanged = true; + + if (!m_isUpdating) { + QString plainText = m_textItem->toPlainText(); + if (m_annotation->text() != plainText) { + m_diagramSceneModel->diagramController()->startUpdateElement(m_annotation, m_diagramSceneModel->diagram(), DiagramController::UpdateMinor); + m_annotation->setText(plainText); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_annotation, m_diagramSceneModel->diagram(), false); } } - _on_changed = false; + m_isChanged = false; } QSizeF AnnotationItem::calcMinimumGeometry() const @@ -334,11 +320,11 @@ QSizeF AnnotationItem::calcMinimumGeometry() const qreal width = MINIMUM_TEXT_WIDTH + 2 * CONTENTS_BORDER_HORIZONTAL; qreal height = 0.0; // irrelevant; cannot be modified by user and will always be overwritten - if (getAnnotation()->hasAutoSize()) { - if (_text_item) { - _text_item->setTextWidth(-1); - QSizeF text_size = _text_item->document()->size(); - width = text_size.width() + 2 * CONTENTS_BORDER_HORIZONTAL; + if (annotation()->isAutoSized()) { + if (m_textItem) { + m_textItem->setTextWidth(-1); + QSizeF textSize = m_textItem->document()->size(); + width = textSize.width() + 2 * CONTENTS_BORDER_HORIZONTAL; } } return QSizeF(width, height); @@ -352,19 +338,19 @@ void AnnotationItem::updateGeometry() qreal width = geometry.width(); qreal height = geometry.height(); - if (getAnnotation()->hasAutoSize()) { - if (_text_item) { - _text_item->setTextWidth(-1); - QSizeF text_size = _text_item->document()->size(); - width = text_size.width() + 2 * CONTENTS_BORDER_HORIZONTAL; - height = text_size.height() + 2 * CONTENTS_BORDER_VERTICAL; + if (annotation()->isAutoSized()) { + if (m_textItem) { + m_textItem->setTextWidth(-1); + QSizeF textSize = m_textItem->document()->size(); + width = textSize.width() + 2 * CONTENTS_BORDER_HORIZONTAL; + height = textSize.height() + 2 * CONTENTS_BORDER_VERTICAL; } } else { - QRectF rect = getAnnotation()->getRect(); + QRectF rect = annotation()->rect(); width = rect.width(); - if (_text_item) { - _text_item->setTextWidth(width - 2 * CONTENTS_BORDER_HORIZONTAL); - height = _text_item->document()->size().height() + 2 * CONTENTS_BORDER_VERTICAL; + if (m_textItem) { + m_textItem->setTextWidth(width - 2 * CONTENTS_BORDER_HORIZONTAL); + height = m_textItem->document()->size().height() + 2 * CONTENTS_BORDER_VERTICAL; } } @@ -372,24 +358,22 @@ void AnnotationItem::updateGeometry() double left = 0.0; double top = 0.0; - setPos(getAnnotation()->getPos()); + setPos(annotation()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getAnnotation()->setRect(rect); + annotation()->setRect(rect); - if (_no_text_item) { - _no_text_item->setRect(rect); - } + if (m_noTextItem) + m_noTextItem->setRect(rect); - if (_text_item) { - _text_item->setPos(left + CONTENTS_BORDER_HORIZONTAL, top + CONTENTS_BORDER_VERTICAL); - } + if (m_textItem) + m_textItem->setPos(left + CONTENTS_BORDER_HORIZONTAL, top + CONTENTS_BORDER_VERTICAL); updateSelectionMarkerGeometry(rect); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.h index b51b3e86c2..c91fa8575c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/annotationitem.h @@ -38,7 +38,6 @@ #include "qmt/diagram_scene/capabilities/selectable.h" #include "qmt/diagram_scene/capabilities/editable.h" - namespace qmt { class DAnnotation; @@ -46,7 +45,6 @@ class DiagramSceneModel; class RectangularSelectionItem; class Style; - class AnnotationItem : public QGraphicsItem, public IResizable, @@ -57,110 +55,67 @@ class AnnotationItem : class AnnotationTextItem; public: - - AnnotationItem(DAnnotation *annotation, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + AnnotationItem(DAnnotation *annotation, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~AnnotationItem(); -public: - - DAnnotation *getAnnotation() const { return _annotation; } - - DiagramSceneModel *getDiagramSceneModel() const { return _diagram_scene_model; } - -public: - + DAnnotation *annotation() const { return m_annotation; } + DiagramSceneModel *diagramSceneModel() const { return m_diagramSceneModel; } QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); -public: - virtual void update(); -public: - - QPointF getPos() const; - - QRectF getRect() const; - - QSizeF getMinimumSize() const; - - void setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta); - - void alignItemSizeToRaster(Side adjust_horizontal_side, Side adjust_vertical_side, double raster_width, double raster_height); + QPointF pos() const; + QRectF rect() const; + QSizeF minimumSize() const; -public: + void setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, + const QPointF &topLeftDelta, const QPointF &bottomRightDelta); + void alignItemSizeToRaster(Side adjustHorizontalSide, Side adjustVerticalSide, + double rasterWidth, double rasterHeight); void moveDelta(const QPointF &delta); - - void alignItemPositionToRaster(double raster_width, double raster_height); - -public: + void alignItemPositionToRaster(double rasterWidth, double rasterHeight); bool isSecondarySelected() const; - - void setSecondarySelected(bool secondary_selected); - + void setSecondarySelected(bool secondarySelected); bool isFocusSelected() const; - - void setFocusSelected(bool focus_selected); - -public: + void setFocusSelected(bool focusSelected); bool isEditable() const; - void edit(); protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); -protected: - void updateSelectionMarker(); - - void updateSelectionMarkerGeometry(const QRectF &annotation_rect); - - const Style *getAdaptedStyle(); + void updateSelectionMarkerGeometry(const QRectF &annotationRect); + const Style *adaptedStyle(); bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); private slots: - void onContentsChanged(); private: - QSizeF calcMinimumGeometry() const; - void updateGeometry(); -private: - - DAnnotation *_annotation; - - DiagramSceneModel *_diagram_scene_model; - - bool _secondary_selected; - - bool _focus_selected; - - RectangularSelectionItem *_selection_marker; - - QGraphicsRectItem *_no_text_item; - - AnnotationTextItem *_text_item; - - bool _on_update; - - bool _on_changed; + DAnnotation *m_annotation; + DiagramSceneModel *m_diagramSceneModel; + bool m_isSecondarySelected; + bool m_isFocusSelected; + RectangularSelectionItem *m_selectionMarker; + QGraphicsRectItem *m_noTextItem; + AnnotationTextItem *m_textItem; + bool m_isUpdating; + bool m_isChanged; }; -} +} // namespace qmt #endif // QMT_ANNOTATIONITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.cpp index d27a011dd5..568aa36968 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.cpp @@ -45,18 +45,16 @@ #include <QBrush> #include <QVector2D> #include <QPair> -#include <qdebug.h> - namespace qmt { -AssociationItem::AssociationItem(DAssociation *association, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : RelationItem(association, diagram_scene_model, parent), - _association(association), - _end_a_name(0), - _end_a_cardinality(0), - _end_b_name(0), - _end_b_cardinality(0) +AssociationItem::AssociationItem(DAssociation *association, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : RelationItem(association, diagramSceneModel, parent), + m_association(association), + m_endAName(0), + m_endACardinality(0), + m_endBName(0), + m_endBCardinality(0) { } @@ -68,114 +66,112 @@ void AssociationItem::update(const Style *style) { RelationItem::update(style); - updateEndLabels(_association->getA(), _association->getB(), &_end_a_name, &_end_a_cardinality, style); - updateEndLabels(_association->getB(), _association->getA(), &_end_b_name, &_end_b_cardinality, style); + updateEndLabels(m_association->endA(), m_association->endB(), &m_endAName, &m_endACardinality, style); + updateEndLabels(m_association->endB(), m_association->endA(), &m_endBName, &m_endBCardinality, style); - QMT_CHECK(_arrow); - QGraphicsItem *end_a_item = _diagram_scene_model->getGraphicsItem(_association->getEndA()); - QMT_CHECK(end_a_item); - placeEndLabels(_arrow->getFirstLineSegment(), _end_a_name, _end_a_cardinality, end_a_item, _arrow->getStartHeadLength()); - QGraphicsItem *end_b_item = _diagram_scene_model->getGraphicsItem(_association->getEndB()); - QMT_CHECK(end_b_item); - placeEndLabels(_arrow->getLastLineSegment(), _end_b_name, _end_b_cardinality, end_b_item, _arrow->getEndHeadLength()); + QMT_CHECK(m_arrow); + QGraphicsItem *endAItem = m_diagramSceneModel->graphicsItem(m_association->endAUid()); + QMT_CHECK(endAItem); + placeEndLabels(m_arrow->firstLineSegment(), m_endAName, m_endACardinality, endAItem, m_arrow->startHeadLength()); + QGraphicsItem *endBItem = m_diagramSceneModel->graphicsItem(m_association->endBUid()); + QMT_CHECK(endBItem); + placeEndLabels(m_arrow->lastLineSegment(), m_endBName, m_endBCardinality, endBItem, m_arrow->endHeadLength()); } -void AssociationItem::updateEndLabels(const DAssociationEnd &end, const DAssociationEnd &other_end, QGraphicsSimpleTextItem **end_name, QGraphicsSimpleTextItem **end_cardinality, const Style *style) +void AssociationItem::updateEndLabels(const DAssociationEnd &end, const DAssociationEnd &otherEnd, + QGraphicsSimpleTextItem **endName, QGraphicsSimpleTextItem **endCardinality, + const Style *style) { Q_UNUSED(end); - if (!other_end.getName().isEmpty()) { - if (!*end_name) { - *end_name = new QGraphicsSimpleTextItem(this); - } - (*end_name)->setFont(style->getSmallFont()); - (*end_name)->setBrush(style->getTextBrush()); - (*end_name)->setText(other_end.getName()); - } else if (*end_name) { - (*end_name)->scene()->removeItem(*end_name); - delete *end_name; - *end_name = 0; + if (!otherEnd.name().isEmpty()) { + if (!*endName) + *endName = new QGraphicsSimpleTextItem(this); + (*endName)->setFont(style->smallFont()); + (*endName)->setBrush(style->textBrush()); + (*endName)->setText(otherEnd.name()); + } else if (*endName) { + (*endName)->scene()->removeItem(*endName); + delete *endName; + *endName = 0; } - if (!other_end.getCardinality().isEmpty()) { - if (!*end_cardinality) { - *end_cardinality = new QGraphicsSimpleTextItem(this); - } - (*end_cardinality)->setFont(style->getSmallFont()); - (*end_cardinality)->setBrush(style->getTextBrush()); - (*end_cardinality)->setText(other_end.getCardinality()); - } else if (*end_cardinality) { - (*end_cardinality)->scene()->removeItem(*end_cardinality); - delete *end_cardinality; - *end_cardinality = 0; + if (!otherEnd.cardinality().isEmpty()) { + if (!*endCardinality) + *endCardinality = new QGraphicsSimpleTextItem(this); + (*endCardinality)->setFont(style->smallFont()); + (*endCardinality)->setBrush(style->textBrush()); + (*endCardinality)->setText(otherEnd.cardinality()); + } else if (*endCardinality) { + (*endCardinality)->scene()->removeItem(*endCardinality); + delete *endCardinality; + *endCardinality = 0; } } -void AssociationItem::placeEndLabels(const QLineF &line_segment, QGraphicsItem *end_name, QGraphicsItem *end_cardinality, QGraphicsItem *end_item, double head_length) +void AssociationItem::placeEndLabels(const QLineF &lineSegment, QGraphicsItem *endName, QGraphicsItem *endCardinality, + QGraphicsItem *endItem, double headLength) { - const double HEAD_OFFSET = head_length + 6.0; + const double HEAD_OFFSET = headLength + 6.0; const double SIDE_OFFSET = 4.0; - QPointF head_offset = QPointF(HEAD_OFFSET, 0); - QPointF side_offset = QPointF(0.0, SIDE_OFFSET); + QPointF headOffset = QPointF(HEAD_OFFSET, 0); + QPointF sideOffset = QPointF(0.0, SIDE_OFFSET); - double angle = GeometryUtilities::calcAngle(line_segment); + double angle = GeometryUtilities::calcAngle(lineSegment); if (angle >= -5 && angle <= 5) { - if (end_name) { - end_name->setPos(line_segment.p1() + head_offset + side_offset); - } - if (end_cardinality) { - end_cardinality->setPos(line_segment.p1() + head_offset - side_offset - end_cardinality->boundingRect().bottomLeft()); - } + if (endName) + endName->setPos(lineSegment.p1() + headOffset + sideOffset); + if (endCardinality) + endCardinality->setPos(lineSegment.p1() + headOffset - sideOffset + - endCardinality->boundingRect().bottomLeft()); } else if (angle <= -175 || angle >= 175) { - if (end_name) { - end_name->setPos(line_segment.p1() - head_offset + side_offset - end_name->boundingRect().topRight()); - } - if (end_cardinality) { - end_cardinality->setPos(line_segment.p1() - head_offset - side_offset - end_cardinality->boundingRect().bottomRight()); - } + if (endName) + endName->setPos(lineSegment.p1() - headOffset + sideOffset - endName->boundingRect().topRight()); + if (endCardinality) + endCardinality->setPos(lineSegment.p1() - headOffset + - sideOffset - endCardinality->boundingRect().bottomRight()); } else { QRectF rect; - if (end_cardinality) { - rect = end_cardinality->boundingRect(); - } - if (end_name) { - rect = rect.united(end_name->boundingRect().translated(rect.bottomLeft())); - } - - QPointF rect_placement; - GeometryUtilities::Side aligned_side = GeometryUtilities::SIDE_UNSPECIFIED; - - if (IIntersectionable *object_item = dynamic_cast<IIntersectionable *>(end_item)) { - QPointF intersection_point; - QLineF intersection_line; - - if (object_item->intersectShapeWithLine(GeometryUtilities::stretch(line_segment.translated(pos()), 2.0, 0.0), &intersection_point, &intersection_line)) { - if (!GeometryUtilities::placeRectAtLine(rect, line_segment, HEAD_OFFSET, SIDE_OFFSET, intersection_line, &rect_placement, &aligned_side)) { - rect_placement = intersection_point; + if (endCardinality) + rect = endCardinality->boundingRect(); + if (endName) + rect = rect.united(endName->boundingRect().translated(rect.bottomLeft())); + + QPointF rectPlacement; + GeometryUtilities::Side alignedSide = GeometryUtilities::SideUnspecified; + + if (IIntersectionable *objectItem = dynamic_cast<IIntersectionable *>(endItem)) { + QPointF intersectionPoint; + QLineF intersectionLine; + + if (objectItem->intersectShapeWithLine(GeometryUtilities::stretch(lineSegment.translated(pos()), 2.0, 0.0), + &intersectionPoint, &intersectionLine)) { + if (!GeometryUtilities::placeRectAtLine(rect, lineSegment, HEAD_OFFSET, SIDE_OFFSET, + intersectionLine, &rectPlacement, &alignedSide)) { + rectPlacement = intersectionPoint; } } else { - rect_placement = line_segment.p1(); + rectPlacement = lineSegment.p1(); } } else { - rect_placement = end_item->pos(); + rectPlacement = endItem->pos(); } - if (end_cardinality) { - if (aligned_side == GeometryUtilities::SIDE_RIGHT) { - end_cardinality->setPos(rect_placement + QPointF(rect.width() - end_cardinality->boundingRect().width(), 0.0)); - } else { - end_cardinality->setPos(rect_placement); - } - rect_placement += end_cardinality->boundingRect().bottomLeft(); + if (endCardinality) { + if (alignedSide == GeometryUtilities::SideRight) + endCardinality->setPos(rectPlacement + + QPointF(rect.width() - endCardinality->boundingRect().width(), 0.0)); + else + endCardinality->setPos(rectPlacement); + rectPlacement += endCardinality->boundingRect().bottomLeft(); } - if (end_name) { - if (aligned_side == GeometryUtilities::SIDE_RIGHT) { - end_name->setPos(rect_placement + QPointF(rect.width() - end_name->boundingRect().width(), 0.0)); - } else { - end_name->setPos(rect_placement); - } + if (endName) { + if (alignedSide == GeometryUtilities::SideRight) + endName->setPos(rectPlacement + QPointF(rect.width() - endName->boundingRect().width(), 0.0)); + else + endName->setPos(rectPlacement); } } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.h index 62a9336f2c..86d744e2c9 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/associationitem.h @@ -37,46 +37,36 @@ QT_BEGIN_NAMESPACE class QGraphicsSimpleTextItem; QT_END_NAMESPACE - namespace qmt { class DAssociation; class DAssociationEnd; - -class AssociationItem : - public RelationItem +class AssociationItem : public RelationItem { public: - - AssociationItem(DAssociation *association, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + AssociationItem(DAssociation *association, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~AssociationItem(); protected: - virtual void update(const Style *style); private: - - void updateEndLabels(const DAssociationEnd &end, const DAssociationEnd &other_end, QGraphicsSimpleTextItem **end_name, QGraphicsSimpleTextItem **end_cardinality, const Style *style); - - void placeEndLabels(const QLineF &line_segment, QGraphicsItem *end_name, QGraphicsItem *end_cardinality, QGraphicsItem *end_item, double head_length); - -private: - - DAssociation *_association; - - QGraphicsSimpleTextItem *_end_a_name; - - QGraphicsSimpleTextItem *_end_a_cardinality; - - QGraphicsSimpleTextItem *_end_b_name; - - QGraphicsSimpleTextItem *_end_b_cardinality; - + void updateEndLabels(const DAssociationEnd &end, const DAssociationEnd &otherEnd, + QGraphicsSimpleTextItem **endName, + QGraphicsSimpleTextItem **endCardinality, const Style *style); + void placeEndLabels(const QLineF &lineSegment, QGraphicsItem *endName, + QGraphicsItem *endCardinality, + QGraphicsItem *endItem, double headLength); + + DAssociation *m_association; + QGraphicsSimpleTextItem *m_endAName; + QGraphicsSimpleTextItem *m_endACardinality; + QGraphicsSimpleTextItem *m_endBName; + QGraphicsSimpleTextItem *m_endBCardinality; }; -} +} // namespace qmt #endif // QMT_GRAPHICSASSOCIATIONITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.cpp index f9ca5f31d8..bc217dbc48 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.cpp @@ -50,7 +50,6 @@ #include <QGraphicsSceneMouseEvent> #include <QCoreApplication> - namespace qmt { static const qreal MINIMUM_INNER_WIDTH = 22.0; @@ -58,9 +57,7 @@ static const qreal MINIMUM_INNER_HEIGHT = 22.0; static const qreal CONTENTS_BORDER_VERTICAL = 4.0; static const qreal CONTENTS_BORDER_HORIZONTAL = 4.0; - -class BoundaryItem::BoundaryTextItem : - public QGraphicsTextItem +class BoundaryItem::BoundaryTextItem : public QGraphicsTextItem { public: BoundaryTextItem(QGraphicsItem *parent) @@ -78,19 +75,18 @@ public: } }; - -BoundaryItem::BoundaryItem(DBoundary *boundary, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +BoundaryItem::BoundaryItem(DBoundary *boundary, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsItem(parent), - _boundary(boundary), - _diagram_scene_model(diagram_scene_model), - _secondary_selected(false), - _focus_selected(false), - _selection_marker(0), - _border_item(0), - _no_text_item(0), - _text_item(0), - _on_update(false), - _on_changed(false) + m_boundary(boundary), + m_diagramSceneModel(diagramSceneModel), + m_isSecondarySelected(false), + m_isFocusSelected(false), + m_selectionMarker(0), + m_borderItem(0), + m_noTextItem(0), + m_textItem(0), + m_isUpdating(false), + m_isChanged(false) { setFlags(QGraphicsItem::ItemIsSelectable); } @@ -113,174 +109,170 @@ void BoundaryItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti void BoundaryItem::update() { - QMT_CHECK(!_on_update); - _on_update = true; + QMT_CHECK(!m_isUpdating); + m_isUpdating = true; prepareGeometryChange(); - const Style *style = getAdaptedStyle(); + const Style *style = adaptedStyle(); // text - if (!_text_item) { - _text_item = new BoundaryTextItem(this); - _text_item->setTextInteractionFlags(Qt::TextEditorInteraction); - _text_item->installSceneEventFilter(this); - QObject::connect(_text_item->document(), &QTextDocument::contentsChanged, _text_item, + if (!m_textItem) { + m_textItem = new BoundaryTextItem(this); + m_textItem->setTextInteractionFlags(Qt::TextEditorInteraction); + m_textItem->installSceneEventFilter(this); + QObject::connect(m_textItem->document(), &QTextDocument::contentsChanged, m_textItem, [=]() { this->onContentsChanged(); } ); } - _text_item->setFont(style->getNormalFont()); - _text_item->setDefaultTextColor(style->getTextBrush().color()); - if (!_on_changed) { - _text_item->setTextWidth(-1); - _text_item->setPlainText(_boundary->getText()); + m_textItem->setFont(style->normalFont()); + m_textItem->setDefaultTextColor(style->textBrush().color()); + if (!m_isChanged) { + m_textItem->setTextWidth(-1); + m_textItem->setPlainText(m_boundary->text()); } // item shown if annotation has no text and is not selected - if (_text_item->document()->isEmpty() && isSelected()) { - if (!_no_text_item) { - _no_text_item = new QGraphicsRectItem(this); - } - _no_text_item->setPen(QPen(QBrush(QColor(192, 192, 192)), 1, Qt::DashDotLine)); - } else if (_no_text_item) { - _no_text_item->scene()->removeItem(_no_text_item); - delete _no_text_item; - _no_text_item = 0; + if (m_textItem->document()->isEmpty() && isSelected()) { + if (!m_noTextItem) + m_noTextItem = new QGraphicsRectItem(this); + m_noTextItem->setPen(QPen(QBrush(QColor(192, 192, 192)), 1, Qt::DashDotLine)); + } else if (m_noTextItem) { + m_noTextItem->scene()->removeItem(m_noTextItem); + delete m_noTextItem; + m_noTextItem = 0; } // item shown if annotation has no text and is not selected - if (!_border_item) { - _border_item = new QGraphicsRectItem(this); - } - _border_item->setPen(QPen(QBrush(Qt::black), 1, Qt::DashLine)); + if (!m_borderItem) + m_borderItem = new QGraphicsRectItem(this); + m_borderItem->setPen(QPen(QBrush(Qt::black), 1, Qt::DashLine)); updateSelectionMarker(); - updateGeometry(); - setZValue(BOUNDARY_ITEMS_ZVALUE); - _on_update = false; + m_isUpdating = false; } -QPointF BoundaryItem::getPos() const +QPointF BoundaryItem::pos() const { - return _boundary->getPos(); + return m_boundary->pos(); } -QRectF BoundaryItem::getRect() const +QRectF BoundaryItem::rect() const { - return _boundary->getRect(); + return m_boundary->rect(); } -QSizeF BoundaryItem::getMinimumSize() const +QSizeF BoundaryItem::minimumSize() const { return calcMinimumGeometry(); } -void BoundaryItem::setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta) +void BoundaryItem::setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, const QPointF &topLeftDelta, + const QPointF &bottomRightDelta) { - QPointF new_pos = original_pos; - QRectF new_rect = original_rect; - GeometryUtilities::adjustPosAndRect(&new_pos, &new_rect, top_left_delta, bottom_right_delta, QPointF(0.5, 0.5)); - if (new_pos != _boundary->getPos() || new_rect != _boundary->getRect()) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_boundary, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _boundary->setPos(new_pos); - _boundary->setRect(new_rect); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_boundary, _diagram_scene_model->getDiagram(), false); + QPointF newPos = originalPos; + QRectF newRect = originalRect; + GeometryUtilities::adjustPosAndRect(&newPos, &newRect, topLeftDelta, bottomRightDelta, QPointF(0.5, 0.5)); + if (newPos != m_boundary->pos() || newRect != m_boundary->rect()) { + m_diagramSceneModel->diagramController()->startUpdateElement(m_boundary, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_boundary->setPos(newPos); + m_boundary->setRect(newRect); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_boundary, m_diagramSceneModel->diagram(), false); } } -void BoundaryItem::alignItemSizeToRaster(IResizable::Side adjust_horizontal_side, IResizable::Side adjust_vertical_side, double raster_width, double raster_height) +void BoundaryItem::alignItemSizeToRaster(IResizable::Side adjustHorizontalSide, IResizable::Side adjustVerticalSide, + double rasterWidth, double rasterHeight) { - QPointF pos = _boundary->getPos(); - QRectF rect = _boundary->getRect(); + QPointF pos = m_boundary->pos(); + QRectF rect = m_boundary->rect(); - double horiz_delta = rect.width() - qRound(rect.width() / raster_width) * raster_width; - double vert_delta = rect.height() - qRound(rect.height() / raster_height) * raster_height; + double horizDelta = rect.width() - qRound(rect.width() / rasterWidth) * rasterWidth; + double vertDelta = rect.height() - qRound(rect.height() / rasterHeight) * rasterHeight; // make sure the new size is at least the minimum size - QSizeF minimum_size = getMinimumSize(); - while (rect.width() + horiz_delta < minimum_size.width()) { - horiz_delta += raster_width; - } - while (rect.height() + vert_delta < minimum_size.height()) { - vert_delta += raster_height; - } - - double left_delta = 0.0; - double right_delta = 0.0; - double top_delta = 0.0; - double bottom_delta = 0.0; - - switch (adjust_horizontal_side) { - case IResizable::SIDE_NONE: + QSizeF minimumSize = this->minimumSize(); + while (rect.width() + horizDelta < minimumSize.width()) + horizDelta += rasterWidth; + while (rect.height() + vertDelta < minimumSize.height()) + vertDelta += rasterHeight; + + double leftDelta = 0.0; + double rightDelta = 0.0; + double topDelta = 0.0; + double bottomDelta = 0.0; + + switch (adjustHorizontalSide) { + case IResizable::SideNone: break; - case IResizable::SIDE_LEFT_OR_TOP: - left_delta = horiz_delta; + case IResizable::SideLeftOrTop: + leftDelta = horizDelta; break; - case IResizable::SIDE_RIGHT_OR_BOTTOM: - right_delta = -horiz_delta; + case IResizable::SideRightOrBottom: + rightDelta = -horizDelta; break; } - switch (adjust_vertical_side) { - case IResizable::SIDE_NONE: + switch (adjustVerticalSide) { + case IResizable::SideNone: break; - case IResizable::SIDE_LEFT_OR_TOP: - top_delta = vert_delta; + case IResizable::SideLeftOrTop: + topDelta = vertDelta; break; - case IResizable::SIDE_RIGHT_OR_BOTTOM: - bottom_delta = -vert_delta; + case IResizable::SideRightOrBottom: + bottomDelta = -vertDelta; break; } - QPointF top_left_delta(left_delta, top_delta); - QPointF bottom_right_delta(right_delta, bottom_delta); - setPosAndRect(pos, rect, top_left_delta, bottom_right_delta); + QPointF topLeftDelta(leftDelta, topDelta); + QPointF bottomRightDelta(rightDelta, bottomDelta); + setPosAndRect(pos, rect, topLeftDelta, bottomRightDelta); } void BoundaryItem::moveDelta(const QPointF &delta) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_boundary, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _boundary->setPos(_boundary->getPos() + delta); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_boundary, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_boundary, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_boundary->setPos(m_boundary->pos() + delta); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_boundary, m_diagramSceneModel->diagram(), false); } -void BoundaryItem::alignItemPositionToRaster(double raster_width, double raster_height) +void BoundaryItem::alignItemPositionToRaster(double rasterWidth, double rasterHeight) { - QPointF pos = _boundary->getPos(); - QRectF rect = _boundary->getRect(); - QPointF top_left = pos + rect.topLeft(); + QPointF pos = m_boundary->pos(); + QRectF rect = m_boundary->rect(); + QPointF topLeft = pos + rect.topLeft(); - double left_delta = qRound(top_left.x() / raster_width) * raster_width - top_left.x(); - double top_delta = qRound(top_left.y() / raster_height) * raster_height - top_left.y(); - QPointF top_left_delta(left_delta, top_delta); + double leftDelta = qRound(topLeft.x() / rasterWidth) * rasterWidth - topLeft.x(); + double topDelta = qRound(topLeft.y() / rasterHeight) * rasterHeight - topLeft.y(); + QPointF topLeftDelta(leftDelta, topDelta); - setPosAndRect(pos, rect, top_left_delta, top_left_delta); + setPosAndRect(pos, rect, topLeftDelta, topLeftDelta); } bool BoundaryItem::isSecondarySelected() const { - return _secondary_selected; + return m_isSecondarySelected; } -void BoundaryItem::setSecondarySelected(bool secondary_selected) +void BoundaryItem::setSecondarySelected(bool secondarySelected) { - if (_secondary_selected != secondary_selected) { - _secondary_selected = secondary_selected; + if (m_isSecondarySelected != secondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } bool BoundaryItem::isFocusSelected() const { - return _focus_selected; + return m_isFocusSelected; } -void BoundaryItem::setFocusSelected(bool focus_selected) +void BoundaryItem::setFocusSelected(bool focusSelected) { - if (_focus_selected != focus_selected) { - _focus_selected = focus_selected; + if (m_isFocusSelected != focusSelected) { + m_isFocusSelected = focusSelected; update(); } } @@ -292,69 +284,61 @@ bool BoundaryItem::isEditable() const void BoundaryItem::edit() { - if (_text_item) { - _text_item->setFocus(); - } + if (m_textItem) + m_textItem->setFocus(); } void BoundaryItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) { - _diagram_scene_model->selectItem(this, event->modifiers() & Qt::ControlModifier); - } - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, QPointF(0.0, 0.0)); - } + if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) + m_diagramSceneModel->selectItem(this, event->modifiers() & Qt::ControlModifier); + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, QPointF(0.0, 0.0)); } void BoundaryItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - } + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); } void BoundaryItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) { - _diagram_scene_model->alignSelectedItemsPositionOnRaster(); - } + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); + if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) + m_diagramSceneModel->alignSelectedItemsPositionOnRaster(); } } void BoundaryItem::updateSelectionMarker() { - if (isSelected() || _secondary_selected) { - if (!_selection_marker) { - _selection_marker = new RectangularSelectionItem(this, this); - } - _selection_marker->setSecondarySelected(isSelected() ? false : _secondary_selected); - } else if (_selection_marker) { - if (_selection_marker->scene()) { - _selection_marker->scene()->removeItem(_selection_marker); - } - delete _selection_marker; - _selection_marker = 0; + if (isSelected() || m_isSecondarySelected) { + if (!m_selectionMarker) + m_selectionMarker = new RectangularSelectionItem(this, this); + m_selectionMarker->setSecondarySelected(isSelected() ? false : m_isSecondarySelected); + } else if (m_selectionMarker) { + if (m_selectionMarker->scene()) + m_selectionMarker->scene()->removeItem(m_selectionMarker); + delete m_selectionMarker; + m_selectionMarker = 0; } } -void BoundaryItem::updateSelectionMarkerGeometry(const QRectF &boundary_rect) +void BoundaryItem::updateSelectionMarkerGeometry(const QRectF &boundaryRect) { - if (_selection_marker) { - _selection_marker->setRect(boundary_rect); - } + if (m_selectionMarker) + m_selectionMarker->setRect(boundaryRect); } -const Style *BoundaryItem::getAdaptedStyle() +const Style *BoundaryItem::adaptedStyle() { - return _diagram_scene_model->getStyleController()->adaptBoundaryStyle(_boundary); + return m_diagramSceneModel->styleController()->adaptBoundaryStyle(m_boundary); } bool BoundaryItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event) { - if (watched == _text_item) { + if (watched == m_textItem) { if (event->type() == QEvent::FocusIn) { scene()->clearSelection(); setSelected(true); @@ -365,19 +349,19 @@ bool BoundaryItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event) void BoundaryItem::onContentsChanged() { - QMT_CHECK(!_on_changed); - _on_changed = true; - - if (!_on_update) { - QString plain_text = _text_item->toPlainText(); - if (_boundary->getText() != plain_text) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_boundary, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MINOR); - _boundary->setText(plain_text); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_boundary, _diagram_scene_model->getDiagram(), false); + QMT_CHECK(!m_isChanged); + m_isChanged = true; + + if (!m_isUpdating) { + QString plainText = m_textItem->toPlainText(); + if (m_boundary->text() != plainText) { + m_diagramSceneModel->diagramController()->startUpdateElement(m_boundary, m_diagramSceneModel->diagram(), DiagramController::UpdateMinor); + m_boundary->setText(plainText); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_boundary, m_diagramSceneModel->diagram(), false); } } - _on_changed = false; + m_isChanged = false; } QSizeF BoundaryItem::calcMinimumGeometry() const @@ -385,17 +369,15 @@ QSizeF BoundaryItem::calcMinimumGeometry() const qreal width = MINIMUM_INNER_WIDTH + 2 * CONTENTS_BORDER_HORIZONTAL; qreal height = MINIMUM_INNER_HEIGHT + 2 * CONTENTS_BORDER_VERTICAL; - if (_text_item) { - _text_item->setTextWidth(-1); - QSizeF text_size = _text_item->document()->size(); - qreal text_width = text_size.width() + 2 * CONTENTS_BORDER_HORIZONTAL; - if (text_width > width) { - width = text_width; - } - qreal text_height = text_size.height() + 2 * CONTENTS_BORDER_VERTICAL; - if (text_height > height) { - height = text_height; - } + if (m_textItem) { + m_textItem->setTextWidth(-1); + QSizeF textSize = m_textItem->document()->size(); + qreal textWidth = textSize.width() + 2 * CONTENTS_BORDER_HORIZONTAL; + if (textWidth > width) + width = textWidth; + qreal textHeight = textSize.height() + 2 * CONTENTS_BORDER_VERTICAL; + if (textHeight > height) + height = textHeight; } return GeometryUtilities::ensureMinimumRasterSize(QSizeF(width, height), 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); } @@ -408,49 +390,40 @@ void BoundaryItem::updateGeometry() qreal width = geometry.width(); qreal height = geometry.height(); - qreal text_width = 0.0; - qreal text_height = 0.0; - if (_text_item) { - _text_item->setTextWidth(-1); - QSizeF text_size = _text_item->document()->size(); - text_width = text_size.width(); - text_height = text_size.height(); + qreal textWidth = 0.0; + qreal textHeight = 0.0; + if (m_textItem) { + m_textItem->setTextWidth(-1); + QSizeF textSize = m_textItem->document()->size(); + textWidth = textSize.width(); + textHeight = textSize.height(); } - QRectF boundary_rect = _boundary->getRect(); - if (boundary_rect.width() > width) { - width = boundary_rect.width(); - } - if (boundary_rect.height() > height) { - height = boundary_rect.height(); - } + QRectF boundaryRect = m_boundary->rect(); + if (boundaryRect.width() > width) + width = boundaryRect.width(); + if (boundaryRect.height() > height) + height = boundaryRect.height(); // update sizes and positions double left = -width / 2.0; double top = -height / 2.0; - setPos(_boundary->getPos()); + setPos(m_boundary->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - _boundary->setRect(rect); - - if (_border_item) { - _border_item->setRect(rect); - } - - if (_no_text_item) { - _no_text_item->setRect(QRectF(-text_width / 2, top + CONTENTS_BORDER_VERTICAL, text_width, text_height)); - } - - if (_text_item) { - _text_item->setPos(-text_width / 2.0, top + CONTENTS_BORDER_VERTICAL); - } - + m_boundary->setRect(rect); + if (m_borderItem) + m_borderItem->setRect(rect); + if (m_noTextItem) + m_noTextItem->setRect(QRectF(-textWidth / 2, top + CONTENTS_BORDER_VERTICAL, textWidth, textHeight)); + if (m_textItem) + m_textItem->setPos(-textWidth / 2.0, top + CONTENTS_BORDER_VERTICAL); updateSelectionMarkerGeometry(rect); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.h index 0da548f722..f9b2845ced 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/boundaryitem.h @@ -38,7 +38,6 @@ #include "qmt/diagram_scene/capabilities/selectable.h" #include "qmt/diagram_scene/capabilities/editable.h" - namespace qmt { class DBoundary; @@ -46,7 +45,6 @@ class DiagramSceneModel; class RectangularSelectionItem; class Style; - class BoundaryItem : public QGraphicsItem, public IResizable, @@ -57,111 +55,66 @@ class BoundaryItem : class BoundaryTextItem; public: - BoundaryItem(DBoundary *boundary, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + BoundaryItem(DBoundary *boundary, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~BoundaryItem(); -public: - - DBoundary *getBoundary() const { return _boundary; } - - DiagramSceneModel *getDiagramSceneModel() const { return _diagram_scene_model; } - -public: + DBoundary *boundary() const { return m_boundary; } + DiagramSceneModel *diagramSceneModel() const { return m_diagramSceneModel; } QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); -public: - virtual void update(); -public: - - QPointF getPos() const; - - QRectF getRect() const; - - QSizeF getMinimumSize() const; - - void setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta); - - void alignItemSizeToRaster(Side adjust_horizontal_side, Side adjust_vertical_side, double raster_width, double raster_height); - -public: + QPointF pos() const; + QRectF rect() const; + QSizeF minimumSize() const; + void setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, + const QPointF &topLeftDelta, const QPointF &bottomRightDelta); + void alignItemSizeToRaster(Side adjustHorizontalSide, Side adjustVerticalSide, + double rasterWidth, double rasterHeight); void moveDelta(const QPointF &delta); - - void alignItemPositionToRaster(double raster_width, double raster_height); - -public: + void alignItemPositionToRaster(double rasterWidth, double rasterHeight); bool isSecondarySelected() const; - - void setSecondarySelected(bool secondary_selected); - + void setSecondarySelected(bool secondarySelected); bool isFocusSelected() const; - - void setFocusSelected(bool focus_selected); - -public: + void setFocusSelected(bool focusSelected); bool isEditable() const; - void edit(); protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); -protected: - void updateSelectionMarker(); - - void updateSelectionMarkerGeometry(const QRectF &boundary_rect); - - const Style *getAdaptedStyle(); - + void updateSelectionMarkerGeometry(const QRectF &boundaryRect); + const Style *adaptedStyle(); bool sceneEventFilter(QGraphicsItem *watched, QEvent *event); private slots: - void onContentsChanged(); private: - QSizeF calcMinimumGeometry() const; - void updateGeometry(); -private: - - DBoundary *_boundary; - - DiagramSceneModel *_diagram_scene_model; - - bool _secondary_selected; - - bool _focus_selected; - - RectangularSelectionItem *_selection_marker; - - QGraphicsRectItem *_border_item; - - QGraphicsRectItem *_no_text_item; - - BoundaryTextItem *_text_item; - - bool _on_update; - - bool _on_changed; + DBoundary *m_boundary; + DiagramSceneModel *m_diagramSceneModel; + bool m_isSecondarySelected; + bool m_isFocusSelected; + RectangularSelectionItem *m_selectionMarker; + QGraphicsRectItem *m_borderItem; + QGraphicsRectItem *m_noTextItem; + BoundaryTextItem *m_textItem; + bool m_isUpdating; + bool m_isChanged; }; -} +} // namespace qmt #endif // QMT_BOUNDARYITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.cpp index 0d18fd2cfd..f4fc7ec5fc 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.cpp @@ -60,7 +60,6 @@ #include <algorithm> - namespace qmt { static const qreal MINIMUM_AUTO_WIDTH = 80.0; @@ -68,20 +67,19 @@ static const qreal MINIMUM_AUTO_HEIGHT = 60.0; static const qreal BODY_VERT_BORDER = 4.0; static const qreal BODY_HORIZ_BORDER = 4.0; - -ClassItem::ClassItem(DClass *klass, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : ObjectItem(klass, diagram_scene_model, parent), - _custom_icon(0), - _shape(0), - _namespace(0), - _class_name(0), - _context_label(0), - _attributes_separator(0), - _attributes(0), - _methods_separator(0), - _methods(0), - _template_parameter_box(0), - _relation_starter(0) +ClassItem::ClassItem(DClass *klass, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : ObjectItem(klass, diagramSceneModel, parent), + m_customIcon(0), + m_shape(0), + m_namespace(0), + m_className(0), + m_contextLabel(0), + m_attributesSeparator(0), + m_attributes(0), + m_methodsSeparator(0), + m_methods(0), + m_templateParameterBox(0), + m_relationStarter(0) { } @@ -95,258 +93,244 @@ void ClassItem::update() updateStereotypeIconDisplay(); - DClass *diagram_class = dynamic_cast<DClass *>(getObject()); - QMT_CHECK(diagram_class); + DClass *diagramClass = dynamic_cast<DClass *>(object()); + QMT_CHECK(diagramClass); - const Style *style = getAdaptedStyle(getStereotypeIconId()); + const Style *style = adaptedStyle(stereotypeIconId()); - if (diagram_class->getShowAllMembers()) { + if (diagramClass->showAllMembers()) { updateMembers(style); } else { - _attributes_text.clear(); - _methods_text.clear(); + m_attributesText.clear(); + m_methodsText.clear(); } // custom icon - if (getStereotypeIconDisplay() == StereotypeIcon::DISPLAY_ICON) { - if (!_custom_icon) { - _custom_icon = new CustomIconItem(getDiagramSceneModel(), this); - } - _custom_icon->setStereotypeIconId(getStereotypeIconId()); - _custom_icon->setBaseSize(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); - _custom_icon->setBrush(style->getFillBrush()); - _custom_icon->setPen(style->getOuterLinePen()); - _custom_icon->setZValue(SHAPE_ZVALUE); - } else if (_custom_icon) { - _custom_icon->scene()->removeItem(_custom_icon); - delete _custom_icon; - _custom_icon = 0; + if (stereotypeIconDisplay() == StereotypeIcon::DisplayIcon) { + if (!m_customIcon) + m_customIcon = new CustomIconItem(diagramSceneModel(), this); + m_customIcon->setStereotypeIconId(stereotypeIconId()); + m_customIcon->setBaseSize(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); + m_customIcon->setBrush(style->fillBrush()); + m_customIcon->setPen(style->outerLinePen()); + m_customIcon->setZValue(SHAPE_ZVALUE); + } else if (m_customIcon) { + m_customIcon->scene()->removeItem(m_customIcon); + delete m_customIcon; + m_customIcon = 0; } // shape - if (!_custom_icon) { - if (!_shape) { - _shape = new QGraphicsRectItem(this); - } - _shape->setBrush(style->getFillBrush()); - _shape->setPen(style->getOuterLinePen()); - _shape->setZValue(SHAPE_ZVALUE); - } else if (_shape){ - _shape->scene()->removeItem(_shape); - delete _shape; - _shape = 0; + if (!m_customIcon) { + if (!m_shape) + m_shape = new QGraphicsRectItem(this); + m_shape->setBrush(style->fillBrush()); + m_shape->setPen(style->outerLinePen()); + m_shape->setZValue(SHAPE_ZVALUE); + } else if (m_shape){ + m_shape->scene()->removeItem(m_shape); + delete m_shape; + m_shape = 0; } // stereotypes - updateStereotypes(getStereotypeIconId(), getStereotypeIconDisplay(), style); + updateStereotypes(stereotypeIconId(), stereotypeIconDisplay(), style); // namespace - if (!diagram_class->getNamespace().isEmpty()) { - if (!_namespace) { - _namespace = new QGraphicsSimpleTextItem(this); - } - _namespace->setFont(style->getSmallFont()); - _namespace->setBrush(style->getTextBrush()); - _namespace->setText(diagram_class->getNamespace()); - } else if (_namespace) { - _namespace->scene()->removeItem(_namespace); - delete _namespace; - _namespace = 0; - } - - DClass::TemplateDisplay template_display = diagram_class->getTemplateDisplay(); - if (template_display == DClass::TEMPLATE_SMART) { - if (_custom_icon) { - template_display = DClass::TEMPLATE_NAME; - } else { - template_display = DClass::TEMPLATE_BOX; - } + if (!diagramClass->umlNamespace().isEmpty()) { + if (!m_namespace) + m_namespace = new QGraphicsSimpleTextItem(this); + m_namespace->setFont(style->smallFont()); + m_namespace->setBrush(style->textBrush()); + m_namespace->setText(diagramClass->umlNamespace()); + } else if (m_namespace) { + m_namespace->scene()->removeItem(m_namespace); + delete m_namespace; + m_namespace = 0; + } + + DClass::TemplateDisplay templateDisplay = diagramClass->templateDisplay(); + if (templateDisplay == DClass::TemplateSmart) { + if (m_customIcon) + templateDisplay = DClass::TemplateName; + else + templateDisplay = DClass::TemplateBox; } // class name - if (!_class_name) { - _class_name = new QGraphicsSimpleTextItem(this); - } - _class_name->setFont(style->getHeaderFont()); - _class_name->setBrush(style->getTextBrush()); - if (template_display == DClass::TEMPLATE_NAME && !diagram_class->getTemplateParameters().isEmpty()) { - QString name = getObject()->getName(); + if (!m_className) + m_className = new QGraphicsSimpleTextItem(this); + m_className->setFont(style->headerFont()); + m_className->setBrush(style->textBrush()); + if (templateDisplay == DClass::TemplateName && !diagramClass->templateParameters().isEmpty()) { + QString name = object()->name(); name += QLatin1Char('<'); bool first = true; - foreach (const QString p, diagram_class->getTemplateParameters()) { - if (!first) { + foreach (const QString &p, diagramClass->templateParameters()) { + if (!first) name += QLatin1Char(','); - } name += p; first = false; } name += QLatin1Char('>'); - _class_name->setText(name); + m_className->setText(name); } else { - _class_name->setText(getObject()->getName()); + m_className->setText(object()->name()); } // context if (showContext()) { - if (!_context_label) { - _context_label = new ContextLabelItem(this); - } - _context_label->setFont(style->getSmallFont()); - _context_label->setBrush(style->getTextBrush()); - _context_label->setContext(getObject()->getContext()); - } else if (_context_label) { - _context_label->scene()->removeItem(_context_label); - delete _context_label; - _context_label = 0; + if (!m_contextLabel) + m_contextLabel = new ContextLabelItem(this); + m_contextLabel->setFont(style->smallFont()); + m_contextLabel->setBrush(style->textBrush()); + m_contextLabel->setContext(object()->context()); + } else if (m_contextLabel) { + m_contextLabel->scene()->removeItem(m_contextLabel); + delete m_contextLabel; + m_contextLabel = 0; } // attributes separator - if (_shape || !_attributes_text.isEmpty() || !_methods_text.isEmpty()) { - if (!_attributes_separator) { - _attributes_separator = new QGraphicsLineItem(this); - } - _attributes_separator->setPen(style->getInnerLinePen()); - _attributes_separator->setZValue(SHAPE_DETAILS_ZVALUE); - } else if (_attributes_separator) { - _attributes_separator->scene()->removeItem(_attributes_separator); - delete _attributes_separator; - _attributes_separator = 0; + if (m_shape || !m_attributesText.isEmpty() || !m_methodsText.isEmpty()) { + if (!m_attributesSeparator) + m_attributesSeparator = new QGraphicsLineItem(this); + m_attributesSeparator->setPen(style->innerLinePen()); + m_attributesSeparator->setZValue(SHAPE_DETAILS_ZVALUE); + } else if (m_attributesSeparator) { + m_attributesSeparator->scene()->removeItem(m_attributesSeparator); + delete m_attributesSeparator; + m_attributesSeparator = 0; } // attributes - if (!_attributes_text.isEmpty()) { - if (!_attributes) { - _attributes = new QGraphicsTextItem(this); - } - _attributes->setFont(style->getNormalFont()); - //_attributes->setBrush(style->getTextBrush()); - _attributes->setDefaultTextColor(style->getTextBrush().color()); - _attributes->setHtml(_attributes_text); - } else if (_attributes) { - _attributes->scene()->removeItem(_attributes); - delete _attributes; - _attributes = 0; + if (!m_attributesText.isEmpty()) { + if (!m_attributes) + m_attributes = new QGraphicsTextItem(this); + m_attributes->setFont(style->normalFont()); + //m_attributes->setBrush(style->textBrush()); + m_attributes->setDefaultTextColor(style->textBrush().color()); + m_attributes->setHtml(m_attributesText); + } else if (m_attributes) { + m_attributes->scene()->removeItem(m_attributes); + delete m_attributes; + m_attributes = 0; } // methods separator - if (_shape || !_attributes_text.isEmpty() || !_methods_text.isEmpty()) { - if (!_methods_separator) { - _methods_separator = new QGraphicsLineItem(this); - } - _methods_separator->setPen(style->getInnerLinePen()); - _methods_separator->setZValue(SHAPE_DETAILS_ZVALUE); - } else if (_methods_separator) { - _methods_separator->scene()->removeItem(_methods_separator); - delete _methods_separator; - _methods_separator = 0; + if (m_shape || !m_attributesText.isEmpty() || !m_methodsText.isEmpty()) { + if (!m_methodsSeparator) + m_methodsSeparator = new QGraphicsLineItem(this); + m_methodsSeparator->setPen(style->innerLinePen()); + m_methodsSeparator->setZValue(SHAPE_DETAILS_ZVALUE); + } else if (m_methodsSeparator) { + m_methodsSeparator->scene()->removeItem(m_methodsSeparator); + delete m_methodsSeparator; + m_methodsSeparator = 0; } // methods - if (!_methods_text.isEmpty()) { - if (!_methods) { - _methods = new QGraphicsTextItem(this); - } - _methods->setFont(style->getNormalFont()); - //_methods->setBrush(style->getTextBrush()); - _methods->setDefaultTextColor(style->getTextBrush().color()); - _methods->setHtml(_methods_text); - } else if (_methods) { - _methods->scene()->removeItem(_methods); - delete _methods; - _methods = 0; + if (!m_methodsText.isEmpty()) { + if (!m_methods) + m_methods = new QGraphicsTextItem(this); + m_methods->setFont(style->normalFont()); + //m_methods->setBrush(style->textBrush()); + m_methods->setDefaultTextColor(style->textBrush().color()); + m_methods->setHtml(m_methodsText); + } else if (m_methods) { + m_methods->scene()->removeItem(m_methods); + delete m_methods; + m_methods = 0; } // template parameters - if (template_display == DClass::TEMPLATE_BOX && !diagram_class->getTemplateParameters().isEmpty()) { - if (!_template_parameter_box) { - _template_parameter_box = new TemplateParameterBox(this); - } - QPen pen = style->getOuterLinePen(); + if (templateDisplay == DClass::TemplateBox && !diagramClass->templateParameters().isEmpty()) { + if (!m_templateParameterBox) + m_templateParameterBox = new TemplateParameterBox(this); + QPen pen = style->outerLinePen(); pen.setStyle(Qt::DashLine); - _template_parameter_box->setPen(pen); - _template_parameter_box->setBrush(QBrush(Qt::white)); - _template_parameter_box->setFont(style->getSmallFont()); - _template_parameter_box->setTextBrush(style->getTextBrush()); - _template_parameter_box->setTemplateParameters(diagram_class->getTemplateParameters()); - } else if (_template_parameter_box) { - _template_parameter_box->scene()->removeItem(_template_parameter_box); - delete _template_parameter_box; - _template_parameter_box = 0; + m_templateParameterBox->setPen(pen); + m_templateParameterBox->setBrush(QBrush(Qt::white)); + m_templateParameterBox->setFont(style->smallFont()); + m_templateParameterBox->setTextBrush(style->textBrush()); + m_templateParameterBox->setTemplateParameters(diagramClass->templateParameters()); + } else if (m_templateParameterBox) { + m_templateParameterBox->scene()->removeItem(m_templateParameterBox); + delete m_templateParameterBox; + m_templateParameterBox = 0; } - updateSelectionMarker(_custom_icon); + updateSelectionMarker(m_customIcon); // relation starters if (isFocusSelected()) { - if (!_relation_starter) { - _relation_starter = new RelationStarter(this, getDiagramSceneModel(), 0); - scene()->addItem(_relation_starter); - _relation_starter->setZValue(RELATION_STARTER_ZVALUE); - _relation_starter->addArrow(QLatin1String("inheritance"), ArrowItem::SHAFT_SOLID, ArrowItem::HEAD_TRIANGLE); - _relation_starter->addArrow(QLatin1String("dependency"), ArrowItem::SHAFT_DASHED, ArrowItem::HEAD_OPEN); - _relation_starter->addArrow(QLatin1String("association"), ArrowItem::SHAFT_SOLID, ArrowItem::HEAD_FILLED_TRIANGLE); + if (!m_relationStarter) { + m_relationStarter = new RelationStarter(this, diagramSceneModel(), 0); + scene()->addItem(m_relationStarter); + m_relationStarter->setZValue(RELATION_STARTER_ZVALUE); + m_relationStarter->addArrow(QLatin1String("inheritance"), ArrowItem::ShaftSolid, ArrowItem::HeadTriangle); + m_relationStarter->addArrow(QLatin1String("dependency"), ArrowItem::ShaftDashed, ArrowItem::HeadOpen); + m_relationStarter->addArrow(QLatin1String("association"), ArrowItem::ShaftSolid, ArrowItem::HeadFilledTriangle); } - } else if (_relation_starter) { - scene()->removeItem(_relation_starter); - delete _relation_starter; - _relation_starter = 0; + } else if (m_relationStarter) { + scene()->removeItem(m_relationStarter); + delete m_relationStarter; + m_relationStarter = 0; } updateAlignmentButtons(); - updateGeometry(); } -bool ClassItem::intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const +bool ClassItem::intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, QLineF *intersectionLine) const { QPolygonF polygon; - if (_custom_icon) { - QRectF rect = getObject()->getRect(); -// polygon = _custom_icon->path().toFillPolygon(QTransform() -// .scale(rect.width() / _custom_icon->getShapeWidth(), rect.height() / _custom_icon->getShapeHeight()) -// .translate(getObject()->getPos().x(), getObject()->getPos().y())); - rect.translate(getObject()->getPos()); + if (m_customIcon) { + QRectF rect = object()->rect(); +// polygon = m_customIcon->path().toFillPolygon(QTransform() +// .scale(rect.width() / m_customIcon->shapeWidth(), rect.height() / m_customIcon->shapeHeight()) +// .translate(object()->pos().x(), object()->pos().y())); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } else { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } - return GeometryUtilities::intersect(polygon, line, intersection_point, intersection_line); + return GeometryUtilities::intersect(polygon, line, intersectionPoint, intersectionLine); } -QSizeF ClassItem::getMinimumSize() const +QSizeF ClassItem::minimumSize() const { return calcMinimumGeometry(); } -QPointF ClassItem::getRelationStartPos() const +QPointF ClassItem::relationStartPos() const { return pos(); } -void ClassItem::relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points) +void ClassItem::relationDrawn(const QString &id, const QPointF &toScenePos, const QList<QPointF> &intermediatePoints) { - DElement *target_element = getDiagramSceneModel()->findTopmostElement(to_scene_pos); - if (target_element) { + DElement *targetElement = diagramSceneModel()->findTopmostElement(toScenePos); + if (targetElement) { if (id == QLatin1String("inheritance")) { - DClass *base_class = dynamic_cast<DClass *>(target_element); - if (base_class) { - DClass *derived_class = dynamic_cast<DClass *>(getObject()); - QMT_CHECK(derived_class); - getDiagramSceneModel()->getDiagramSceneController()->createInheritance(derived_class, base_class, intermediate_points, getDiagramSceneModel()->getDiagram()); + DClass *baseClass = dynamic_cast<DClass *>(targetElement); + if (baseClass) { + DClass *derivedClass = dynamic_cast<DClass *>(object()); + QMT_CHECK(derivedClass); + diagramSceneModel()->diagramSceneController()->createInheritance(derivedClass, baseClass, intermediatePoints, diagramSceneModel()->diagram()); } } else if (id == QLatin1String("dependency")) { - DObject *dependant_object = dynamic_cast<DObject *>(target_element); - if (dependant_object) { - getDiagramSceneModel()->getDiagramSceneController()->createDependency(getObject(), dependant_object, intermediate_points, getDiagramSceneModel()->getDiagram()); - } + DObject *dependantObject = dynamic_cast<DObject *>(targetElement); + if (dependantObject) + diagramSceneModel()->diagramSceneController()->createDependency(object(), dependantObject, intermediatePoints, diagramSceneModel()->diagram()); } else if (id == QLatin1String("association")) { - DClass *assoziated_class = dynamic_cast<DClass *>(target_element); - if (assoziated_class) { - DClass *derived_class = dynamic_cast<DClass *>(getObject()); - QMT_CHECK(derived_class); - getDiagramSceneModel()->getDiagramSceneController()->createAssociation(derived_class, assoziated_class, intermediate_points, getDiagramSceneModel()->getDiagram()); + DClass *assoziatedClass = dynamic_cast<DClass *>(targetElement); + if (assoziatedClass) { + DClass *derivedClass = dynamic_cast<DClass *>(object()); + QMT_CHECK(derivedClass); + diagramSceneModel()->diagramSceneController()->createAssociation(derivedClass, assoziatedClass, intermediatePoints, diagramSceneModel()->diagram()); } } } @@ -355,7 +339,7 @@ void ClassItem::relationDrawn(const QString &id, const QPointF &to_scene_pos, co bool ClassItem::extendContextMenu(QMenu *menu) { bool extended = false; - if (getDiagramSceneModel()->getDiagramSceneController()->getElementTasks()->hasClassDefinition(getObject(), getDiagramSceneModel()->getDiagram())) { + if (diagramSceneModel()->diagramSceneController()->elementTasks()->hasClassDefinition(object(), diagramSceneModel()->diagram())) { menu->addAction(new ContextMenuAction(QObject::tr("Show Definition"), QStringLiteral("showDefinition"), menu)); extended = true; } @@ -364,10 +348,10 @@ bool ClassItem::extendContextMenu(QMenu *menu) bool ClassItem::handleSelectedContextMenuAction(QAction *action) { - ContextMenuAction *klass_action = dynamic_cast<ContextMenuAction *>(action); - if (klass_action) { - if (klass_action->getId() == QStringLiteral("showDefinition")) { - getDiagramSceneModel()->getDiagramSceneController()->getElementTasks()->openClassDefinition(getObject(), getDiagramSceneModel()->getDiagram()); + ContextMenuAction *klassAction = dynamic_cast<ContextMenuAction *>(action); + if (klassAction) { + if (klassAction->id() == QStringLiteral("showDefinition")) { + diagramSceneModel()->diagramSceneController()->elementTasks()->openClassDefinition(object(), diagramSceneModel()->diagram()); return true; } } @@ -379,43 +363,41 @@ QSizeF ClassItem::calcMinimumGeometry() const double width = 0.0; double height = 0.0; - if (_custom_icon) { - return getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); + if (m_customIcon) { + return stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), + CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); } height += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - width = std::max(width, stereotype_icon_item->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += stereotype_icon_item->boundingRect().height(); - } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - width = std::max(width, stereotypes_item->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += stereotypes_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + width = std::max(width, stereotypeIconItem->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += stereotypeIconItem->boundingRect().height(); } - if (_namespace) { - width = std::max(width, _namespace->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += _namespace->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + width = std::max(width, stereotypesItem->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += stereotypesItem->boundingRect().height(); } - if (_class_name) { - width = std::max(width, _class_name->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += _class_name->boundingRect().height(); + if (m_namespace) { + width = std::max(width, m_namespace->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += m_namespace->boundingRect().height(); } - if (_context_label) { - height += _context_label->getHeight(); + if (m_className) { + width = std::max(width, m_className->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += m_className->boundingRect().height(); } - if (_attributes_separator) { + if (m_contextLabel) + height += m_contextLabel->height(); + if (m_attributesSeparator) height += 8.0; + if (m_attributes) { + width = std::max(width, m_attributes->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += m_attributes->boundingRect().height(); } - if (_attributes) { - width = std::max(width, _attributes->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += _attributes->boundingRect().height(); - } - if (_methods_separator) { + if (m_methodsSeparator) height += 8.0; - } - if (_methods) { - width = std::max(width, _methods->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += _methods->boundingRect().height(); + if (m_methods) { + width = std::max(width, m_methods->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += m_methods->boundingRect().height(); } height += BODY_VERT_BORDER; @@ -434,23 +416,19 @@ void ClassItem::updateGeometry() width = geometry.width(); height = geometry.height(); - if (getObject()->hasAutoSize()) { - if (!_custom_icon) { - if (width < MINIMUM_AUTO_WIDTH) { + if (object()->isAutoSized()) { + if (!m_customIcon) { + if (width < MINIMUM_AUTO_WIDTH) width = MINIMUM_AUTO_WIDTH; - } - if (height < MINIMUM_AUTO_HEIGHT) { + if (height < MINIMUM_AUTO_HEIGHT) height = MINIMUM_AUTO_HEIGHT; - } } } else { - QRectF rect = getObject()->getRect(); - if (rect.width() > width) { + QRectF rect = object()->rect(); + if (rect.width() > width) width = rect.width(); - } - if (rect.height() > height) { + if (rect.height() > height) height = rect.height(); - } } // update sizes and positions @@ -460,283 +438,264 @@ void ClassItem::updateGeometry() //double bottom = height / 2.0; double y = top; - setPos(getObject()->getPos()); + setPos(object()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getObject()->setRect(rect); + object()->setRect(rect); - if (_custom_icon) { - _custom_icon->setPos(left, top); - _custom_icon->setActualSize(QSizeF(width, height)); + if (m_customIcon) { + m_customIcon->setPos(left, top); + m_customIcon->setActualSize(QSizeF(width, height)); y += height; } - if (_shape) { - _shape->setRect(rect); - } + if (m_shape) + m_shape->setRect(rect); y += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - stereotype_icon_item->setPos(right - stereotype_icon_item->boundingRect().width() - BODY_HORIZ_BORDER, y); - y += stereotype_icon_item->boundingRect().height(); - } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(-stereotypes_item->boundingRect().width() / 2.0, y); - y += stereotypes_item->boundingRect().height(); - } - if (_namespace) { - _namespace->setPos(-_namespace->boundingRect().width() / 2.0, y); - y += _namespace->boundingRect().height(); - } - if (_class_name) { - _class_name->setPos(-_class_name->boundingRect().width() / 2.0, y); - y += _class_name->boundingRect().height(); - } - if (_context_label) { - if (_custom_icon) { - _context_label->resetMaxWidth(); - } else { - _context_label->setMaxWidth(width - 2 * BODY_HORIZ_BORDER); - } - _context_label->setPos(-_context_label->boundingRect().width() / 2.0, y); - y += _context_label->boundingRect().height(); - } - if (_attributes_separator) { - _attributes_separator->setLine(left, 4.0, right, 4.0); - _attributes_separator->setPos(0, y); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + stereotypeIconItem->setPos(right - stereotypeIconItem->boundingRect().width() - BODY_HORIZ_BORDER, y); + y += stereotypeIconItem->boundingRect().height(); + } + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(-stereotypesItem->boundingRect().width() / 2.0, y); + y += stereotypesItem->boundingRect().height(); + } + if (m_namespace) { + m_namespace->setPos(-m_namespace->boundingRect().width() / 2.0, y); + y += m_namespace->boundingRect().height(); + } + if (m_className) { + m_className->setPos(-m_className->boundingRect().width() / 2.0, y); + y += m_className->boundingRect().height(); + } + if (m_contextLabel) { + if (m_customIcon) + m_contextLabel->resetMaxWidth(); + else + m_contextLabel->setMaxWidth(width - 2 * BODY_HORIZ_BORDER); + m_contextLabel->setPos(-m_contextLabel->boundingRect().width() / 2.0, y); + y += m_contextLabel->boundingRect().height(); + } + if (m_attributesSeparator) { + m_attributesSeparator->setLine(left, 4.0, right, 4.0); + m_attributesSeparator->setPos(0, y); y += 8.0; } - if (_attributes) { - if (_custom_icon) { - _attributes->setPos(-_attributes->boundingRect().width() / 2.0, y); - } else { - _attributes->setPos(left + BODY_HORIZ_BORDER, y); - } - y += _attributes->boundingRect().height(); + if (m_attributes) { + if (m_customIcon) + m_attributes->setPos(-m_attributes->boundingRect().width() / 2.0, y); + else + m_attributes->setPos(left + BODY_HORIZ_BORDER, y); + y += m_attributes->boundingRect().height(); } - if (_methods_separator) { - _methods_separator->setLine(left, 4.0, right, 4.0); - _methods_separator->setPos(0, y); + if (m_methodsSeparator) { + m_methodsSeparator->setLine(left, 4.0, right, 4.0); + m_methodsSeparator->setPos(0, y); y += 8.0; } - if (_methods) { - if (_custom_icon) { - _methods->setPos(-_methods->boundingRect().width() / 2.0, y); - } else { - _methods->setPos(left + BODY_HORIZ_BORDER, y); - } - y += _methods->boundingRect().height(); + if (m_methods) { + if (m_customIcon) + m_methods->setPos(-m_methods->boundingRect().width() / 2.0, y); + else + m_methods->setPos(left + BODY_HORIZ_BORDER, y); + y += m_methods->boundingRect().height(); } - if (_template_parameter_box) { - _template_parameter_box->setBreakLines(false); - double x = right - _template_parameter_box->boundingRect().width() * 0.8; + if (m_templateParameterBox) { + m_templateParameterBox->setBreakLines(false); + double x = right - m_templateParameterBox->boundingRect().width() * 0.8; if (x < 0) { - _template_parameter_box->setBreakLines(true); - x = right - _template_parameter_box->boundingRect().width() * 0.8; + m_templateParameterBox->setBreakLines(true); + x = right - m_templateParameterBox->boundingRect().width() * 0.8; } - if (x < 0) { + if (x < 0) x = 0; - } - _template_parameter_box->setPos(x, top - _template_parameter_box->boundingRect().height() + BODY_VERT_BORDER); + m_templateParameterBox->setPos(x, top - m_templateParameterBox->boundingRect().height() + BODY_VERT_BORDER); } updateSelectionMarkerGeometry(rect); - if (_relation_starter) { - _relation_starter->setPos(mapToScene(QPointF(right + 8.0, top))); - } + if (m_relationStarter) + m_relationStarter->setPos(mapToScene(QPointF(right + 8.0, top))); updateAlignmentButtonsGeometry(rect); - updateDepth(); - } void ClassItem::updateMembers(const Style *style) { Q_UNUSED(style) - _attributes_text.clear(); - _methods_text.clear(); + m_attributesText.clear(); + m_methodsText.clear(); - MClassMember::Visibility attributes_visibility = MClassMember::VISIBILITY_UNDEFINED; - MClassMember::Visibility methods_visibility = MClassMember::VISIBILITY_UNDEFINED; - QString attributes_group; - QString methods_group; + MClassMember::Visibility attributesVisibility = MClassMember::VisibilityUndefined; + MClassMember::Visibility methodsVisibility = MClassMember::VisibilityUndefined; + QString attributesGroup; + QString methodsGroup; - MClassMember::Visibility *current_visibility = 0; - QString *current_group = 0; + MClassMember::Visibility *currentVisibility = 0; + QString *currentGroup = 0; QString *text = 0; - DClass *dclass = dynamic_cast<DClass *>(getObject()); + DClass *dclass = dynamic_cast<DClass *>(object()); QMT_CHECK(dclass); - // TODO move bool have_icon_fonts into class Style? - bool have_icon_fonts = false; // style->getNormalFont().family() == QStringLiteral("Modelling"); + // TODO move bool haveIconFonts into class Style? + bool haveIconFonts = false; // style->normalFont().family() == QStringLiteral("Modelling"); // TODO any reason to show visibility as group instead of per member? - bool use_group_visibility = false; - - foreach (const MClassMember &member, dclass->getMembers()) { + bool useGroupVisibility = false; - switch (member.getMemberType()) { - case MClassMember::MEMBER_UNDEFINED: + foreach (const MClassMember &member, dclass->members()) { + switch (member.memberType()) { + case MClassMember::MemberUndefined: QMT_CHECK(false); break; - case MClassMember::MEMBER_ATTRIBUTE: - current_visibility = &attributes_visibility; - current_group = &attributes_group; - text = &_attributes_text; + case MClassMember::MemberAttribute: + currentVisibility = &attributesVisibility; + currentGroup = &attributesGroup; + text = &m_attributesText; break; - case MClassMember::MEMBER_METHOD: - current_visibility = &methods_visibility; - current_group = &methods_group; - text = &_methods_text; + case MClassMember::MemberMethod: + currentVisibility = &methodsVisibility; + currentGroup = &methodsGroup; + text = &m_methodsText; break; } - if (!text->isEmpty()) { + if (!text->isEmpty()) *text += QStringLiteral("<br/>"); - } - bool add_newline = false; - bool add_space = false; - if (member.getVisibility() != *current_visibility) { - if (use_group_visibility) { - if (member.getVisibility() != MClassMember::VISIBILITY_UNDEFINED) { + bool addNewline = false; + bool addSpace = false; + if (member.visibility() != *currentVisibility) { + if (useGroupVisibility) { + if (member.visibility() != MClassMember::VisibilityUndefined) { QString vis; - switch (member.getVisibility()) { - case MClassMember::VISIBILITY_UNDEFINED: + switch (member.visibility()) { + case MClassMember::VisibilityUndefined: break; - case MClassMember::VISIBILITY_PUBLIC: + case MClassMember::VisibilityPublic: vis = QStringLiteral("public:"); break; - case MClassMember::VISIBILITY_PROTECTED: + case MClassMember::VisibilityProtected: vis = QStringLiteral("protected:"); break; - case MClassMember::VISIBILITY_PRIVATE: + case MClassMember::VisibilityPrivate: vis = QStringLiteral("private:"); break; - case MClassMember::VISIBILITY_SIGNALS: + case MClassMember::VisibilitySignals: vis = QStringLiteral("signals:"); break; - case MClassMember::VISIBILITY_PRIVATE_SLOTS: + case MClassMember::VisibilityPrivateSlots: vis = QStringLiteral("private slots:"); break; - case MClassMember::VISIBILITY_PROTECTED_SLOTS: + case MClassMember::VisibilityProtectedSlots: vis = QStringLiteral("protected slots:"); break; - case MClassMember::VISIBILITY_PUBLIC_SLOTS: + case MClassMember::VisibilityPublicSlots: vis = QStringLiteral("public slots:"); break; } *text += vis; - add_newline = true; - add_space = true; + addNewline = true; + addSpace = true; } } - *current_visibility = member.getVisibility(); + *currentVisibility = member.visibility(); } - if (member.getGroup() != current_group) { - if (add_space) { + if (member.group() != currentGroup) { + if (addSpace) *text += QStringLiteral(" "); - } - *text += QString(QStringLiteral("[%1]")).arg(member.getGroup()); - add_newline = true; - *current_group = member.getGroup(); + *text += QString(QStringLiteral("[%1]")).arg(member.group()); + addNewline = true; + *currentGroup = member.group(); } - if (add_newline) { + if (addNewline) *text += QStringLiteral("<br/>"); - } - add_space = false; - bool have_signal = false; - bool have_slot = false; - if (!use_group_visibility) { - if (member.getVisibility() != MClassMember::VISIBILITY_UNDEFINED) { + addSpace = false; + bool haveSignal = false; + bool haveSlot = false; + if (!useGroupVisibility) { + if (member.visibility() != MClassMember::VisibilityUndefined) { QString vis; - switch (member.getVisibility()) { - case MClassMember::VISIBILITY_UNDEFINED: + switch (member.visibility()) { + case MClassMember::VisibilityUndefined: break; - case MClassMember::VISIBILITY_PUBLIC: - vis = have_icon_fonts ? QString(QChar(0xe990)) : QStringLiteral("+"); - add_space = true; + case MClassMember::VisibilityPublic: + vis = haveIconFonts ? QString(QChar(0xe990)) : QStringLiteral("+"); + addSpace = true; break; - case MClassMember::VISIBILITY_PROTECTED: - vis = have_icon_fonts ? QString(QChar(0xe98e)) : QStringLiteral("#"); - add_space = true; + case MClassMember::VisibilityProtected: + vis = haveIconFonts ? QString(QChar(0xe98e)) : QStringLiteral("#"); + addSpace = true; break; - case MClassMember::VISIBILITY_PRIVATE: - vis = have_icon_fonts ? QString(QChar(0xe98f)) : QStringLiteral("-"); - add_space = true; + case MClassMember::VisibilityPrivate: + vis = haveIconFonts ? QString(QChar(0xe98f)) : QStringLiteral("-"); + addSpace = true; break; - case MClassMember::VISIBILITY_SIGNALS: - vis = have_icon_fonts ? QString(QChar(0xe994)) : QStringLiteral(">"); - have_signal = true; - add_space = true; + case MClassMember::VisibilitySignals: + vis = haveIconFonts ? QString(QChar(0xe994)) : QStringLiteral(">"); + haveSignal = true; + addSpace = true; break; - case MClassMember::VISIBILITY_PRIVATE_SLOTS: - vis = have_icon_fonts ? QString(QChar(0xe98f)) + QChar(0xe9cb) + case MClassMember::VisibilityPrivateSlots: + vis = haveIconFonts ? QString(QChar(0xe98f)) + QChar(0xe9cb) : QStringLiteral("-$"); - have_slot = true; - add_space = true; + haveSlot = true; + addSpace = true; break; - case MClassMember::VISIBILITY_PROTECTED_SLOTS: - vis = have_icon_fonts ? QString(QChar(0xe98e)) + QChar(0xe9cb) + case MClassMember::VisibilityProtectedSlots: + vis = haveIconFonts ? QString(QChar(0xe98e)) + QChar(0xe9cb) : QStringLiteral("#$"); - have_slot = true; - add_space = true; + haveSlot = true; + addSpace = true; break; - case MClassMember::VISIBILITY_PUBLIC_SLOTS: - vis = have_icon_fonts ? QString(QChar(0xe990)) + QChar(0xe9cb) + case MClassMember::VisibilityPublicSlots: + vis = haveIconFonts ? QString(QChar(0xe990)) + QChar(0xe9cb) : QStringLiteral("+$"); - have_slot = true; - add_space = true; + haveSlot = true; + addSpace = true; break; } *text += vis; } } - if (member.getProperties() & MClassMember::PROPERTY_QSIGNAL && !have_signal) { - *text += have_icon_fonts ? QString(QChar(0xe994)) : QStringLiteral(">"); - add_space = true; + if (member.properties() & MClassMember::PropertyQsignal && !haveSignal) { + *text += haveIconFonts ? QString(QChar(0xe994)) : QStringLiteral(">"); + addSpace = true; } - if (member.getProperties() & MClassMember::PROPERTY_QSLOT && !have_slot) { - *text += have_icon_fonts ? QString(QChar(0xe9cb)) : QStringLiteral("$"); - add_space = true; + if (member.properties() & MClassMember::PropertyQslot && !haveSlot) { + *text += haveIconFonts ? QString(QChar(0xe9cb)) : QStringLiteral("$"); + addSpace = true; } - if (add_space) { + if (addSpace) *text += QStringLiteral(" "); - } - if (member.getProperties() & MClassMember::PROPERTY_QINVOKABLE) { + if (member.properties() & MClassMember::PropertyQinvokable) *text += QStringLiteral("invokable "); - } - if (!member.getStereotypes().isEmpty()) { - *text += StereotypesItem::format(member.getStereotypes()); + if (!member.stereotypes().isEmpty()) { + *text += StereotypesItem::format(member.stereotypes()); *text += QStringLiteral(" "); } - if (member.getProperties() & MClassMember::PROPERTY_VIRTUAL) { + if (member.properties() & MClassMember::PropertyVirtual) *text += QStringLiteral("virtual "); - } - *text += member.getDeclaration(); - if (member.getProperties() & MClassMember::PROPERTY_CONST) { + *text += member.declaration(); + if (member.properties() & MClassMember::PropertyConst) *text += QStringLiteral(" const"); - } - if (member.getProperties() & MClassMember::PROPERTY_OVERRIDE) { + if (member.properties() & MClassMember::PropertyOverride) *text += QStringLiteral(" override"); - } - if (member.getProperties() & MClassMember::PROPERTY_FINAL) { + if (member.properties() & MClassMember::PropertyFinal) *text += QStringLiteral(" final"); - } - if (member.getProperties() & MClassMember::PROPERTY_ABSTRACT) { + if (member.properties() & MClassMember::PropertyAbstract) *text += QStringLiteral(" = 0"); - } } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.h index 7d84c5e157..74a29aaeda 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/classitem.h @@ -42,7 +42,6 @@ class QGraphicsLineItem; class QGraphicsTextItem; QT_END_NAMESPACE - namespace qmt { class DiagramSceneModel; @@ -53,77 +52,47 @@ class TemplateParameterBox; class RelationStarter; class Style; -class ClassItem : - public ObjectItem, - public IRelationable +class ClassItem : public ObjectItem, public IRelationable { public: - ClassItem(DClass *klass, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + ClassItem(DClass *klass, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent = 0); ~ClassItem(); -public: - void update(); -public: - - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const; - -public: - - QSizeF getMinimumSize() const; - -public: + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const; - QPointF getRelationStartPos() const; + QSizeF minimumSize() const; - void relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points); + QPointF relationStartPos() const; + void relationDrawn(const QString &id, const QPointF &toScenePos, + const QList<QPointF> &intermediatePoints); protected: - bool extendContextMenu(QMenu *menu); - bool handleSelectedContextMenuAction(QAction *action); private: - QSizeF calcMinimumGeometry() const; - void updateGeometry(); - void updateMembers(const Style *style); -private: - - CustomIconItem *_custom_icon; - - QGraphicsRectItem *_shape; - - QGraphicsSimpleTextItem *_namespace; - - QGraphicsSimpleTextItem *_class_name; - - ContextLabelItem *_context_label; - - QGraphicsLineItem *_attributes_separator; - - QString _attributes_text; - - QGraphicsTextItem *_attributes; - - QGraphicsLineItem *_methods_separator; - - QString _methods_text; - - QGraphicsTextItem *_methods; - - TemplateParameterBox *_template_parameter_box; - - RelationStarter *_relation_starter; - + CustomIconItem *m_customIcon; + QGraphicsRectItem *m_shape; + QGraphicsSimpleTextItem *m_namespace; + QGraphicsSimpleTextItem *m_className; + ContextLabelItem *m_contextLabel; + QGraphicsLineItem *m_attributesSeparator; + QString m_attributesText; + QGraphicsTextItem *m_attributes; + QGraphicsLineItem *m_methodsSeparator; + QString m_methodsText; + QGraphicsTextItem *m_methods; + TemplateParameterBox *m_templateParameterBox; + RelationStarter *m_relationStarter; }; -} +} // namespace qmt #endif // QMT_GRAPHICSCLASSITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.cpp index 0348563c9a..90021c1e9d 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.cpp @@ -54,7 +54,6 @@ #include <algorithm> - namespace qmt { static const qreal RECT_HEIGHT = 15.0; @@ -65,16 +64,15 @@ static const qreal LOWER_RECT_MIN_Y = 10.0; static const qreal BODY_VERT_BORDER = 4.0; static const qreal BODY_HORIZ_BORDER = 4.0; - -ComponentItem::ComponentItem(DComponent *component, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : ObjectItem(component, diagram_scene_model, parent), - _custom_icon(0), - _shape(0), - _upper_rect(0), - _lower_rect(0), - _component_name(0), - _context_label(0), - _relation_starter(0) +ComponentItem::ComponentItem(DComponent *component, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : ObjectItem(component, diagramSceneModel, parent), + m_customIcon(0), + m_shape(0), + m_upperRect(0), + m_lowerRect(0), + m_componentName(0), + m_contextLabel(0), + m_relationStarter(0) { } @@ -85,136 +83,127 @@ ComponentItem::~ComponentItem() void ComponentItem::update() { prepareGeometryChange(); - updateStereotypeIconDisplay(); - const Style *style = getAdaptedStyle(getStereotypeIconId()); + const Style *style = adaptedStyle(stereotypeIconId()); // custom icon - if (getStereotypeIconDisplay() == StereotypeIcon::DISPLAY_ICON) { - if (!_custom_icon) { - _custom_icon = new CustomIconItem(getDiagramSceneModel(), this); - } - _custom_icon->setStereotypeIconId(getStereotypeIconId()); - _custom_icon->setBaseSize(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); - _custom_icon->setBrush(style->getFillBrush()); - _custom_icon->setPen(style->getOuterLinePen()); - _custom_icon->setZValue(SHAPE_ZVALUE); - } else if (_custom_icon) { - _custom_icon->scene()->removeItem(_custom_icon); - delete _custom_icon; - _custom_icon = 0; + if (stereotypeIconDisplay() == StereotypeIcon::DisplayIcon) { + if (!m_customIcon) + m_customIcon = new CustomIconItem(diagramSceneModel(), this); + m_customIcon->setStereotypeIconId(stereotypeIconId()); + m_customIcon->setBaseSize(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); + m_customIcon->setBrush(style->fillBrush()); + m_customIcon->setPen(style->outerLinePen()); + m_customIcon->setZValue(SHAPE_ZVALUE); + } else if (m_customIcon) { + m_customIcon->scene()->removeItem(m_customIcon); + delete m_customIcon; + m_customIcon = 0; } // shape - bool delete_rects = false; - if (!_custom_icon) { - if (!_shape) { - _shape = new QGraphicsRectItem(this); - } - _shape->setBrush(style->getFillBrush()); - _shape->setPen(style->getOuterLinePen()); - _shape->setZValue(SHAPE_ZVALUE); + bool deleteRects = false; + if (!m_customIcon) { + if (!m_shape) + m_shape = new QGraphicsRectItem(this); + m_shape->setBrush(style->fillBrush()); + m_shape->setPen(style->outerLinePen()); + m_shape->setZValue(SHAPE_ZVALUE); if (!hasPlainShape()) { - if (!_upper_rect) { - _upper_rect = new QGraphicsRectItem(this); - } - _upper_rect->setBrush(style->getFillBrush()); - _upper_rect->setPen(style->getOuterLinePen()); - _upper_rect->setZValue(SHAPE_DETAILS_ZVALUE); - if (!_lower_rect) { - _lower_rect = new QGraphicsRectItem(this); - } - _lower_rect->setBrush(style->getFillBrush()); - _lower_rect->setPen(style->getOuterLinePen()); - _lower_rect->setZValue(SHAPE_DETAILS_ZVALUE); + if (!m_upperRect) + m_upperRect = new QGraphicsRectItem(this); + m_upperRect->setBrush(style->fillBrush()); + m_upperRect->setPen(style->outerLinePen()); + m_upperRect->setZValue(SHAPE_DETAILS_ZVALUE); + if (!m_lowerRect) + m_lowerRect = new QGraphicsRectItem(this); + m_lowerRect->setBrush(style->fillBrush()); + m_lowerRect->setPen(style->outerLinePen()); + m_lowerRect->setZValue(SHAPE_DETAILS_ZVALUE); } else { - delete_rects = true; + deleteRects = true; } } else { - delete_rects = true; - if (_shape) { - _shape->scene()->removeItem(_shape); - delete _shape; - _shape = 0; + deleteRects = true; + if (m_shape) { + m_shape->scene()->removeItem(m_shape); + delete m_shape; + m_shape = 0; } } - if (delete_rects) { - if (_lower_rect) { - _lower_rect->scene()->removeItem(_lower_rect); - delete _lower_rect; - _lower_rect = 0; + if (deleteRects) { + if (m_lowerRect) { + m_lowerRect->scene()->removeItem(m_lowerRect); + delete m_lowerRect; + m_lowerRect = 0; } - if (_upper_rect) { - _upper_rect->scene()->removeItem(_upper_rect); - delete _upper_rect; - _upper_rect = 0; + if (m_upperRect) { + m_upperRect->scene()->removeItem(m_upperRect); + delete m_upperRect; + m_upperRect = 0; } } // stereotypes - updateStereotypes(getStereotypeIconId(), getStereotypeIconDisplay(), style); + updateStereotypes(stereotypeIconId(), stereotypeIconDisplay(), style); // component name - if (!_component_name) { - _component_name = new QGraphicsSimpleTextItem(this); - } - _component_name->setFont(style->getHeaderFont()); - _component_name->setBrush(style->getTextBrush()); - _component_name->setText(getObject()->getName()); + if (!m_componentName) + m_componentName = new QGraphicsSimpleTextItem(this); + m_componentName->setFont(style->headerFont()); + m_componentName->setBrush(style->textBrush()); + m_componentName->setText(object()->name()); // context if (showContext()) { - if (!_context_label) { - _context_label = new ContextLabelItem(this); - } - _context_label->setFont(style->getSmallFont()); - _context_label->setBrush(style->getTextBrush()); - _context_label->setContext(getObject()->getContext()); - } else if (_context_label) { - _context_label->scene()->removeItem(_context_label); - delete _context_label; - _context_label = 0; + if (!m_contextLabel) + m_contextLabel = new ContextLabelItem(this); + m_contextLabel->setFont(style->smallFont()); + m_contextLabel->setBrush(style->textBrush()); + m_contextLabel->setContext(object()->context()); + } else if (m_contextLabel) { + m_contextLabel->scene()->removeItem(m_contextLabel); + delete m_contextLabel; + m_contextLabel = 0; } - updateSelectionMarker(_custom_icon); + updateSelectionMarker(m_customIcon); // relation starters if (isFocusSelected()) { - if (!_relation_starter && scene()) { - _relation_starter = new RelationStarter(this, getDiagramSceneModel(), 0); - scene()->addItem(_relation_starter); - _relation_starter->setZValue(RELATION_STARTER_ZVALUE); - _relation_starter->addArrow(QStringLiteral("dependency"), ArrowItem::SHAFT_DASHED, ArrowItem::HEAD_OPEN); - } - } else if (_relation_starter) { - if (_relation_starter->scene()) { - _relation_starter->scene()->removeItem(_relation_starter); + if (!m_relationStarter && scene()) { + m_relationStarter = new RelationStarter(this, diagramSceneModel(), 0); + scene()->addItem(m_relationStarter); + m_relationStarter->setZValue(RELATION_STARTER_ZVALUE); + m_relationStarter->addArrow(QStringLiteral("dependency"), ArrowItem::ShaftDashed, ArrowItem::HeadOpen); } - delete _relation_starter; - _relation_starter = 0; + } else if (m_relationStarter) { + if (m_relationStarter->scene()) + m_relationStarter->scene()->removeItem(m_relationStarter); + delete m_relationStarter; + m_relationStarter = 0; } updateAlignmentButtons(); - updateGeometry(); } -bool ComponentItem::intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const +bool ComponentItem::intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, QLineF *intersectionLine) const { QPolygonF polygon; - if (_custom_icon) { - // TODO use custom_icon path as shape - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + if (m_customIcon) { + // TODO use customIcon path as shape + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); - } else if (hasPlainShape()){ - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + } else if (hasPlainShape()) { + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } else { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() @@ -225,63 +214,46 @@ bool ComponentItem::intersectShapeWithLine(const QLineF &line, QPointF *intersec << rect.bottomLeft() + QPointF(0, UPPER_RECT_Y) << rect.topLeft(); } - return GeometryUtilities::intersect(polygon, line, intersection_point, intersection_line); + return GeometryUtilities::intersect(polygon, line, intersectionPoint, intersectionLine); } -QSizeF ComponentItem::getMinimumSize() const +QSizeF ComponentItem::minimumSize() const { return calcMinimumGeometry(); } -QList<ILatchable::Latch> ComponentItem::getHorizontalLatches(ILatchable::Action action, bool grabbed_item) const -{ - return ObjectItem::getHorizontalLatches(action, grabbed_item); -} - -QList<ILatchable::Latch> ComponentItem::getVerticalLatches(ILatchable::Action action, bool grabbed_item) const +QList<ILatchable::Latch> ComponentItem::horizontalLatches(ILatchable::Action action, bool grabbedItem) const { - return ObjectItem::getVerticalLatches(action, grabbed_item); + return ObjectItem::horizontalLatches(action, grabbedItem); } -#if 0 -QList<qreal> ComponentItem::getHorizontalLatches() const +QList<ILatchable::Latch> ComponentItem::verticalLatches(ILatchable::Action action, bool grabbedItem) const { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); - return QList<qreal>() << (rect.left() - RECT_WIDTH * 0.5) << rect.left() << rect.right(); + return ObjectItem::verticalLatches(action, grabbedItem); } -QList<qreal> ComponentItem::getVerticalLatches() const -{ - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); - return QList<qreal>() << rect.top() << rect.bottom(); -} -#endif - -QPointF ComponentItem::getRelationStartPos() const +QPointF ComponentItem::relationStartPos() const { return pos(); } -void ComponentItem::relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points) +void ComponentItem::relationDrawn(const QString &id, const QPointF &toScenePos, const QList<QPointF> &intermediatePoints) { - DElement *target_element = getDiagramSceneModel()->findTopmostElement(to_scene_pos); - if (target_element) { + DElement *targetElement = diagramSceneModel()->findTopmostElement(toScenePos); + if (targetElement) { if (id == QStringLiteral("dependency")) { - DObject *dependant_object = dynamic_cast<DObject *>(target_element); - if (dependant_object) { - getDiagramSceneModel()->getDiagramSceneController()->createDependency(getObject(), dependant_object, intermediate_points, getDiagramSceneModel()->getDiagram()); - } + DObject *dependantObject = dynamic_cast<DObject *>(targetElement); + if (dependantObject) + diagramSceneModel()->diagramSceneController()->createDependency(object(), dependantObject, intermediatePoints, diagramSceneModel()->diagram()); } } } bool ComponentItem::hasPlainShape() const { - DComponent *diagram_component = dynamic_cast<DComponent *>(getObject()); - QMT_CHECK(diagram_component); - return diagram_component->getPlainShape(); + DComponent *diagramComponent = dynamic_cast<DComponent *>(object()); + QMT_CHECK(diagramComponent); + return diagramComponent->isPlainShape(); } QSizeF ComponentItem::calcMinimumGeometry() const @@ -289,34 +261,32 @@ QSizeF ComponentItem::calcMinimumGeometry() const double width = 0.0; double height = 0.0; - if (_custom_icon) { - return getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); + if (m_customIcon) { + return stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); } height += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - width = std::max(width, stereotype_icon_item->boundingRect().width()); - height += stereotype_icon_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + width = std::max(width, stereotypeIconItem->boundingRect().width()); + height += stereotypeIconItem->boundingRect().height(); } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - width = std::max(width, stereotypes_item->boundingRect().width()); - height += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + width = std::max(width, stereotypesItem->boundingRect().width()); + height += stereotypesItem->boundingRect().height(); } - if (_component_name) { - width = std::max(width, _component_name->boundingRect().width()); - height += _component_name->boundingRect().height(); - } - if (_context_label) { - height += _context_label->getHeight(); + if (m_componentName) { + width = std::max(width, m_componentName->boundingRect().width()); + height += m_componentName->boundingRect().height(); } + if (m_contextLabel) + height += m_contextLabel->height(); height += BODY_VERT_BORDER; if (!hasPlainShape()) { width = RECT_WIDTH * 0.5 + BODY_HORIZ_BORDER + width + BODY_HORIZ_BORDER + RECT_WIDTH * 0.5; - double min_height = UPPER_RECT_Y + RECT_HEIGHT + RECT_Y_DISTANCE + RECT_HEIGHT + LOWER_RECT_MIN_Y; - if (height < min_height) { - height = min_height; - } + double minHeight = UPPER_RECT_Y + RECT_HEIGHT + RECT_Y_DISTANCE + RECT_HEIGHT + LOWER_RECT_MIN_Y; + if (height < minHeight) + height = minHeight; } else { width = BODY_HORIZ_BORDER + width + BODY_HORIZ_BORDER; } @@ -336,16 +306,14 @@ void ComponentItem::updateGeometry() width = geometry.width(); height = geometry.height(); - if (getObject()->hasAutoSize()) { + if (object()->isAutoSized()) { // nothing } else { - QRectF rect = getObject()->getRect(); - if (rect.width() > width) { + QRectF rect = object()->rect(); + if (rect.width() > width) width = rect.width(); - } - if (rect.height() > height) { + if (rect.height() > height) height = rect.height(); - } } // update sizes and positions @@ -355,70 +323,67 @@ void ComponentItem::updateGeometry() //double bottom = height / 2.0; double y = top; - setPos(getObject()->getPos()); + setPos(object()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getObject()->setRect(rect); + object()->setRect(rect); - if (_custom_icon) { - _custom_icon->setPos(left, top); - _custom_icon->setActualSize(QSizeF(width, height)); + if (m_customIcon) { + m_customIcon->setPos(left, top); + m_customIcon->setActualSize(QSizeF(width, height)); y += height; } - if (_shape) { - _shape->setRect(rect); - } + if (m_shape) + m_shape->setRect(rect); - if (_upper_rect) { - QRectF upper_rect(0, 0, RECT_WIDTH, RECT_HEIGHT); - _upper_rect->setRect(upper_rect); - _upper_rect->setPos(left - RECT_WIDTH * 0.5, top + UPPER_RECT_Y); + if (m_upperRect) { + QRectF upperRect(0, 0, RECT_WIDTH, RECT_HEIGHT); + m_upperRect->setRect(upperRect); + m_upperRect->setPos(left - RECT_WIDTH * 0.5, top + UPPER_RECT_Y); } - if (_lower_rect) { - QRectF lower_rect(0, 0, RECT_WIDTH, RECT_HEIGHT); - _lower_rect->setRect(lower_rect); - _lower_rect->setPos(left - RECT_WIDTH * 0.5, top + UPPER_RECT_Y + RECT_HEIGHT + RECT_Y_DISTANCE); + if (m_lowerRect) { + QRectF lowerRect(0, 0, RECT_WIDTH, RECT_HEIGHT); + m_lowerRect->setRect(lowerRect); + m_lowerRect->setPos(left - RECT_WIDTH * 0.5, top + UPPER_RECT_Y + RECT_HEIGHT + RECT_Y_DISTANCE); } y += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - stereotype_icon_item->setPos(right - stereotype_icon_item->boundingRect().width() - BODY_HORIZ_BORDER, y); - y += stereotype_icon_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + stereotypeIconItem->setPos(right - stereotypeIconItem->boundingRect().width() - BODY_HORIZ_BORDER, y); + y += stereotypeIconItem->boundingRect().height(); } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(-stereotypes_item->boundingRect().width() / 2.0, y); - y += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(-stereotypesItem->boundingRect().width() / 2.0, y); + y += stereotypesItem->boundingRect().height(); } - if (_component_name) { - _component_name->setPos(-_component_name->boundingRect().width() / 2.0, y); - y += _component_name->boundingRect().height(); + if (m_componentName) { + m_componentName->setPos(-m_componentName->boundingRect().width() / 2.0, y); + y += m_componentName->boundingRect().height(); } - if (_context_label) { - if (_custom_icon) { - _context_label->resetMaxWidth(); + if (m_contextLabel) { + if (m_customIcon) { + m_contextLabel->resetMaxWidth(); } else { - double max_context_width = width - 2 * BODY_HORIZ_BORDER - (hasPlainShape() ? 0 : RECT_WIDTH); - _context_label->setMaxWidth(max_context_width); + double maxContextWidth = width - 2 * BODY_HORIZ_BORDER - (hasPlainShape() ? 0 : RECT_WIDTH); + m_contextLabel->setMaxWidth(maxContextWidth); } - _context_label->setPos(-_context_label->boundingRect().width() / 2.0, y); - y += _context_label->boundingRect().height(); + m_contextLabel->setPos(-m_contextLabel->boundingRect().width() / 2.0, y); + y += m_contextLabel->boundingRect().height(); } updateSelectionMarkerGeometry(rect); - if (_relation_starter) { - _relation_starter->setPos(mapToScene(QPointF(right + 8.0, top))); - } + if (m_relationStarter) + m_relationStarter->setPos(mapToScene(QPointF(right + 8.0, top))); updateAlignmentButtonsGeometry(rect); - updateDepth(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.h index 3750df10a8..e0bd11a14f 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/componentitem.h @@ -41,7 +41,6 @@ class QGraphicsSimpleTextItem; class QGraphicsLineItem; QT_END_NAMESPACE - namespace qmt { class DiagramSceneModel; @@ -50,66 +49,41 @@ class CustomIconItem; class ContextLabelItem; class RelationStarter; - -class ComponentItem : - public ObjectItem, - public IRelationable +class ComponentItem : public ObjectItem, public IRelationable { public: - ComponentItem(DComponent *component, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + ComponentItem(DComponent *component, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~ComponentItem(); -public: - void update(); -public: - - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const; + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const; -public: - - QSizeF getMinimumSize() const; - -public: + QSizeF minimumSize() const; - QList<Latch> getHorizontalLatches(Action action, bool grabbed_item) const; - - QList<Latch> getVerticalLatches(Action action, bool grabbed_item) const; - -public: + QList<Latch> horizontalLatches(Action action, bool grabbedItem) const; + QList<Latch> verticalLatches(Action action, bool grabbedItem) const; - QPointF getRelationStartPos() const; - - void relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points); + QPointF relationStartPos() const; + void relationDrawn(const QString &id, const QPointF &toScenePos, const + QList<QPointF> &intermediatePoints); private: - bool hasPlainShape() const; - QSizeF calcMinimumGeometry() const; - void updateGeometry(); -private: - - CustomIconItem *_custom_icon; - - QGraphicsRectItem *_shape; - - QGraphicsRectItem *_upper_rect; - - QGraphicsRectItem *_lower_rect; - - QGraphicsSimpleTextItem *_component_name; - - ContextLabelItem *_context_label; - - RelationStarter *_relation_starter; - + CustomIconItem *m_customIcon; + QGraphicsRectItem *m_shape; + QGraphicsRectItem *m_upperRect; + QGraphicsRectItem *m_lowerRect; + QGraphicsSimpleTextItem *m_componentName; + ContextLabelItem *m_contextLabel; + RelationStarter *m_relationStarter; }; -} +} // namespace qmt #endif // QMT_GRAPHICSCOMPONENTITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.cpp index fc8d5f3aad..df53c6a0bd 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.cpp @@ -47,7 +47,6 @@ #include <QBrush> #include <QPen> - namespace qmt { static const qreal MINIMUM_AUTO_WIDTH = 60.0; @@ -58,13 +57,12 @@ static const qreal FOLD_HEIGHT = 15.0; static const qreal BODY_HORIZ_BORDER = 4.0; static const qreal BODY_VERT_BORDER = 4.0; - -DiagramItem::DiagramItem(DDiagram *diagram, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : ObjectItem(diagram, diagram_scene_model, parent), - _custom_icon(0), - _body(0), - _fold(0), - _diagram_name(0) +DiagramItem::DiagramItem(DDiagram *diagram, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : ObjectItem(diagram, diagramSceneModel, parent), + m_customIcon(0), + m_body(0), + m_fold(0), + m_diagramName(0) { } @@ -75,89 +73,82 @@ DiagramItem::~DiagramItem() void DiagramItem::update() { prepareGeometryChange(); - updateStereotypeIconDisplay(); - const Style *style = getAdaptedStyle(getStereotypeIconId()); + const Style *style = adaptedStyle(stereotypeIconId()); // custom icon - if (getStereotypeIconDisplay() == StereotypeIcon::DISPLAY_ICON) { - if (!_custom_icon) { - _custom_icon = new CustomIconItem(getDiagramSceneModel(), this); - } - _custom_icon->setStereotypeIconId(getStereotypeIconId()); - _custom_icon->setBaseSize(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); - _custom_icon->setBrush(style->getFillBrush()); - _custom_icon->setPen(style->getOuterLinePen()); - _custom_icon->setZValue(SHAPE_ZVALUE); - } else if (_custom_icon) { - _custom_icon->scene()->removeItem(_custom_icon); - delete _custom_icon; - _custom_icon = 0; + if (stereotypeIconDisplay() == StereotypeIcon::DisplayIcon) { + if (!m_customIcon) + m_customIcon = new CustomIconItem(diagramSceneModel(), this); + m_customIcon->setStereotypeIconId(stereotypeIconId()); + m_customIcon->setBaseSize(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); + m_customIcon->setBrush(style->fillBrush()); + m_customIcon->setPen(style->outerLinePen()); + m_customIcon->setZValue(SHAPE_ZVALUE); + } else if (m_customIcon) { + m_customIcon->scene()->removeItem(m_customIcon); + delete m_customIcon; + m_customIcon = 0; } // shape - if (!_custom_icon) { - if (!_body) { - _body = new QGraphicsPolygonItem(this); - } - _body->setBrush(style->getFillBrush()); - _body->setPen(style->getOuterLinePen()); - _body->setZValue(SHAPE_ZVALUE); - if (!_fold) { - _fold = new QGraphicsPolygonItem(this); - } - _fold->setBrush(style->getExtraFillBrush()); - _fold->setPen(style->getOuterLinePen()); - _fold->setZValue(SHAPE_DETAILS_ZVALUE); + if (!m_customIcon) { + if (!m_body) + m_body = new QGraphicsPolygonItem(this); + m_body->setBrush(style->fillBrush()); + m_body->setPen(style->outerLinePen()); + m_body->setZValue(SHAPE_ZVALUE); + if (!m_fold) + m_fold = new QGraphicsPolygonItem(this); + m_fold->setBrush(style->extraFillBrush()); + m_fold->setPen(style->outerLinePen()); + m_fold->setZValue(SHAPE_DETAILS_ZVALUE); } else { - if (_fold) { - _fold->scene()->removeItem(_fold); - delete _fold; - _fold = 0; + if (m_fold) { + m_fold->scene()->removeItem(m_fold); + delete m_fold; + m_fold = 0; } - if (_body) { - _body->scene()->removeItem(_body); - delete _body; - _body = 0; + if (m_body) { + m_body->scene()->removeItem(m_body); + delete m_body; + m_body = 0; } } // stereotypes - updateStereotypes(getStereotypeIconId(), getStereotypeIconDisplay(), style); + updateStereotypes(stereotypeIconId(), stereotypeIconDisplay(), style); // diagram name - if (!_diagram_name) { - _diagram_name = new QGraphicsSimpleTextItem(this); - } - _diagram_name->setFont(style->getHeaderFont()); - _diagram_name->setBrush(style->getTextBrush()); - _diagram_name->setText(getObject()->getName()); - - updateSelectionMarker(_custom_icon); + if (!m_diagramName) + m_diagramName = new QGraphicsSimpleTextItem(this); + m_diagramName->setFont(style->headerFont()); + m_diagramName->setBrush(style->textBrush()); + m_diagramName->setText(object()->name()); + updateSelectionMarker(m_customIcon); updateAlignmentButtons(); - updateGeometry(); } -bool DiagramItem::intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const +bool DiagramItem::intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, QLineF *intersectionLine) const { QPolygonF polygon; - if (_custom_icon) { - // TODO use custom_icon path as shape - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + if (m_customIcon) { + // TODO use customIcon path as shape + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } else { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } - return GeometryUtilities::intersect(polygon, line, intersection_point, intersection_line); + return GeometryUtilities::intersect(polygon, line, intersectionPoint, intersectionLine); } -QSizeF DiagramItem::getMinimumSize() const +QSizeF DiagramItem::minimumSize() const { return calcMinimumGeometry(); } @@ -167,24 +158,25 @@ QSizeF DiagramItem::calcMinimumGeometry() const double width = MINIMUM_WIDTH; double height = 0.0; - if (_custom_icon) { - return getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); + if (m_customIcon) { + return stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), + CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); } height += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - width = std::max(width, stereotype_icon_item->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += std::max(FOLD_HEIGHT, stereotype_icon_item->boundingRect().height()); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + width = std::max(width, stereotypeIconItem->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += std::max(FOLD_HEIGHT, stereotypeIconItem->boundingRect().height()); } else { height += FOLD_HEIGHT; } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - width = std::max(width, stereotypes_item->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + width = std::max(width, stereotypesItem->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += stereotypesItem->boundingRect().height(); } - if (_diagram_name) { - width = std::max(width, _diagram_name->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - height += _diagram_name->boundingRect().height(); + if (m_diagramName) { + width = std::max(width, m_diagramName->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + height += m_diagramName->boundingRect().height(); } height += BODY_VERT_BORDER; @@ -203,23 +195,19 @@ void DiagramItem::updateGeometry() width = geometry.width(); height = geometry.height(); - if (getObject()->hasAutoSize()) { - if (!_custom_icon) { - if (width < MINIMUM_AUTO_WIDTH) { + if (object()->isAutoSized()) { + if (!m_customIcon) { + if (width < MINIMUM_AUTO_WIDTH) width = MINIMUM_AUTO_WIDTH; - } - if (height < MINIMUM_AUTO_HEIGHT) { + if (height < MINIMUM_AUTO_HEIGHT) height = MINIMUM_AUTO_HEIGHT; - } } } else { - QRectF rect = getObject()->getRect(); - if (rect.width() > width) { + QRectF rect = object()->rect(); + if (rect.width() > width) width = rect.width(); - } - if (rect.height() > height) { + if (rect.height() > height) height = rect.height(); - } } // update sizes and positions @@ -229,64 +217,61 @@ void DiagramItem::updateGeometry() //double bottom = height / 2.0; double y = top; - setPos(getObject()->getPos()); + setPos(object()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getObject()->setRect(rect); + object()->setRect(rect); - if (_custom_icon) { - _custom_icon->setPos(left, top); - _custom_icon->setActualSize(QSizeF(width, height)); + if (m_customIcon) { + m_customIcon->setPos(left, top); + m_customIcon->setActualSize(QSizeF(width, height)); y += height; } - if (_body) { - QPolygonF body_polygon; - body_polygon + if (m_body) { + QPolygonF bodyPolygon; + bodyPolygon << rect.topLeft() << rect.topRight() + QPointF(-FOLD_WIDTH, 0.0) << rect.topRight() + QPointF(0.0, FOLD_HEIGHT) << rect.bottomRight() << rect.bottomLeft(); - _body->setPolygon(body_polygon); + m_body->setPolygon(bodyPolygon); } - if (_fold) { - QPolygonF fold_polygon; - fold_polygon + if (m_fold) { + QPolygonF foldPolygon; + foldPolygon << rect.topRight() + QPointF(-FOLD_WIDTH, 0.0) << rect.topRight() + QPointF(0.0, FOLD_HEIGHT) << rect.topRight() + QPointF(-FOLD_WIDTH, FOLD_HEIGHT); - _fold->setPolygon(fold_polygon); + m_fold->setPolygon(foldPolygon); } y += BODY_VERT_BORDER; - if (!_custom_icon) { - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - stereotype_icon_item->setPos(left + BODY_HORIZ_BORDER, y); - y += std::max(FOLD_HEIGHT, stereotype_icon_item->boundingRect().height()); + if (!m_customIcon) { + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + stereotypeIconItem->setPos(left + BODY_HORIZ_BORDER, y); + y += std::max(FOLD_HEIGHT, stereotypeIconItem->boundingRect().height()); } else { y += FOLD_HEIGHT; } } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(-stereotypes_item->boundingRect().width() / 2.0, y); - y += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(-stereotypesItem->boundingRect().width() / 2.0, y); + y += stereotypesItem->boundingRect().height(); } - if (_diagram_name) { - _diagram_name->setPos(-_diagram_name->boundingRect().width() / 2.0, y); - y += _diagram_name->boundingRect().height(); + if (m_diagramName) { + m_diagramName->setPos(-m_diagramName->boundingRect().width() / 2.0, y); + y += m_diagramName->boundingRect().height(); } updateSelectionMarkerGeometry(rect); - updateAlignmentButtonsGeometry(rect); - updateDepth(); - } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.h index 0c42320256..c768fc0a0b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/diagramitem.h @@ -33,52 +33,36 @@ #include "objectitem.h" - namespace qmt { class DDiagram; class DiagramSceneModel; class CustomIconItem; - -class DiagramItem : - public ObjectItem +class DiagramItem : public ObjectItem { public: - explicit DiagramItem(DDiagram *diagram, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + explicit DiagramItem(DDiagram *diagram, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~DiagramItem(); -public: - virtual void update(); -public: - - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const; - -public: + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const; - QSizeF getMinimumSize() const; + QSizeF minimumSize() const; private: - QSizeF calcMinimumGeometry() const; - void updateGeometry(); -private: - - CustomIconItem *_custom_icon; - - QGraphicsPolygonItem *_body; - - QGraphicsPolygonItem *_fold; - - QGraphicsSimpleTextItem *_diagram_name; - + CustomIconItem *m_customIcon; + QGraphicsPolygonItem *m_body; + QGraphicsPolygonItem *m_fold; + QGraphicsSimpleTextItem *m_diagramName; }; -} +} // namespace qmt #endif // QMT_GRAPHICSDIAGRAMITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.cpp index 53b7768fdd..d917d8fd66 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.cpp @@ -54,20 +54,18 @@ #include <algorithm> - namespace qmt { static const qreal BODY_VERT_BORDER = 4.0; static const qreal BODY_HORIZ_BORDER = 4.0; - -ItemItem::ItemItem(DItem *item, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : ObjectItem(item, diagram_scene_model, parent), - _custom_icon(0), - _shape(0), - _item_name(0), - _context_label(0), - _relation_starter(0) +ItemItem::ItemItem(DItem *item, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : ObjectItem(item, diagramSceneModel, parent), + m_customIcon(0), + m_shape(0), + m_itemName(0), + m_contextLabel(0), + m_relationStarter(0) { } @@ -78,139 +76,131 @@ ItemItem::~ItemItem() void ItemItem::update() { prepareGeometryChange(); - updateStereotypeIconDisplay(); - DItem *diagram_item = dynamic_cast<DItem *>(getObject()); - Q_UNUSED(diagram_item); // avoid warning about unsed variable - QMT_CHECK(diagram_item); - - const Style *style = getAdaptedStyle(getShapeIconId()); - - if (!getShapeIconId().isEmpty()) { - if (!_custom_icon) { - _custom_icon = new CustomIconItem(getDiagramSceneModel(), this); - } - _custom_icon->setStereotypeIconId(getShapeIconId()); - _custom_icon->setBaseSize(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); - _custom_icon->setBrush(style->getFillBrush()); - _custom_icon->setPen(style->getOuterLinePen()); - _custom_icon->setZValue(SHAPE_ZVALUE); - } else if (_custom_icon) { - _custom_icon->scene()->removeItem(_custom_icon); - delete _custom_icon; - _custom_icon = 0; + DItem *diagramItem = dynamic_cast<DItem *>(object()); + Q_UNUSED(diagramItem); // avoid warning about unsed variable + QMT_CHECK(diagramItem); + + const Style *style = adaptedStyle(shapeIconId()); + + if (!shapeIconId().isEmpty()) { + if (!m_customIcon) + m_customIcon = new CustomIconItem(diagramSceneModel(), this); + m_customIcon->setStereotypeIconId(shapeIconId()); + m_customIcon->setBaseSize(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); + m_customIcon->setBrush(style->fillBrush()); + m_customIcon->setPen(style->outerLinePen()); + m_customIcon->setZValue(SHAPE_ZVALUE); + } else if (m_customIcon) { + m_customIcon->scene()->removeItem(m_customIcon); + delete m_customIcon; + m_customIcon = 0; } // shape - if (!_custom_icon) { - if (!_shape) { - _shape = new QGraphicsRectItem(this); - } - _shape->setBrush(style->getFillBrush()); - _shape->setPen(style->getOuterLinePen()); - _shape->setZValue(SHAPE_ZVALUE); + if (!m_customIcon) { + if (!m_shape) + m_shape = new QGraphicsRectItem(this); + m_shape->setBrush(style->fillBrush()); + m_shape->setPen(style->outerLinePen()); + m_shape->setZValue(SHAPE_ZVALUE); } else { - if (_shape) { - _shape->scene()->removeItem(_shape); - delete _shape; - _shape = 0; + if (m_shape) { + m_shape->scene()->removeItem(m_shape); + delete m_shape; + m_shape = 0; } } // stereotypes - updateStereotypes(getStereotypeIconId(), getStereotypeIconDisplay(), getAdaptedStyle(getStereotypeIconId())); + updateStereotypes(stereotypeIconId(), stereotypeIconDisplay(), adaptedStyle(stereotypeIconId())); // component name - if (!_item_name) { - _item_name = new QGraphicsSimpleTextItem(this); - } - _item_name->setFont(style->getHeaderFont()); - _item_name->setBrush(style->getTextBrush()); - _item_name->setText(getObject()->getName()); + if (!m_itemName) + m_itemName = new QGraphicsSimpleTextItem(this); + m_itemName->setFont(style->headerFont()); + m_itemName->setBrush(style->textBrush()); + m_itemName->setText(object()->name()); // context if (showContext()) { - if (!_context_label) { - _context_label = new ContextLabelItem(this); - } - _context_label->setFont(style->getSmallFont()); - _context_label->setBrush(style->getTextBrush()); - _context_label->setContext(getObject()->getContext()); - } else if (_context_label) { - _context_label->scene()->removeItem(_context_label); - delete _context_label; - _context_label = 0; + if (!m_contextLabel) + m_contextLabel = new ContextLabelItem(this); + m_contextLabel->setFont(style->smallFont()); + m_contextLabel->setBrush(style->textBrush()); + m_contextLabel->setContext(object()->context()); + } else if (m_contextLabel) { + m_contextLabel->scene()->removeItem(m_contextLabel); + delete m_contextLabel; + m_contextLabel = 0; } - updateSelectionMarker(_custom_icon); + updateSelectionMarker(m_customIcon); // relation starters if (isFocusSelected()) { - if (!_relation_starter && scene()) { - _relation_starter = new RelationStarter(this, getDiagramSceneModel(), 0); - scene()->addItem(_relation_starter); - _relation_starter->setZValue(RELATION_STARTER_ZVALUE); - _relation_starter->addArrow(QStringLiteral("dependency"), ArrowItem::SHAFT_DASHED, ArrowItem::HEAD_OPEN); + if (!m_relationStarter && scene()) { + m_relationStarter = new RelationStarter(this, diagramSceneModel(), 0); + scene()->addItem(m_relationStarter); + m_relationStarter->setZValue(RELATION_STARTER_ZVALUE); + m_relationStarter->addArrow(QStringLiteral("dependency"), ArrowItem::ShaftDashed, ArrowItem::HeadOpen); } - } else if (_relation_starter) { - if (_relation_starter->scene()) { - _relation_starter->scene()->removeItem(_relation_starter); - } - delete _relation_starter; - _relation_starter = 0; + } else if (m_relationStarter) { + if (m_relationStarter->scene()) + m_relationStarter->scene()->removeItem(m_relationStarter); + delete m_relationStarter; + m_relationStarter = 0; } updateAlignmentButtons(); - updateGeometry(); } -bool ItemItem::intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const +bool ItemItem::intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, QLineF *intersectionLine) const { QPolygonF polygon; - if (_custom_icon) { - // TODO use custom_icon path as shape - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + if (m_customIcon) { + // TODO use customIcon path as shape + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } else { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } - return GeometryUtilities::intersect(polygon, line, intersection_point, intersection_line); + return GeometryUtilities::intersect(polygon, line, intersectionPoint, intersectionLine); } -QSizeF ItemItem::getMinimumSize() const +QSizeF ItemItem::minimumSize() const { return calcMinimumGeometry(); } -QList<ILatchable::Latch> ItemItem::getHorizontalLatches(ILatchable::Action action, bool grabbed_item) const +QList<ILatchable::Latch> ItemItem::horizontalLatches(ILatchable::Action action, bool grabbedItem) const { - return ObjectItem::getHorizontalLatches(action, grabbed_item); + return ObjectItem::horizontalLatches(action, grabbedItem); } -QList<ILatchable::Latch> ItemItem::getVerticalLatches(ILatchable::Action action, bool grabbed_item) const +QList<ILatchable::Latch> ItemItem::verticalLatches(ILatchable::Action action, bool grabbedItem) const { - return ObjectItem::getVerticalLatches(action, grabbed_item); + return ObjectItem::verticalLatches(action, grabbedItem); } -QPointF ItemItem::getRelationStartPos() const +QPointF ItemItem::relationStartPos() const { return pos(); } -void ItemItem::relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points) +void ItemItem::relationDrawn(const QString &id, const QPointF &toScenePos, const QList<QPointF> &intermediatePoints) { - DElement *target_element = getDiagramSceneModel()->findTopmostElement(to_scene_pos); - if (target_element) { + DElement *targetElement = diagramSceneModel()->findTopmostElement(toScenePos); + if (targetElement) { if (id == QStringLiteral("dependency")) { - DObject *dependant_object = dynamic_cast<DObject *>(target_element); - if (dependant_object) { - getDiagramSceneModel()->getDiagramSceneController()->createDependency(getObject(), dependant_object, intermediate_points, getDiagramSceneModel()->getDiagram()); - } + DObject *dependantObject = dynamic_cast<DObject *>(targetElement); + if (dependantObject) + diagramSceneModel()->diagramSceneController()->createDependency(object(), dependantObject, intermediatePoints, diagramSceneModel()->diagram()); } } } @@ -220,26 +210,26 @@ QSizeF ItemItem::calcMinimumGeometry() const double width = 0.0; double height = 0.0; - if (_custom_icon) { - return getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); + if (m_customIcon) { + return stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), + CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT); } height += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - width = std::max(width, stereotype_icon_item->boundingRect().width()); - height += stereotype_icon_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + width = std::max(width, stereotypeIconItem->boundingRect().width()); + height += stereotypeIconItem->boundingRect().height(); } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - width = std::max(width, stereotypes_item->boundingRect().width()); - height += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + width = std::max(width, stereotypesItem->boundingRect().width()); + height += stereotypesItem->boundingRect().height(); } - if (_item_name) { - width = std::max(width, _item_name->boundingRect().width()); - height += _item_name->boundingRect().height(); - } - if (_context_label) { - height += _context_label->getHeight(); + if (m_itemName) { + width = std::max(width, m_itemName->boundingRect().width()); + height += m_itemName->boundingRect().height(); } + if (m_contextLabel) + height += m_contextLabel->height(); height += BODY_VERT_BORDER; width = BODY_HORIZ_BORDER + width + BODY_HORIZ_BORDER; @@ -259,16 +249,14 @@ void ItemItem::updateGeometry() width = geometry.width(); height = geometry.height(); - if (getObject()->hasAutoSize()) { + if (object()->isAutoSized()) { // nothing } else { - QRectF rect = getObject()->getRect(); - if (rect.width() > width) { + QRectF rect = object()->rect(); + if (rect.width() > width) width = rect.width(); - } - if (rect.height() > height) { + if (rect.height() > height) height = rect.height(); - } } // update sizes and positions @@ -278,57 +266,54 @@ void ItemItem::updateGeometry() //double bottom = height / 2.0; double y = top; - setPos(getObject()->getPos()); + setPos(object()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getObject()->setRect(rect); + object()->setRect(rect); - if (_custom_icon) { - _custom_icon->setPos(left, top); - _custom_icon->setActualSize(QSizeF(width, height)); + if (m_customIcon) { + m_customIcon->setPos(left, top); + m_customIcon->setActualSize(QSizeF(width, height)); y += height; } - if (_shape) { - _shape->setRect(rect); - } + if (m_shape) + m_shape->setRect(rect); y += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - stereotype_icon_item->setPos(right - stereotype_icon_item->boundingRect().width() - BODY_HORIZ_BORDER, y); - y += stereotype_icon_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + stereotypeIconItem->setPos(right - stereotypeIconItem->boundingRect().width() - BODY_HORIZ_BORDER, y); + y += stereotypeIconItem->boundingRect().height(); } - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(-stereotypes_item->boundingRect().width() / 2.0, y); - y += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(-stereotypesItem->boundingRect().width() / 2.0, y); + y += stereotypesItem->boundingRect().height(); } - if (_item_name) { - _item_name->setPos(-_item_name->boundingRect().width() / 2.0, y); - y += _item_name->boundingRect().height(); + if (m_itemName) { + m_itemName->setPos(-m_itemName->boundingRect().width() / 2.0, y); + y += m_itemName->boundingRect().height(); } - if (_context_label) { - if (_custom_icon) { - _context_label->resetMaxWidth(); + if (m_contextLabel) { + if (m_customIcon) { + m_contextLabel->resetMaxWidth(); } else { - double max_context_width = width - 2 * BODY_HORIZ_BORDER; - _context_label->setMaxWidth(max_context_width); + double maxContextWidth = width - 2 * BODY_HORIZ_BORDER; + m_contextLabel->setMaxWidth(maxContextWidth); } - _context_label->setPos(-_context_label->boundingRect().width() / 2.0, y); - y += _context_label->boundingRect().height(); + m_contextLabel->setPos(-m_contextLabel->boundingRect().width() / 2.0, y); + y += m_contextLabel->boundingRect().height(); } updateSelectionMarkerGeometry(rect); - if (_relation_starter) { - _relation_starter->setPos(mapToScene(QPointF(right + 8.0, top))); - } + if (m_relationStarter) + m_relationStarter->setPos(mapToScene(QPointF(right + 8.0, top))); updateAlignmentButtonsGeometry(rect); - updateDepth(); } diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.h index 3798747b02..1f6e4a6a39 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/itemitem.h @@ -41,7 +41,6 @@ class QGraphicsSimpleTextItem; class QGraphicsLineItem; QT_END_NAMESPACE - namespace qmt { class DiagramSceneModel; @@ -50,58 +49,35 @@ class CustomIconItem; class ContextLabelItem; class RelationStarter; - -class ItemItem : - public ObjectItem, - public IRelationable +class ItemItem : public ObjectItem, public IRelationable { public: - ItemItem(DItem *item, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + ItemItem(DItem *item, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent = 0); ~ItemItem(); -public: - void update(); -public: - - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const; - -public: - - QSizeF getMinimumSize() const; - -public: - - QList<Latch> getHorizontalLatches(Action action, bool grabbed_item) const; - - QList<Latch> getVerticalLatches(Action action, bool grabbed_item) const; + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const; -public: + QSizeF minimumSize() const; - QPointF getRelationStartPos() const; + QList<Latch> horizontalLatches(Action action, bool grabbedItem) const; + QList<Latch> verticalLatches(Action action, bool grabbedItem) const; - void relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points); + QPointF relationStartPos() const; + void relationDrawn(const QString &id, const QPointF &toScenePos, + const QList<QPointF> &intermediatePoints); private: - QSizeF calcMinimumGeometry() const; - void updateGeometry(); -private: - - CustomIconItem *_custom_icon; - - QGraphicsRectItem *_shape; - - QGraphicsSimpleTextItem *_item_name; - - ContextLabelItem *_context_label; - - RelationStarter *_relation_starter; - + CustomIconItem *m_customIcon; + QGraphicsRectItem *m_shape; + QGraphicsSimpleTextItem *m_itemName; + ContextLabelItem *m_contextLabel; + RelationStarter *m_relationStarter; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.cpp index 3788f93e1a..aeb40c77e2 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.cpp @@ -58,22 +58,20 @@ #include <QCursor> #include <QMenu> -#include <QDebug> - namespace qmt { -ObjectItem::ObjectItem(DObject *object, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +ObjectItem::ObjectItem(DObject *object, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsItem(parent), - _object(object), - _diagram_scene_model(diagram_scene_model), - _secondary_selected(false), - _focus_selected(false), - _stereotype_icon_display(StereotypeIcon::DISPLAY_LABEL), - _stereotypes(0), - _stereotype_icon(0), - _selection_marker(0), - _horizontal_align_buttons(0), - _vertical_align_buttons(0) + m_object(object), + m_diagramSceneModel(diagramSceneModel), + m_isSecondarySelected(false), + m_isFocusSelected(false), + m_stereotypeIconDisplay(StereotypeIcon::DisplayLabel), + m_stereotypes(0), + m_stereotypeIcon(0), + m_selectionMarker(0), + m_horizontalAlignButtons(0), + m_verticalAlignButtons(0) { setFlags(QGraphicsItem::ItemIsSelectable); } @@ -94,509 +92,507 @@ void ObjectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option Q_UNUSED(widget); } -QPointF ObjectItem::getPos() const +QPointF ObjectItem::pos() const { - return _object->getPos(); + return m_object->pos(); } -QRectF ObjectItem::getRect() const +QRectF ObjectItem::rect() const { - return _object->getRect(); + return m_object->rect(); } -void ObjectItem::setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta) +void ObjectItem::setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, const QPointF &topLeftDelta, + const QPointF &bottomRightDelta) { - QPointF new_pos = original_pos; - QRectF new_rect = original_rect; - GeometryUtilities::adjustPosAndRect(&new_pos, &new_rect, top_left_delta, bottom_right_delta, QPointF(0.5, 0.5)); - if (new_pos != _object->getPos() || new_rect != _object->getRect()) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_object, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _object->setPos(new_pos); - if (new_rect.size() != _object->getRect().size()) { - _object->setAutoSize(false); - } - _object->setRect(new_rect); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_object, _diagram_scene_model->getDiagram(), false); + QPointF newPos = originalPos; + QRectF newRect = originalRect; + GeometryUtilities::adjustPosAndRect(&newPos, &newRect, topLeftDelta, bottomRightDelta, QPointF(0.5, 0.5)); + if (newPos != m_object->pos() || newRect != m_object->rect()) { + m_diagramSceneModel->diagramController()->startUpdateElement(m_object, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_object->setPos(newPos); + if (newRect.size() != m_object->rect().size()) + m_object->setAutoSized(false); + m_object->setRect(newRect); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_object, m_diagramSceneModel->diagram(), false); } } -void ObjectItem::alignItemSizeToRaster(IResizable::Side adjust_horizontal_side, IResizable::Side adjust_vertical_side, double raster_width, double raster_height) +void ObjectItem::alignItemSizeToRaster(IResizable::Side adjustHorizontalSide, IResizable::Side adjustVerticalSide, + double rasterWidth, double rasterHeight) { - QPointF pos = _object->getPos(); - QRectF rect = _object->getRect(); + QPointF pos = m_object->pos(); + QRectF rect = m_object->rect(); - double horiz_delta = rect.width() - qRound(rect.width() / raster_width) * raster_width; - double vert_delta = rect.height() - qRound(rect.height() / raster_height) * raster_height; + double horizDelta = rect.width() - qRound(rect.width() / rasterWidth) * rasterWidth; + double vertDelta = rect.height() - qRound(rect.height() / rasterHeight) * rasterHeight; // make sure the new size is at least the minimum size - QSizeF minimum_size = getMinimumSize(); - while (rect.width() + horiz_delta < minimum_size.width()) { - horiz_delta += raster_width; - } - while (rect.height() + vert_delta < minimum_size.height()) { - vert_delta += raster_height; - } + QSizeF minimumSize = this->minimumSize(); + while (rect.width() + horizDelta < minimumSize.width()) + horizDelta += rasterWidth; + while (rect.height() + vertDelta < minimumSize.height()) + vertDelta += rasterHeight; - double left_delta = 0.0; - double right_delta = 0.0; - double top_delta = 0.0; - double bottom_delta = 0.0; + double leftDelta = 0.0; + double rightDelta = 0.0; + double topDelta = 0.0; + double bottomDelta = 0.0; - switch (adjust_horizontal_side) { - case IResizable::SIDE_NONE: + switch (adjustHorizontalSide) { + case IResizable::SideNone: break; - case IResizable::SIDE_LEFT_OR_TOP: - left_delta = horiz_delta; + case IResizable::SideLeftOrTop: + leftDelta = horizDelta; break; - case IResizable::SIDE_RIGHT_OR_BOTTOM: - right_delta = -horiz_delta; + case IResizable::SideRightOrBottom: + rightDelta = -horizDelta; break; } - switch (adjust_vertical_side) { - case IResizable::SIDE_NONE: + switch (adjustVerticalSide) { + case IResizable::SideNone: break; - case IResizable::SIDE_LEFT_OR_TOP: - top_delta = vert_delta; + case IResizable::SideLeftOrTop: + topDelta = vertDelta; break; - case IResizable::SIDE_RIGHT_OR_BOTTOM: - bottom_delta = -vert_delta; + case IResizable::SideRightOrBottom: + bottomDelta = -vertDelta; break; } - QPointF top_left_delta(left_delta, top_delta); - QPointF bottom_right_delta(right_delta, bottom_delta); - setPosAndRect(pos, rect, top_left_delta, bottom_right_delta); + QPointF topLeftDelta(leftDelta, topDelta); + QPointF bottomRightDelta(rightDelta, bottomDelta); + setPosAndRect(pos, rect, topLeftDelta, bottomRightDelta); } void ObjectItem::moveDelta(const QPointF &delta) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_object, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - _object->setPos(_object->getPos() + delta); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_object, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_object, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + m_object->setPos(m_object->pos() + delta); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_object, m_diagramSceneModel->diagram(), false); } -void ObjectItem::alignItemPositionToRaster(double raster_width, double raster_height) +void ObjectItem::alignItemPositionToRaster(double rasterWidth, double rasterHeight) { - QPointF pos = _object->getPos(); - QRectF rect = _object->getRect(); - QPointF top_left = pos + rect.topLeft(); + QPointF pos = m_object->pos(); + QRectF rect = m_object->rect(); + QPointF topLeft = pos + rect.topLeft(); - double left_delta = qRound(top_left.x() / raster_width) * raster_width - top_left.x(); - double top_delta = qRound(top_left.y() / raster_height) * raster_height - top_left.y(); - QPointF top_left_delta(left_delta, top_delta); + double leftDelta = qRound(topLeft.x() / rasterWidth) * rasterWidth - topLeft.x(); + double topDelta = qRound(topLeft.y() / rasterHeight) * rasterHeight - topLeft.y(); + QPointF topLeftDelta(leftDelta, topDelta); - setPosAndRect(pos, rect, top_left_delta, top_left_delta); + setPosAndRect(pos, rect, topLeftDelta, topLeftDelta); } bool ObjectItem::isSecondarySelected() const { - return _secondary_selected; + return m_isSecondarySelected; } -void ObjectItem::setSecondarySelected(bool secondary_selected) +void ObjectItem::setSecondarySelected(bool secondarySelected) { - if (_secondary_selected != secondary_selected) { - _secondary_selected = secondary_selected; + if (m_isSecondarySelected != secondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } bool ObjectItem::isFocusSelected() const { - return _focus_selected; + return m_isFocusSelected; } -void ObjectItem::setFocusSelected(bool focus_selected) +void ObjectItem::setFocusSelected(bool focusSelected) { - if (_focus_selected != focus_selected) { - _focus_selected = focus_selected; + if (m_isFocusSelected != focusSelected) { + m_isFocusSelected = focusSelected; update(); } } -QList<ILatchable::Latch> ObjectItem::getHorizontalLatches(ILatchable::Action action, bool grabbed_item) const +QList<ILatchable::Latch> ObjectItem::horizontalLatches(ILatchable::Action action, bool grabbedItem) const { - Q_UNUSED(grabbed_item); + Q_UNUSED(grabbedItem); - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); QList<ILatchable::Latch> result; switch (action) { - case ILatchable::MOVE: - result << ILatchable::Latch(ILatchable::LEFT, rect.left(), rect.top(), rect.bottom(), QStringLiteral("left")) - << ILatchable::Latch(ILatchable::HCENTER, rect.center().x(), rect.top(), rect.bottom(), QStringLiteral("center")) - << ILatchable::Latch(ILatchable::RIGHT, rect.right(), rect.top(), rect.bottom(), QStringLiteral("right")); + case ILatchable::Move: + result << ILatchable::Latch(ILatchable::Left, rect.left(), rect.top(), rect.bottom(), QStringLiteral("left")) + << ILatchable::Latch(ILatchable::Hcenter, rect.center().x(), rect.top(), rect.bottom(), QStringLiteral("center")) + << ILatchable::Latch(ILatchable::Right, rect.right(), rect.top(), rect.bottom(), QStringLiteral("right")); break; - case ILatchable::RESIZE_LEFT: - result << ILatchable::Latch(ILatchable::LEFT, rect.left(), rect.top(), rect.bottom(), QStringLiteral("left")); + case ILatchable::ResizeLeft: + result << ILatchable::Latch(ILatchable::Left, rect.left(), rect.top(), rect.bottom(), QStringLiteral("left")); break; - case ILatchable::RESIZE_TOP: + case ILatchable::ResizeTop: QMT_CHECK(false); break; - case ILatchable::RESIZE_RIGHT: - result << ILatchable::Latch(ILatchable::RIGHT, rect.right(), rect.top(), rect.bottom(), QStringLiteral("right")); + case ILatchable::ResizeRight: + result << ILatchable::Latch(ILatchable::Right, rect.right(), rect.top(), rect.bottom(), QStringLiteral("right")); break; - case ILatchable::RESIZE_BOTTOM: + case ILatchable::ResizeBottom: QMT_CHECK(false); break; } return result; } -QList<ILatchable::Latch> ObjectItem::getVerticalLatches(ILatchable::Action action, bool grabbed_item) const +QList<ILatchable::Latch> ObjectItem::verticalLatches(ILatchable::Action action, bool grabbedItem) const { - Q_UNUSED(grabbed_item); + Q_UNUSED(grabbedItem); - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); QList<ILatchable::Latch> result; switch (action) { - case ILatchable::MOVE: - result << ILatchable::Latch(ILatchable::TOP, rect.top(), rect.left(), rect.right(), QStringLiteral("top")) - << ILatchable::Latch(ILatchable::VCENTER, rect.center().y(), rect.left(), rect.right(), QStringLiteral("center")) - << ILatchable::Latch(ILatchable::BOTTOM, rect.bottom(), rect.left(), rect.right(), QStringLiteral("bottom")); + case ILatchable::Move: + result << ILatchable::Latch(ILatchable::Top, rect.top(), rect.left(), rect.right(), QStringLiteral("top")) + << ILatchable::Latch(ILatchable::Vcenter, rect.center().y(), rect.left(), rect.right(), QStringLiteral("center")) + << ILatchable::Latch(ILatchable::Bottom, rect.bottom(), rect.left(), rect.right(), QStringLiteral("bottom")); break; - case ILatchable::RESIZE_LEFT: + case ILatchable::ResizeLeft: QMT_CHECK(false); break; - case ILatchable::RESIZE_TOP: - result << ILatchable::Latch(ILatchable::TOP, rect.top(), rect.left(), rect.right(), QStringLiteral("top")); + case ILatchable::ResizeTop: + result << ILatchable::Latch(ILatchable::Top, rect.top(), rect.left(), rect.right(), QStringLiteral("top")); break; - case ILatchable::RESIZE_RIGHT: + case ILatchable::ResizeRight: QMT_CHECK(false); break; - case ILatchable::RESIZE_BOTTOM: - result << ILatchable::Latch(ILatchable::BOTTOM, rect.bottom(), rect.left(), rect.right(), QStringLiteral("bottom")); + case ILatchable::ResizeBottom: + result << ILatchable::Latch(ILatchable::Bottom, rect.bottom(), rect.left(), rect.right(), QStringLiteral("bottom")); break; } return result; } -void ObjectItem::align(IAlignable::AlignType align_type, const QString &identifier) +void ObjectItem::align(IAlignable::AlignType alignType, const QString &identifier) { Q_UNUSED(identifier); // avoid warning in release mode // subclasses may support other identifiers than the standard ones. // but this implementation does not. So assert the names. - switch (align_type) { - case IAlignable::ALIGN_LEFT: + switch (alignType) { + case IAlignable::AlignLeft: QMT_CHECK(identifier == QStringLiteral("left")); - _diagram_scene_model->getDiagramSceneController()->alignLeft(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignLeft(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_RIGHT: + case IAlignable::AlignRight: QMT_CHECK(identifier == QStringLiteral("right")); - _diagram_scene_model->getDiagramSceneController()->alignRight(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignRight(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_TOP: + case IAlignable::AlignTop: QMT_CHECK(identifier == QStringLiteral("top")); - _diagram_scene_model->getDiagramSceneController()->alignTop(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignTop(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_BOTTOM: + case IAlignable::AlignBottom: QMT_CHECK(identifier == QStringLiteral("bottom")); - _diagram_scene_model->getDiagramSceneController()->alignBottom(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignBottom(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_HCENTER: + case IAlignable::AlignHcenter: QMT_CHECK(identifier == QStringLiteral("center")); - _diagram_scene_model->getDiagramSceneController()->alignHCenter(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignHCenter(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_VCENTER: + case IAlignable::AlignVcenter: QMT_CHECK(identifier == QStringLiteral("center")); - _diagram_scene_model->getDiagramSceneController()->alignVCenter(_object, _diagram_scene_model->getSelectedElements(), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignVCenter(m_object, m_diagramSceneModel->selectedElements(), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_WIDTH: + case IAlignable::AlignWidth: QMT_CHECK(identifier == QStringLiteral("width")); - _diagram_scene_model->getDiagramSceneController()->alignWidth(_object, _diagram_scene_model->getSelectedElements(), - getMinimumSize(_diagram_scene_model->getSelectedItems()), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignWidth(m_object, m_diagramSceneModel->selectedElements(), + minimumSize(m_diagramSceneModel->selectedItems()), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_HEIGHT: + case IAlignable::AlignHeight: QMT_CHECK(identifier == QStringLiteral("height")); - _diagram_scene_model->getDiagramSceneController()->alignHeight(_object, _diagram_scene_model->getSelectedElements(), - getMinimumSize(_diagram_scene_model->getSelectedItems()), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignHeight(m_object, m_diagramSceneModel->selectedElements(), + minimumSize(m_diagramSceneModel->selectedItems()), + m_diagramSceneModel->diagram()); break; - case IAlignable::ALIGN_SIZE: + case IAlignable::AlignSize: QMT_CHECK(identifier == QStringLiteral("size")); - _diagram_scene_model->getDiagramSceneController()->alignSize(_object, _diagram_scene_model->getSelectedElements(), - getMinimumSize(_diagram_scene_model->getSelectedItems()), _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->alignSize(m_object, m_diagramSceneModel->selectedElements(), + minimumSize(m_diagramSceneModel->selectedItems()), + m_diagramSceneModel->diagram()); break; } } void ObjectItem::updateStereotypeIconDisplay() { - StereotypeDisplayVisitor stereotype_display_visitor; - stereotype_display_visitor.setModelController(_diagram_scene_model->getDiagramSceneController()->getModelController()); - stereotype_display_visitor.setStereotypeController(_diagram_scene_model->getStereotypeController()); - _object->accept(&stereotype_display_visitor); - _stereotype_icon_id = stereotype_display_visitor.getStereotypeIconId(); - _shape_icon_id = stereotype_display_visitor.getShapeIconId(); - _stereotype_icon_display = stereotype_display_visitor.getStereotypeIconDisplay(); -} - -void ObjectItem::updateStereotypes(const QString &stereotype_icon_id, StereotypeIcon::Display stereotype_display, const Style *style) -{ - QList<QString> stereotypes = _object->getStereotypes(); - if (!stereotype_icon_id.isEmpty() - && (stereotype_display == StereotypeIcon::DISPLAY_DECORATION || stereotype_display == StereotypeIcon::DISPLAY_ICON)) { - stereotypes = _diagram_scene_model->getStereotypeController()->filterStereotypesByIconId(stereotype_icon_id, stereotypes); - } - if (!stereotype_icon_id.isEmpty() && stereotype_display == StereotypeIcon::DISPLAY_DECORATION) { - if (!_stereotype_icon) { - _stereotype_icon = new CustomIconItem(_diagram_scene_model, this); - } - _stereotype_icon->setStereotypeIconId(stereotype_icon_id); - _stereotype_icon->setBaseSize(QSizeF(_stereotype_icon->getShapeWidth(), _stereotype_icon->getShapeHeight())); - _stereotype_icon->setBrush(style->getFillBrush()); - _stereotype_icon->setPen(style->getInnerLinePen()); - } else if (_stereotype_icon) { - _stereotype_icon->scene()->removeItem(_stereotype_icon); - delete _stereotype_icon; - _stereotype_icon = 0; - } - if (stereotype_display != StereotypeIcon::DISPLAY_NONE && !stereotypes.isEmpty()) { - if (!_stereotypes) { - _stereotypes = new StereotypesItem(this); - } - _stereotypes->setFont(style->getSmallFont()); - _stereotypes->setBrush(style->getTextBrush()); - _stereotypes->setStereotypes(stereotypes); - } else if (_stereotypes) { - _stereotypes->scene()->removeItem(_stereotypes); - delete _stereotypes; - _stereotypes = 0; - } -} - -QSizeF ObjectItem::getStereotypeIconMinimumSize(const StereotypeIcon &stereotype_icon, qreal minimum_width, qreal minimum_height) const -{ - Q_UNUSED(minimum_width); + StereotypeDisplayVisitor stereotypeDisplayVisitor; + stereotypeDisplayVisitor.setModelController(m_diagramSceneModel->diagramSceneController()->modelController()); + stereotypeDisplayVisitor.setStereotypeController(m_diagramSceneModel->stereotypeController()); + m_object->accept(&stereotypeDisplayVisitor); + m_stereotypeIconId = stereotypeDisplayVisitor.stereotypeIconId(); + m_shapeIconId = stereotypeDisplayVisitor.shapeIconId(); + m_stereotypeIconDisplay = stereotypeDisplayVisitor.stereotypeIconDisplay(); +} + +void ObjectItem::updateStereotypes(const QString &stereotypeIconId, StereotypeIcon::Display stereotypeDisplay, + const Style *style) +{ + QList<QString> stereotypes = m_object->stereotypes(); + if (!stereotypeIconId.isEmpty() + && (stereotypeDisplay == StereotypeIcon::DisplayDecoration || stereotypeDisplay == StereotypeIcon::DisplayIcon)) { + stereotypes = m_diagramSceneModel->stereotypeController()->filterStereotypesByIconId(stereotypeIconId, stereotypes); + } + if (!stereotypeIconId.isEmpty() && stereotypeDisplay == StereotypeIcon::DisplayDecoration) { + if (!m_stereotypeIcon) + m_stereotypeIcon = new CustomIconItem(m_diagramSceneModel, this); + m_stereotypeIcon->setStereotypeIconId(stereotypeIconId); + m_stereotypeIcon->setBaseSize(QSizeF(m_stereotypeIcon->shapeWidth(), m_stereotypeIcon->shapeHeight())); + m_stereotypeIcon->setBrush(style->fillBrush()); + m_stereotypeIcon->setPen(style->innerLinePen()); + } else if (m_stereotypeIcon) { + m_stereotypeIcon->scene()->removeItem(m_stereotypeIcon); + delete m_stereotypeIcon; + m_stereotypeIcon = 0; + } + if (stereotypeDisplay != StereotypeIcon::DisplayNone && !stereotypes.isEmpty()) { + if (!m_stereotypes) + m_stereotypes = new StereotypesItem(this); + m_stereotypes->setFont(style->smallFont()); + m_stereotypes->setBrush(style->textBrush()); + m_stereotypes->setStereotypes(stereotypes); + } else if (m_stereotypes) { + m_stereotypes->scene()->removeItem(m_stereotypes); + delete m_stereotypes; + m_stereotypes = 0; + } +} + +QSizeF ObjectItem::stereotypeIconMinimumSize(const StereotypeIcon &stereotypeIcon, + qreal minimumWidth, qreal minimumHeight) const +{ + Q_UNUSED(minimumWidth); qreal width = 0.0; qreal height = 0.0; - if (stereotype_icon.hasMinWidth() && !stereotype_icon.hasMinHeight()) { - width = stereotype_icon.getMinWidth(); - if (stereotype_icon.getSizeLock() == StereotypeIcon::LOCK_HEIGHT || stereotype_icon.getSizeLock() == StereotypeIcon::LOCK_SIZE) { - height = stereotype_icon.getMinHeight(); - } else { - height = width * stereotype_icon.getHeight() / stereotype_icon.getWidth(); - } - } else if (!stereotype_icon.hasMinWidth() && stereotype_icon.hasMinHeight()) { - height = stereotype_icon.getMinHeight(); - if (stereotype_icon.getSizeLock() == StereotypeIcon::LOCK_WIDTH || stereotype_icon.getSizeLock() == StereotypeIcon::LOCK_SIZE) { - width = stereotype_icon.getMinWidth(); - } else { - width = height * stereotype_icon.getWidth() / stereotype_icon.getHeight(); - } - } else if (stereotype_icon.hasMinWidth() && stereotype_icon.hasMinHeight()) { - if (stereotype_icon.getSizeLock() == StereotypeIcon::LOCK_RATIO) { - width = stereotype_icon.getMinWidth(); - height = width * stereotype_icon.getHeight() / stereotype_icon.getWidth(); - if (height < stereotype_icon.getMinHeight()) { - height = stereotype_icon.getMinHeight(); - width = height * stereotype_icon.getWidth() / stereotype_icon.getHeight(); - QMT_CHECK(width <= stereotype_icon.getMinWidth()); + if (stereotypeIcon.hasMinWidth() && !stereotypeIcon.hasMinHeight()) { + width = stereotypeIcon.minWidth(); + if (stereotypeIcon.sizeLock() == StereotypeIcon::LockHeight || stereotypeIcon.sizeLock() == StereotypeIcon::LockSize) + height = stereotypeIcon.minHeight(); + else + height = width * stereotypeIcon.height() / stereotypeIcon.width(); + } else if (!stereotypeIcon.hasMinWidth() && stereotypeIcon.hasMinHeight()) { + height = stereotypeIcon.minHeight(); + if (stereotypeIcon.sizeLock() == StereotypeIcon::LockWidth || stereotypeIcon.sizeLock() == StereotypeIcon::LockSize) + width = stereotypeIcon.minWidth(); + else + width = height * stereotypeIcon.width() / stereotypeIcon.height(); + } else if (stereotypeIcon.hasMinWidth() && stereotypeIcon.hasMinHeight()) { + if (stereotypeIcon.sizeLock() == StereotypeIcon::LockRatio) { + width = stereotypeIcon.minWidth(); + height = width * stereotypeIcon.height() / stereotypeIcon.width(); + if (height < stereotypeIcon.minHeight()) { + height = stereotypeIcon.minHeight(); + width = height * stereotypeIcon.width() / stereotypeIcon.height(); + QMT_CHECK(width <= stereotypeIcon.minWidth()); } } else { - width = stereotype_icon.getMinWidth(); - height = stereotype_icon.getMinHeight(); + width = stereotypeIcon.minWidth(); + height = stereotypeIcon.minHeight(); } } else { - height = minimum_height; - width = height * stereotype_icon.getWidth() / stereotype_icon.getHeight(); + height = minimumHeight; + width = height * stereotypeIcon.width() / stereotypeIcon.height(); } return QSizeF(width, height); } void ObjectItem::updateDepth() { - setZValue(_object->getDepth()); + setZValue(m_object->depth()); } -void ObjectItem::updateSelectionMarker(CustomIconItem *custom_icon_item) +void ObjectItem::updateSelectionMarker(CustomIconItem *customIconItem) { - if (custom_icon_item) { - StereotypeIcon stereotype_icon = custom_icon_item->getStereotypeIcon(); - ResizeFlags resize_flags = RESIZE_UNLOCKED; - switch (stereotype_icon.getSizeLock()) { - case StereotypeIcon::LOCK_NONE: - resize_flags = RESIZE_UNLOCKED; + if (customIconItem) { + StereotypeIcon stereotypeIcon = customIconItem->stereotypeIcon(); + ResizeFlags resizeFlags = ResizeUnlocked; + switch (stereotypeIcon.sizeLock()) { + case StereotypeIcon::LockNone: + resizeFlags = ResizeUnlocked; break; - case StereotypeIcon::LOCK_WIDTH: - resize_flags = RESIZE_LOCKED_WIDTH; + case StereotypeIcon::LockWidth: + resizeFlags = ResizeLockedWidth; break; - case StereotypeIcon::LOCK_HEIGHT: - resize_flags = RESIZE_LOCKED_HEIGHT; + case StereotypeIcon::LockHeight: + resizeFlags = ResizeLockedHeight; break; - case StereotypeIcon::LOCK_SIZE: - resize_flags = RESIZE_LOCKED_SIZE; + case StereotypeIcon::LockSize: + resizeFlags = ResizeLockedSize; break; - case StereotypeIcon::LOCK_RATIO: - resize_flags = RESIZE_LOCKED_RATIO; + case StereotypeIcon::LockRatio: + resizeFlags = ResizeLockedRatio; break; } - updateSelectionMarker(resize_flags); + updateSelectionMarker(resizeFlags); } else { - updateSelectionMarker(RESIZE_UNLOCKED); + updateSelectionMarker(ResizeUnlocked); } } -void ObjectItem::updateSelectionMarker(ResizeFlags resize_flags) +void ObjectItem::updateSelectionMarker(ResizeFlags resizeFlags) { - if ((isSelected() || isSecondarySelected()) && resize_flags != RESIZE_LOCKED_SIZE) { - if (!_selection_marker) { - _selection_marker = new RectangularSelectionItem(this, this); - } - switch (resize_flags) { - case RESIZE_UNLOCKED: - _selection_marker->setFreedom(RectangularSelectionItem::FREEDOM_ANY); + if ((isSelected() || isSecondarySelected()) && resizeFlags != ResizeLockedSize) { + if (!m_selectionMarker) + m_selectionMarker = new RectangularSelectionItem(this, this); + switch (resizeFlags) { + case ResizeUnlocked: + m_selectionMarker->setFreedom(RectangularSelectionItem::FreedomAny); break; - case RESIZE_LOCKED_SIZE: + case ResizeLockedSize: QMT_CHECK(false); break; - case RESIZE_LOCKED_WIDTH: - _selection_marker->setFreedom(RectangularSelectionItem::FREEDOM_VERTICAL_ONLY); + case ResizeLockedWidth: + m_selectionMarker->setFreedom(RectangularSelectionItem::FreedomVerticalOnly); break; - case RESIZE_LOCKED_HEIGHT: - _selection_marker->setFreedom(RectangularSelectionItem::FREEDOM_HORIZONTAL_ONLY); + case ResizeLockedHeight: + m_selectionMarker->setFreedom(RectangularSelectionItem::FreedomHorizontalOnly); break; - case RESIZE_LOCKED_RATIO: - _selection_marker->setFreedom(RectangularSelectionItem::FREEDOM_KEEP_RATIO); + case ResizeLockedRatio: + m_selectionMarker->setFreedom(RectangularSelectionItem::FreedomKeepRatio); break; } - _selection_marker->setSecondarySelected(isSelected() ? false : isSecondarySelected()); - _selection_marker->setZValue(SELECTION_MARKER_ZVALUE); - } else if (_selection_marker) { - if (_selection_marker->scene()) { - _selection_marker->scene()->removeItem(_selection_marker); - } - delete _selection_marker; - _selection_marker = 0; + m_selectionMarker->setSecondarySelected(isSelected() ? false : isSecondarySelected()); + m_selectionMarker->setZValue(SELECTION_MARKER_ZVALUE); + } else if (m_selectionMarker) { + if (m_selectionMarker->scene()) + m_selectionMarker->scene()->removeItem(m_selectionMarker); + delete m_selectionMarker; + m_selectionMarker = 0; } } -void ObjectItem::updateSelectionMarkerGeometry(const QRectF &object_rect) +void ObjectItem::updateSelectionMarkerGeometry(const QRectF &objectRect) { - if (_selection_marker) { - _selection_marker->setRect(object_rect); - } + if (m_selectionMarker) + m_selectionMarker->setRect(objectRect); } void ObjectItem::updateAlignmentButtons() { - if (isFocusSelected() && _diagram_scene_model->hasMultiObjectsSelection()) { - if (!_horizontal_align_buttons && scene()) { - _horizontal_align_buttons = new AlignButtonsItem(this, 0); - _horizontal_align_buttons->setZValue(ALIGN_BUTTONS_ZVALUE); - scene()->addItem(_horizontal_align_buttons); + if (isFocusSelected() && m_diagramSceneModel->hasMultiObjectsSelection()) { + if (!m_horizontalAlignButtons && scene()) { + m_horizontalAlignButtons = new AlignButtonsItem(this, 0); + m_horizontalAlignButtons->setZValue(ALIGN_BUTTONS_ZVALUE); + scene()->addItem(m_horizontalAlignButtons); } - if (!_vertical_align_buttons && scene()) { - _vertical_align_buttons = new AlignButtonsItem(this, 0); - _vertical_align_buttons->setZValue(ALIGN_BUTTONS_ZVALUE); - scene()->addItem(_vertical_align_buttons); + if (!m_verticalAlignButtons && scene()) { + m_verticalAlignButtons = new AlignButtonsItem(this, 0); + m_verticalAlignButtons->setZValue(ALIGN_BUTTONS_ZVALUE); + scene()->addItem(m_verticalAlignButtons); } } else { - if (_horizontal_align_buttons) { - if (_horizontal_align_buttons->scene()) { - _horizontal_align_buttons->scene()->removeItem(_horizontal_align_buttons); - } - delete _horizontal_align_buttons; - _horizontal_align_buttons = 0; + if (m_horizontalAlignButtons) { + if (m_horizontalAlignButtons->scene()) + m_horizontalAlignButtons->scene()->removeItem(m_horizontalAlignButtons); + delete m_horizontalAlignButtons; + m_horizontalAlignButtons = 0; } - if (_vertical_align_buttons) { - if (_vertical_align_buttons->scene()) { - _vertical_align_buttons->scene()->removeItem(_vertical_align_buttons); - } - delete _vertical_align_buttons; - _vertical_align_buttons = 0; + if (m_verticalAlignButtons) { + if (m_verticalAlignButtons->scene()) + m_verticalAlignButtons->scene()->removeItem(m_verticalAlignButtons); + delete m_verticalAlignButtons; + m_verticalAlignButtons = 0; } } } -void ObjectItem::updateAlignmentButtonsGeometry(const QRectF &object_rect) +void ObjectItem::updateAlignmentButtonsGeometry(const QRectF &objectRect) { - if (_horizontal_align_buttons) { - _horizontal_align_buttons->clear(); - _horizontal_align_buttons->setPos(mapToScene(QPointF(0.0, object_rect.top() - AlignButtonsItem::NORMAL_BUTTON_HEIGHT - AlignButtonsItem::VERTICAL_DISTANCE_TO_OBEJCT))); - foreach (const ILatchable::Latch &latch, getHorizontalLatches(ILatchable::MOVE, true)) { - _horizontal_align_buttons->addButton(translateLatchTypeToAlignType(latch._latch_type), latch._identifier, mapFromScene(QPointF(latch._pos, 0.0)).x()); - } + if (m_horizontalAlignButtons) { + m_horizontalAlignButtons->clear(); + m_horizontalAlignButtons->setPos(mapToScene(QPointF(0.0, objectRect.top() - AlignButtonsItem::NormalButtonHeight - AlignButtonsItem::VerticalDistanceToObejct))); + foreach (const ILatchable::Latch &latch, horizontalLatches(ILatchable::Move, true)) + m_horizontalAlignButtons->addButton(translateLatchTypeToAlignType(latch.m_latchType), latch.m_identifier, mapFromScene(QPointF(latch.m_pos, 0.0)).x()); } - if (_vertical_align_buttons) { - _vertical_align_buttons->clear(); - _vertical_align_buttons->setPos(mapToScene(QPointF(object_rect.left() - AlignButtonsItem::NORMAL_BUTTON_WIDTH - AlignButtonsItem::HORIZONTAL_DISTANCE_TO_OBJECT, 0.0))); - foreach (const ILatchable::Latch &latch, getVerticalLatches(ILatchable::MOVE, true)) { - _vertical_align_buttons->addButton(translateLatchTypeToAlignType(latch._latch_type), latch._identifier, mapFromScene(QPointF(0.0, latch._pos)).y()); - } + if (m_verticalAlignButtons) { + m_verticalAlignButtons->clear(); + m_verticalAlignButtons->setPos(mapToScene(QPointF(objectRect.left() - AlignButtonsItem::NormalButtonWidth - AlignButtonsItem::HorizontalDistanceToObject, 0.0))); + foreach (const ILatchable::Latch &latch, verticalLatches(ILatchable::Move, true)) + m_verticalAlignButtons->addButton(translateLatchTypeToAlignType(latch.m_latchType), latch.m_identifier, mapFromScene(QPointF(0.0, latch.m_pos)).y()); } } -IAlignable::AlignType ObjectItem::translateLatchTypeToAlignType(ILatchable::LatchType latch_type) +IAlignable::AlignType ObjectItem::translateLatchTypeToAlignType(ILatchable::LatchType latchType) { - IAlignable::AlignType align_type = IAlignable::ALIGN_LEFT; - switch (latch_type) { - case ILatchable::LEFT: - align_type = IAlignable::ALIGN_LEFT; + IAlignable::AlignType alignType = IAlignable::AlignLeft; + switch (latchType) { + case ILatchable::Left: + alignType = IAlignable::AlignLeft; break; - case ILatchable::TOP: - align_type = IAlignable::ALIGN_TOP; + case ILatchable::Top: + alignType = IAlignable::AlignTop; break; - case ILatchable::RIGHT: - align_type = IAlignable::ALIGN_RIGHT; + case ILatchable::Right: + alignType = IAlignable::AlignRight; break; - case ILatchable::BOTTOM: - align_type = IAlignable::ALIGN_BOTTOM; + case ILatchable::Bottom: + alignType = IAlignable::AlignBottom; break; - case ILatchable::HCENTER: - align_type = IAlignable::ALIGN_HCENTER; + case ILatchable::Hcenter: + alignType = IAlignable::AlignHcenter; break; - case ILatchable::VCENTER: - align_type = IAlignable::ALIGN_VCENTER; + case ILatchable::Vcenter: + alignType = IAlignable::AlignVcenter; break; - case ILatchable::NONE: + case ILatchable::None: QMT_CHECK(false); break; } - return align_type; + return alignType; } -const Style *ObjectItem::getAdaptedStyle(const QString &stereotype_icon_id) +const Style *ObjectItem::adaptedStyle(const QString &stereotypeIconId) { - QList<const DObject *> colliding_objects; - foreach (const QGraphicsItem *item, _diagram_scene_model->collectCollidingObjectItems(this, DiagramSceneModel::COLLIDING_ITEMS)) { - if (const ObjectItem *object_item = dynamic_cast<const ObjectItem *>(item)) { - colliding_objects.append(object_item->getObject()); - } + QList<const DObject *> collidingObjects; + foreach (const QGraphicsItem *item, m_diagramSceneModel->collectCollidingObjectItems(this, DiagramSceneModel::CollidingItems)) { + if (const ObjectItem *objectItem = dynamic_cast<const ObjectItem *>(item)) + collidingObjects.append(objectItem->object()); } - QColor base_color; - if (!stereotype_icon_id.isEmpty()) { - StereotypeIcon stereotype_icon = _diagram_scene_model->getStereotypeController()->findStereotypeIcon(stereotype_icon_id); - base_color = stereotype_icon.getBaseColor(); + QColor baseColor; + if (!stereotypeIconId.isEmpty()) { + StereotypeIcon stereotypeIcon = m_diagramSceneModel->stereotypeController()->findStereotypeIcon(stereotypeIconId); + baseColor = stereotypeIcon.baseColor(); } - return _diagram_scene_model->getStyleController()->adaptObjectStyle( - StyledObject(getObject(), + return m_diagramSceneModel->styleController()->adaptObjectStyle( + StyledObject(object(), ObjectVisuals( - getObject()->getVisualPrimaryRole(), - getObject()->getVisualSecondaryRole(), - getObject()->isVisualEmphasized(), - base_color, - getObject()->getDepth()), - colliding_objects)); + object()->visualPrimaryRole(), + object()->visualSecondaryRole(), + object()->isVisualEmphasized(), + baseColor, + object()->depth()), + collidingObjects)); } bool ObjectItem::showContext() const { - bool showContext = !_object->getContext().isEmpty(); + bool showContext = !m_object->context().isEmpty(); if (showContext) { // TODO Because of this algorithm adding, moving, removing of one item need to update() all colliding items as well - QMT_CHECK(getObject()->getModelUid().isValid()); - MObject *mobject = _diagram_scene_model->getDiagramController()->getModelController()->findObject(getObject()->getModelUid()); + QMT_CHECK(object()->modelUid().isValid()); + MObject *mobject = m_diagramSceneModel->diagramController()->modelController()->findObject(object()->modelUid()); QMT_CHECK(mobject); - MObject *owner = mobject->getOwner(); + MObject *owner = mobject->owner(); if (owner) { - foreach (QGraphicsItem *item, _diagram_scene_model->collectCollidingObjectItems(this, DiagramSceneModel::COLLIDING_OUTER_ITEMS)) { - if (ObjectItem *object_item = dynamic_cast<ObjectItem *>(item)) { - if (object_item->getObject()->getModelUid().isValid() && object_item->getObject()->getModelUid() == owner->getUid()) { + foreach (QGraphicsItem *item, m_diagramSceneModel->collectCollidingObjectItems(this, DiagramSceneModel::CollidingOuterItems)) { + if (ObjectItem *objectItem = dynamic_cast<ObjectItem *>(item)) { + if (objectItem->object()->modelUid().isValid() && objectItem->object()->modelUid() == owner->uid()) { showContext = false; break; } @@ -623,136 +619,129 @@ bool ObjectItem::handleSelectedContextMenuAction(QAction *action) void ObjectItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) { - _diagram_scene_model->selectItem(this, event->modifiers() & Qt::ControlModifier); - } - if (event->button() == Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, QPointF(0.0, 0.0)); - } + if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) + m_diagramSceneModel->selectItem(this, event->modifiers() & Qt::ControlModifier); + if (event->button() == Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, QPointF(0.0, 0.0)); } void ObjectItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - } + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); } void ObjectItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (event->button() == Qt::LeftButton) { - _diagram_scene_model->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); - if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) { - _diagram_scene_model->alignSelectedItemsPositionOnRaster(); - } + m_diagramSceneModel->moveSelectedItems(this, event->scenePos() - event->lastScenePos()); + if (event->scenePos() != event->buttonDownScenePos(Qt::LeftButton)) + m_diagramSceneModel->alignSelectedItemsPositionOnRaster(); } } void ObjectItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { - if (event->buttons() & Qt::LeftButton) { - _diagram_scene_model->onDoubleClickedItem(this); - } + if (event->buttons() & Qt::LeftButton) + m_diagramSceneModel->onDoubleClickedItem(this); } void ObjectItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu menu; - bool add_separator = false; - if (getDiagramSceneModel()->getDiagramSceneController()->getElementTasks()->hasDiagram(_object, _diagram_scene_model->getDiagram())) { + bool addSeparator = false; + if (diagramSceneModel()->diagramSceneController()->elementTasks()->hasDiagram(m_object, m_diagramSceneModel->diagram())) { menu.addAction(new ContextMenuAction(QObject::tr("Open Diagram"), QStringLiteral("openDiagram"), &menu)); - add_separator = true; - } else if (getDiagramSceneModel()->getDiagramSceneController()->getElementTasks()->mayCreateDiagram(_object, _diagram_scene_model->getDiagram())) { + addSeparator = true; + } else if (diagramSceneModel()->diagramSceneController()->elementTasks()->mayCreateDiagram(m_object, m_diagramSceneModel->diagram())) { menu.addAction(new ContextMenuAction(QObject::tr("Create Diagram"), QStringLiteral("createDiagram"), &menu)); - add_separator = true; + addSeparator = true; } - if (extendContextMenu(&menu)) { - add_separator = true; - } - if (add_separator) { + if (extendContextMenu(&menu)) + addSeparator = true; + if (addSeparator) menu.addSeparator(); - } - menu.addAction(new ContextMenuAction(QObject::tr("Remove"), QStringLiteral("remove"), QKeySequence(QKeySequence::Delete), &menu)); - menu.addAction(new ContextMenuAction(QObject::tr("Delete"), QStringLiteral("delete"), QKeySequence(Qt::CTRL + Qt::Key_D), &menu)); + menu.addAction(new ContextMenuAction(QObject::tr("Remove"), QStringLiteral("remove"), + QKeySequence(QKeySequence::Delete), &menu)); + menu.addAction(new ContextMenuAction(QObject::tr("Delete"), QStringLiteral("delete"), + QKeySequence(Qt::CTRL + Qt::Key_D), &menu)); //menu.addAction(new ContextMenuAction(QObject::tr("Select in Model Tree"), QStringLiteral("selectInModelTree"), &menu)); - QMenu align_menu; - align_menu.setTitle(QObject::tr("Align Objects")); - align_menu.addAction(new ContextMenuAction(QObject::tr("Align Left"), QStringLiteral("alignLeft"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Center Vertically"), QStringLiteral("centerVertically"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Align Right"), QStringLiteral("alignRight"), &align_menu)); - align_menu.addSeparator(); - align_menu.addAction(new ContextMenuAction(QObject::tr("Align Top"), QStringLiteral("alignTop"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Center Horizontally"), QStringLiteral("centerHorizontally"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Align Bottom"), QStringLiteral("alignBottom"), &align_menu)); - align_menu.addSeparator(); - align_menu.addAction(new ContextMenuAction(QObject::tr("Same Width"), QStringLiteral("sameWidth"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Same Height"), QStringLiteral("sameHeight"), &align_menu)); - align_menu.addAction(new ContextMenuAction(QObject::tr("Same Size"), QStringLiteral("sameSize"), &align_menu)); - align_menu.setEnabled(_diagram_scene_model->hasMultiObjectsSelection()); - menu.addMenu(&align_menu); - - QAction *selected_action = menu.exec(event->screenPos()); - if (selected_action) { - if (!handleSelectedContextMenuAction(selected_action)) { - ContextMenuAction *action = dynamic_cast<ContextMenuAction *>(selected_action); + QMenu alignMenu; + alignMenu.setTitle(QObject::tr("Align Objects")); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Align Left"), QStringLiteral("alignLeft"), &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Center Vertically"), QStringLiteral("centerVertically"), + &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Align Right"), QStringLiteral("alignRight"), &alignMenu)); + alignMenu.addSeparator(); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Align Top"), QStringLiteral("alignTop"), &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Center Horizontally"), QStringLiteral("centerHorizontally"), + &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Align Bottom"), QStringLiteral("alignBottom"), &alignMenu)); + alignMenu.addSeparator(); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Same Width"), QStringLiteral("sameWidth"), &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Same Height"), QStringLiteral("sameHeight"), &alignMenu)); + alignMenu.addAction(new ContextMenuAction(QObject::tr("Same Size"), QStringLiteral("sameSize"), &alignMenu)); + alignMenu.setEnabled(m_diagramSceneModel->hasMultiObjectsSelection()); + menu.addMenu(&alignMenu); + + QAction *selectedAction = menu.exec(event->screenPos()); + if (selectedAction) { + if (!handleSelectedContextMenuAction(selectedAction)) { + ContextMenuAction *action = dynamic_cast<ContextMenuAction *>(selectedAction); QMT_CHECK(action); - if (action->getId() == QStringLiteral("openDiagram")) { - _diagram_scene_model->getDiagramSceneController()->getElementTasks()->openDiagram(_object, _diagram_scene_model->getDiagram()); - } else if (action->getId() == QStringLiteral("createDiagram")) { - _diagram_scene_model->getDiagramSceneController()->getElementTasks()->createAndOpenDiagram(_object, _diagram_scene_model->getDiagram()); - } else if (action->getId() == QStringLiteral("remove")) { - DSelection selection = _diagram_scene_model->getSelectedElements(); - if (selection.isEmpty()) { - selection.append(_object->getUid(), _diagram_scene_model->getDiagram()->getUid()); - } - _diagram_scene_model->getDiagramController()->deleteElements(selection, _diagram_scene_model->getDiagram()); - } else if (action->getId() == QStringLiteral("delete")) { - DSelection selection = _diagram_scene_model->getSelectedElements(); - if (selection.isEmpty()) { - selection.append(_object->getUid(), _diagram_scene_model->getDiagram()->getUid()); - } - _diagram_scene_model->getDiagramSceneController()->deleteFromDiagram(selection, _diagram_scene_model->getDiagram()); - } else if (action->getId() == QStringLiteral("selectInModelTree")) { + if (action->id() == QStringLiteral("openDiagram")) { + m_diagramSceneModel->diagramSceneController()->elementTasks()->openDiagram(m_object, m_diagramSceneModel->diagram()); + } else if (action->id() == QStringLiteral("createDiagram")) { + m_diagramSceneModel->diagramSceneController()->elementTasks()->createAndOpenDiagram(m_object, m_diagramSceneModel->diagram()); + } else if (action->id() == QStringLiteral("remove")) { + DSelection selection = m_diagramSceneModel->selectedElements(); + if (selection.isEmpty()) + selection.append(m_object->uid(), m_diagramSceneModel->diagram()->uid()); + m_diagramSceneModel->diagramController()->deleteElements(selection, m_diagramSceneModel->diagram()); + } else if (action->id() == QStringLiteral("delete")) { + DSelection selection = m_diagramSceneModel->selectedElements(); + if (selection.isEmpty()) + selection.append(m_object->uid(), m_diagramSceneModel->diagram()->uid()); + m_diagramSceneModel->diagramSceneController()->deleteFromDiagram(selection, m_diagramSceneModel->diagram()); + } else if (action->id() == QStringLiteral("selectInModelTree")) { // TODO implement - } else if (action->getId() == QStringLiteral("alignLeft")) { - align(IAlignable::ALIGN_LEFT, QStringLiteral("left")); - } else if (action->getId() == QStringLiteral("centerVertically")) { - align(IAlignable::ALIGN_VCENTER, QStringLiteral("center")); - } else if (action->getId() == QStringLiteral("alignRight")) { - align(IAlignable::ALIGN_RIGHT, QStringLiteral("right")); - } else if (action->getId() == QStringLiteral("alignTop")) { - align(IAlignable::ALIGN_TOP, QStringLiteral("top")); - } else if (action->getId() == QStringLiteral("centerHorizontally")) { - align(IAlignable::ALIGN_HCENTER, QStringLiteral("center")); - } else if (action->getId() == QStringLiteral("alignBottom")) { - align(IAlignable::ALIGN_BOTTOM, QStringLiteral("bottom")); - } else if (action->getId() == QStringLiteral("sameWidth")) { - align(IAlignable::ALIGN_WIDTH, QStringLiteral("width")); - } else if (action->getId() == QStringLiteral("sameHeight")) { - align(IAlignable::ALIGN_HEIGHT, QStringLiteral("height")); - } else if (action->getId() == QStringLiteral("sameSize")) { - align(IAlignable::ALIGN_SIZE, QStringLiteral("size")); + } else if (action->id() == QStringLiteral("alignLeft")) { + align(IAlignable::AlignLeft, QStringLiteral("left")); + } else if (action->id() == QStringLiteral("centerVertically")) { + align(IAlignable::AlignVcenter, QStringLiteral("center")); + } else if (action->id() == QStringLiteral("alignRight")) { + align(IAlignable::AlignRight, QStringLiteral("right")); + } else if (action->id() == QStringLiteral("alignTop")) { + align(IAlignable::AlignTop, QStringLiteral("top")); + } else if (action->id() == QStringLiteral("centerHorizontally")) { + align(IAlignable::AlignHcenter, QStringLiteral("center")); + } else if (action->id() == QStringLiteral("alignBottom")) { + align(IAlignable::AlignBottom, QStringLiteral("bottom")); + } else if (action->id() == QStringLiteral("sameWidth")) { + align(IAlignable::AlignWidth, QStringLiteral("width")); + } else if (action->id() == QStringLiteral("sameHeight")) { + align(IAlignable::AlignHeight, QStringLiteral("height")); + } else if (action->id() == QStringLiteral("sameSize")) { + align(IAlignable::AlignSize, QStringLiteral("size")); } } } } -QSizeF ObjectItem::getMinimumSize(const QSet<QGraphicsItem *> &items) const +QSizeF ObjectItem::minimumSize(const QSet<QGraphicsItem *> &items) const { - QSizeF minimum_size(0.0, 0.0); + QSizeF minimumSize(0.0, 0.0); foreach (QGraphicsItem *item, items) { if (IResizable *resizable = dynamic_cast<IResizable *>(item)) { - QSizeF size = resizable->getMinimumSize(); - if (size.width() > minimum_size.width()) { - minimum_size.setWidth(size.width()); - } - if (size.height() > minimum_size.height()) { - minimum_size.setHeight(size.height()); - } + QSizeF size = resizable->minimumSize(); + if (size.width() > minimumSize.width()) + minimumSize.setWidth(size.width()); + if (size.height() > minimumSize.height()) + minimumSize.setHeight(size.height()); } } - return minimum_size; + return minimumSize; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.h index 1c39c1f207..8dc5f5ea04 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/objectitem.h @@ -46,7 +46,6 @@ QT_BEGIN_NAMESPACE class QAction; QT_END_NAMESPACE - namespace qmt { class DObject; @@ -57,7 +56,6 @@ class RectangularSelectionItem; class AlignButtonsItem; class Style; - // typical z-values for graphic items static const int SHAPE_ZVALUE = -100; // the filled background of the shape static const int SHAPE_DETAILS_ZVALUE = -90; // any details to the shape (e.g. extra lines in shape) @@ -73,163 +71,99 @@ class ObjectItem : public IAlignable { protected: - enum ResizeFlags { - RESIZE_UNLOCKED, - RESIZE_LOCKED_SIZE, - RESIZE_LOCKED_WIDTH, - RESIZE_LOCKED_HEIGHT, - RESIZE_LOCKED_RATIO + ResizeUnlocked, + ResizeLockedSize, + ResizeLockedWidth, + ResizeLockedHeight, + ResizeLockedRatio }; public: - - ObjectItem(DObject *object, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + ObjectItem(DObject *object, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent = 0); ~ObjectItem(); -public: - - DObject *getObject() const { return _object; } - - DiagramSceneModel *getDiagramSceneModel() const { return _diagram_scene_model; } - -public: + DObject *object() const { return m_object; } + DiagramSceneModel *diagramSceneModel() const { return m_diagramSceneModel; } QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); -public: - virtual void update() = 0; -public: - - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const = 0; - -public: - - QPointF getPos() const; + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const = 0; - QRectF getRect() const; - - QSizeF getMinimumSize() const = 0; - - void setPosAndRect(const QPointF &original_pos, const QRectF &original_rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta); - - void alignItemSizeToRaster(Side adjust_horizontal_side, Side adjust_vertical_side, double raster_width, double raster_height); - -public: + QPointF pos() const; + QRectF rect() const; + QSizeF minimumSize() const = 0; + void setPosAndRect(const QPointF &originalPos, const QRectF &originalRect, + const QPointF &topLeftDelta, const QPointF &bottomRightDelta); + void alignItemSizeToRaster(Side adjustHorizontalSide, Side adjustVerticalSide, + double rasterWidth, double rasterHeight); void moveDelta(const QPointF &delta); - - void alignItemPositionToRaster(double raster_width, double raster_height); - -public: + void alignItemPositionToRaster(double rasterWidth, double rasterHeight); bool isSecondarySelected() const; - - void setSecondarySelected(bool secondary_selected); - + void setSecondarySelected(bool secondarySelected); bool isFocusSelected() const; + void setFocusSelected(bool focusSelected); - void setFocusSelected(bool focus_selected); - -public: + QList<Latch> horizontalLatches(Action action, bool grabbedItem) const; + QList<Latch> verticalLatches(Action action, bool grabbedItem) const; - QList<Latch> getHorizontalLatches(Action action, bool grabbed_item) const; - - QList<Latch> getVerticalLatches(Action action, bool grabbed_item) const; - -public: - - void align(AlignType align_type, const QString &identifier); + void align(AlignType alignType, const QString &identifier); protected: - void updateStereotypeIconDisplay(); - - QString getStereotypeIconId() const { return _stereotype_icon_id; } - - QString getShapeIconId() const { return _shape_icon_id; } - - StereotypeIcon::Display getStereotypeIconDisplay() const { return _stereotype_icon_display; } - - void updateStereotypes(const QString &stereotype_icon_id, StereotypeIcon::Display stereotype_display, const Style *style); - - StereotypesItem *getStereotypesItem() const { return _stereotypes; } - - CustomIconItem *getStereotypeIconItem() const { return _stereotype_icon; } - - QSizeF getStereotypeIconMinimumSize(const StereotypeIcon &stereotype_icon, qreal minimum_width, qreal minimum_height) const; + QString stereotypeIconId() const { return m_stereotypeIconId; } + QString shapeIconId() const { return m_shapeIconId; } + StereotypeIcon::Display stereotypeIconDisplay() const { return m_stereotypeIconDisplay; } + void updateStereotypes(const QString &stereotypeIconId, + StereotypeIcon::Display stereotypeDisplay, const Style *style); + StereotypesItem *stereotypesItem() const { return m_stereotypes; } + CustomIconItem *stereotypeIconItem() const { return m_stereotypeIcon; } + QSizeF stereotypeIconMinimumSize(const StereotypeIcon &stereotypeIcon, qreal minimumWidth, + qreal minimumHeight) const; void updateDepth(); - - void updateSelectionMarker(CustomIconItem *custom_icon_item); - - void updateSelectionMarker(ResizeFlags resize_flags); - - void updateSelectionMarkerGeometry(const QRectF &object_rect); - + void updateSelectionMarker(CustomIconItem *customIconItem); + void updateSelectionMarker(ResizeFlags resizeFlags); + void updateSelectionMarkerGeometry(const QRectF &objectRect); void updateAlignmentButtons(); + void updateAlignmentButtonsGeometry(const QRectF &objectRect); - void updateAlignmentButtonsGeometry(const QRectF &object_rect); - - IAlignable::AlignType translateLatchTypeToAlignType(ILatchable::LatchType latch_type); - - const Style *getAdaptedStyle(const QString &stereotype_icon_id); - + IAlignable::AlignType translateLatchTypeToAlignType(ILatchable::LatchType latchType); + const Style *adaptedStyle(const QString &stereotypeIconId); bool showContext() const; virtual bool extendContextMenu(QMenu *menu); - virtual bool handleSelectedContextMenuAction(QAction *action); -protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); - void contextMenuEvent(QGraphicsSceneContextMenuEvent *event); private: - - QSizeF getMinimumSize(const QSet<QGraphicsItem *> &items) const; - -private: - - DObject *_object; - - DiagramSceneModel *_diagram_scene_model; - - bool _secondary_selected; - - bool _focus_selected; - - QString _stereotype_icon_id; - - QString _shape_icon_id; - - StereotypeIcon::Display _stereotype_icon_display; - - StereotypesItem *_stereotypes; - - CustomIconItem *_stereotype_icon; - - RectangularSelectionItem *_selection_marker; - - AlignButtonsItem *_horizontal_align_buttons; - - AlignButtonsItem *_vertical_align_buttons; - + QSizeF minimumSize(const QSet<QGraphicsItem *> &items) const; + + DObject *m_object; + DiagramSceneModel *m_diagramSceneModel; + bool m_isSecondarySelected; + bool m_isFocusSelected; + QString m_stereotypeIconId; + QString m_shapeIconId; + StereotypeIcon::Display m_stereotypeIconDisplay; + StereotypesItem *m_stereotypes; + CustomIconItem *m_stereotypeIcon; + RectangularSelectionItem *m_selectionMarker; + AlignButtonsItem *m_horizontalAlignButtons; + AlignButtonsItem *m_verticalAlignButtons; }; -} +} // namespace qmt #endif // QMT_OBJECTITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.cpp index 697f51b24a..d7538fce7f 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.cpp @@ -51,7 +51,6 @@ #include <algorithm> - namespace qmt { static const qreal TAB_HORIZ_BORDER = 4.0; @@ -63,26 +62,26 @@ static const qreal BODY_MIN_HEIGHT = 24.0; static const qreal MINIMUM_AUTO_WIDTH = 100.0; static const qreal MINIMUM_AUTO_HEIGHT = 70.0; - -struct PackageItem::ShapeGeometry { - ShapeGeometry(const QSizeF &minimum_size, const QSizeF &minimum_tab_size) - : _minimum_size(minimum_size), - _minimum_tab_size(minimum_tab_size) +class PackageItem::ShapeGeometry +{ +public: + ShapeGeometry(const QSizeF &minimumSize, const QSizeF &minimumTabSize) + : m_minimumSize(minimumSize), + m_minimumTabSize(minimumTabSize) { } - QSizeF _minimum_size; - QSizeF _minimum_tab_size; + QSizeF m_minimumSize; + QSizeF m_minimumTabSize; }; - -PackageItem::PackageItem(DPackage *package, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) - : ObjectItem(package, diagram_scene_model, parent), - _custom_icon(0), - _shape(0), - _package_name(0), - _context_label(0), - _relation_starter(0) +PackageItem::PackageItem(DPackage *package, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) + : ObjectItem(package, diagramSceneModel, parent), + m_customIcon(0), + m_shape(0), + m_packageName(0), + m_contextLabel(0), + m_relationStarter(0) { } @@ -93,154 +92,130 @@ PackageItem::~PackageItem() void PackageItem::update() { prepareGeometryChange(); - updateStereotypeIconDisplay(); - const Style *style = getAdaptedStyle(getStereotypeIconId()); + const Style *style = adaptedStyle(stereotypeIconId()); // custom icon - if (getStereotypeIconDisplay() == StereotypeIcon::DISPLAY_ICON) { - if (!_custom_icon) { - _custom_icon = new CustomIconItem(getDiagramSceneModel(), this); - } - _custom_icon->setStereotypeIconId(getStereotypeIconId()); - _custom_icon->setBaseSize(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); - _custom_icon->setBrush(style->getFillBrush()); - _custom_icon->setPen(style->getOuterLinePen()); - _custom_icon->setZValue(SHAPE_ZVALUE); - } else if (_custom_icon) { - _custom_icon->scene()->removeItem(_custom_icon); - delete _custom_icon; - _custom_icon = 0; + if (stereotypeIconDisplay() == StereotypeIcon::DisplayIcon) { + if (!m_customIcon) + m_customIcon = new CustomIconItem(diagramSceneModel(), this); + m_customIcon->setStereotypeIconId(stereotypeIconId()); + m_customIcon->setBaseSize(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT)); + m_customIcon->setBrush(style->fillBrush()); + m_customIcon->setPen(style->outerLinePen()); + m_customIcon->setZValue(SHAPE_ZVALUE); + } else if (m_customIcon) { + m_customIcon->scene()->removeItem(m_customIcon); + delete m_customIcon; + m_customIcon = 0; } // shape - if (!_custom_icon) { - if (!_shape) { - _shape = new QGraphicsPolygonItem(this); - } - _shape->setBrush(style->getFillBrush()); - _shape->setPen(style->getOuterLinePen()); - _shape->setZValue(SHAPE_ZVALUE); - } else if (_shape) { - _shape->scene()->removeItem(_shape); - delete _shape; - _shape = 0; + if (!m_customIcon) { + if (!m_shape) + m_shape = new QGraphicsPolygonItem(this); + m_shape->setBrush(style->fillBrush()); + m_shape->setPen(style->outerLinePen()); + m_shape->setZValue(SHAPE_ZVALUE); + } else if (m_shape) { + m_shape->scene()->removeItem(m_shape); + delete m_shape; + m_shape = 0; } // stereotypes - updateStereotypes(getStereotypeIconId(), getStereotypeIconDisplay(), style); + updateStereotypes(stereotypeIconId(), stereotypeIconDisplay(), style); // package name - if (!_package_name) { - _package_name = new QGraphicsSimpleTextItem(this); - } - _package_name->setBrush(style->getTextBrush()); - _package_name->setFont(style->getHeaderFont()); - _package_name->setText(getObject()->getName()); + if (!m_packageName) + m_packageName = new QGraphicsSimpleTextItem(this); + m_packageName->setBrush(style->textBrush()); + m_packageName->setFont(style->headerFont()); + m_packageName->setText(object()->name()); // context if (showContext()) { - if (!_context_label) { - _context_label = new ContextLabelItem(this); - } - _context_label->setFont(style->getSmallFont()); - _context_label->setBrush(style->getTextBrush()); - _context_label->setContext(getObject()->getContext()); - } else if (_context_label) { - _context_label->scene()->removeItem(_context_label); - delete _context_label; - _context_label = 0; + if (!m_contextLabel) + m_contextLabel = new ContextLabelItem(this); + m_contextLabel->setFont(style->smallFont()); + m_contextLabel->setBrush(style->textBrush()); + m_contextLabel->setContext(object()->context()); + } else if (m_contextLabel) { + m_contextLabel->scene()->removeItem(m_contextLabel); + delete m_contextLabel; + m_contextLabel = 0; } - updateSelectionMarker(_custom_icon); + updateSelectionMarker(m_customIcon); // relation starters if (isFocusSelected()) { - if (!_relation_starter) { - _relation_starter = new RelationStarter(this, getDiagramSceneModel(), 0); - scene()->addItem(_relation_starter); - _relation_starter->setZValue(RELATION_STARTER_ZVALUE); - _relation_starter->addArrow(QStringLiteral("dependency"), ArrowItem::SHAFT_DASHED, ArrowItem::HEAD_OPEN); + if (!m_relationStarter) { + m_relationStarter = new RelationStarter(this, diagramSceneModel(), 0); + scene()->addItem(m_relationStarter); + m_relationStarter->setZValue(RELATION_STARTER_ZVALUE); + m_relationStarter->addArrow(QStringLiteral("dependency"), ArrowItem::ShaftDashed, ArrowItem::HeadOpen); } - } else if (_relation_starter) { - scene()->removeItem(_relation_starter); - delete _relation_starter; - _relation_starter = 0; + } else if (m_relationStarter) { + scene()->removeItem(m_relationStarter); + delete m_relationStarter; + m_relationStarter = 0; } updateAlignmentButtons(); - updateGeometry(); } -bool PackageItem::intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const +bool PackageItem::intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, QLineF *intersectionLine) const { QPolygonF polygon; - if (_custom_icon) { - // TODO use custom_icon path as shape - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + if (m_customIcon) { + // TODO use customIcon path as shape + QRectF rect = object()->rect(); + rect.translate(object()->pos()); polygon << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } else { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); + QRectF rect = object()->rect(); + rect.translate(object()->pos()); ShapeGeometry shape = calcMinimumGeometry(); - polygon << rect.topLeft() << (rect.topLeft() + QPointF(shape._minimum_tab_size.width(), 0.0)) - << (rect.topLeft() + QPointF(shape._minimum_tab_size.width(), shape._minimum_tab_size.height())) - << rect.topRight() + QPointF(0.0, shape._minimum_tab_size.height()) + polygon << rect.topLeft() << (rect.topLeft() + QPointF(shape.m_minimumTabSize.width(), 0.0)) + << (rect.topLeft() + QPointF(shape.m_minimumTabSize.width(), shape.m_minimumTabSize.height())) + << rect.topRight() + QPointF(0.0, shape.m_minimumTabSize.height()) << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); } - return GeometryUtilities::intersect(polygon, line, intersection_point, intersection_line); + return GeometryUtilities::intersect(polygon, line, intersectionPoint, intersectionLine); } -QSizeF PackageItem::getMinimumSize() const +QSizeF PackageItem::minimumSize() const { ShapeGeometry geometry = calcMinimumGeometry(); - return geometry._minimum_size; -} - -QList<ILatchable::Latch> PackageItem::getHorizontalLatches(ILatchable::Action action, bool grabbed_item) const -{ - return ObjectItem::getHorizontalLatches(action, grabbed_item); -} - -QList<ILatchable::Latch> PackageItem::getVerticalLatches(ILatchable::Action action, bool grabbed_item) const -{ - return ObjectItem::getVerticalLatches(action, grabbed_item); + return geometry.m_minimumSize; } -#if 0 -QList<qreal> PackageItem::getHorizontalLatches() const +QList<ILatchable::Latch> PackageItem::horizontalLatches(ILatchable::Action action, bool grabbedItem) const { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); - return QList<qreal>() << rect.left() << rect.center().x() << rect.right(); + return ObjectItem::horizontalLatches(action, grabbedItem); } -QList<qreal> PackageItem::getVerticalLatches() const +QList<ILatchable::Latch> PackageItem::verticalLatches(ILatchable::Action action, bool grabbedItem) const { - QRectF rect = getObject()->getRect(); - rect.translate(getObject()->getPos()); - ShapeGeometry shape = calcMinimumGeometry(); - return QList<qreal>() << rect.topLeft().y() << (rect.topLeft() + QPointF(0.0, shape._minimum_tab_size.height())).y() << rect.center().y() << rect.bottomRight().y(); + return ObjectItem::verticalLatches(action, grabbedItem); } -#endif -QPointF PackageItem::getRelationStartPos() const +QPointF PackageItem::relationStartPos() const { return pos(); } -void PackageItem::relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points) +void PackageItem::relationDrawn(const QString &id, const QPointF &toScenePos, const QList<QPointF> &intermediatePoints) { - DElement *target_element = getDiagramSceneModel()->findTopmostElement(to_scene_pos); - if (target_element) { + DElement *targetElement = diagramSceneModel()->findTopmostElement(toScenePos); + if (targetElement) { if (id == QStringLiteral("dependency")) { - DObject *dependant_object = dynamic_cast<DObject *>(target_element); - if (dependant_object) { - getDiagramSceneModel()->getDiagramSceneController()->createDependency(getObject(), dependant_object, intermediate_points, getDiagramSceneModel()->getDiagram()); - } + DObject *dependantObject = dynamic_cast<DObject *>(targetElement); + if (dependantObject) + diagramSceneModel()->diagramSceneController()->createDependency(object(), dependantObject, intermediatePoints, diagramSceneModel()->diagram()); } } } @@ -249,43 +224,42 @@ PackageItem::ShapeGeometry PackageItem::calcMinimumGeometry() const { double width = 0.0; double height = 0.0; - double tab_height = 0.0; - double tab_width = 0.0; + double tabHeight = 0.0; + double tabWidth = 0.0; - if (_custom_icon) { - return ShapeGeometry(getStereotypeIconMinimumSize(_custom_icon->getStereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, CUSTOM_ICON_MINIMUM_AUTO_HEIGHT), QSizeF(tab_width, tab_height)); + if (m_customIcon) { + return ShapeGeometry(stereotypeIconMinimumSize(m_customIcon->stereotypeIcon(), CUSTOM_ICON_MINIMUM_AUTO_WIDTH, + CUSTOM_ICON_MINIMUM_AUTO_HEIGHT), QSizeF(tabWidth, tabHeight)); } + double bodyHeight = 0.0; + double bodyWidth = 0.0; - double body_height = 0.0; - double body_width = 0.0; - - tab_height += TAB_VERT_BORDER; - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - tab_width = std::max(tab_width, stereotypes_item->boundingRect().width() + 2 * TAB_HORIZ_BORDER); - tab_height += stereotypes_item->boundingRect().height(); - } - if (_package_name) { - tab_width = std::max(tab_width, _package_name->boundingRect().width() + 2 * TAB_HORIZ_BORDER); - tab_height += _package_name->boundingRect().height(); + tabHeight += TAB_VERT_BORDER; + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + tabWidth = std::max(tabWidth, stereotypesItem->boundingRect().width() + 2 * TAB_HORIZ_BORDER); + tabHeight += stereotypesItem->boundingRect().height(); } - tab_height += TAB_VERT_BORDER; - width = std::max(width, tab_width + TAB_MIN_RIGHT_SPACE); - height += tab_height; - - body_height = BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - body_width = std::max(body_width, stereotype_icon_item->boundingRect().width() + 2 * BODY_HORIZ_BORDER); - body_height += stereotype_icon_item->boundingRect().height(); + if (m_packageName) { + tabWidth = std::max(tabWidth, m_packageName->boundingRect().width() + 2 * TAB_HORIZ_BORDER); + tabHeight += m_packageName->boundingRect().height(); } - if (_context_label) { - body_height += _context_label->getHeight(); + tabHeight += TAB_VERT_BORDER; + width = std::max(width, tabWidth + TAB_MIN_RIGHT_SPACE); + height += tabHeight; + + bodyHeight = BODY_VERT_BORDER; + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + bodyWidth = std::max(bodyWidth, stereotypeIconItem->boundingRect().width() + 2 * BODY_HORIZ_BORDER); + bodyHeight += stereotypeIconItem->boundingRect().height(); } - body_height += BODY_VERT_BORDER; - body_height = std::max(body_height, BODY_MIN_HEIGHT); - width = std::max(width, body_width); - height += body_height; - - return ShapeGeometry(GeometryUtilities::ensureMinimumRasterSize(QSizeF(width, height), 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT), QSizeF(tab_width, tab_height)); + if (m_contextLabel) + bodyHeight += m_contextLabel->height(); + bodyHeight += BODY_VERT_BORDER; + bodyHeight = std::max(bodyHeight, BODY_MIN_HEIGHT); + width = std::max(width, bodyWidth); + height += bodyHeight; + + return ShapeGeometry(GeometryUtilities::ensureMinimumRasterSize(QSizeF(width, height), 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT), QSizeF(tabWidth, tabHeight)); } void PackageItem::updateGeometry() @@ -294,29 +268,25 @@ void PackageItem::updateGeometry() ShapeGeometry geometry = calcMinimumGeometry(); - double width = geometry._minimum_size.width(); - double height = geometry._minimum_size.height(); - double tab_width = geometry._minimum_tab_size.width(); - double tab_height = geometry._minimum_tab_size.height(); + double width = geometry.m_minimumSize.width(); + double height = geometry.m_minimumSize.height(); + double tabWidth = geometry.m_minimumTabSize.width(); + double tabHeight = geometry.m_minimumTabSize.height(); // calc width and height - if (getObject()->hasAutoSize()) { - if (!_custom_icon) { - if (width < MINIMUM_AUTO_WIDTH) { + if (object()->isAutoSized()) { + if (!m_customIcon) { + if (width < MINIMUM_AUTO_WIDTH) width = MINIMUM_AUTO_WIDTH; - } - if (height < MINIMUM_AUTO_HEIGHT) { + if (height < MINIMUM_AUTO_HEIGHT) height = MINIMUM_AUTO_HEIGHT; - } } } else { - QRectF rect = getObject()->getRect(); - if (rect.width() > width) { + QRectF rect = object()->rect(); + if (rect.width() > width) width = rect.width(); - } - if (rect.height() > height) { + if (rect.height() > height) height = rect.height(); - } } // update sizes and positions @@ -325,75 +295,73 @@ void PackageItem::updateGeometry() double top = -height / 2.0; double y = top; - setPos(getObject()->getPos()); + setPos(object()->pos()); QRectF rect(left, top, width, height); // the object is updated without calling DiagramController intentionally. // attribute rect is not a real attribute stored on DObject but // a backup for the graphics item used for manual resized and persistency. - getObject()->setRect(rect); + object()->setRect(rect); - if (_custom_icon) { - _custom_icon->setPos(left, top); - _custom_icon->setActualSize(QSizeF(width, height)); + if (m_customIcon) { + m_customIcon->setPos(left, top); + m_customIcon->setActualSize(QSizeF(width, height)); y += height; y += BODY_VERT_BORDER; - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(-stereotypes_item->boundingRect().width() / 2.0, y); - y += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(-stereotypesItem->boundingRect().width() / 2.0, y); + y += stereotypesItem->boundingRect().height(); } - if (_package_name) { - _package_name->setPos(-_package_name->boundingRect().width() / 2.0, y); - y += _package_name->boundingRect().height(); + if (m_packageName) { + m_packageName->setPos(-m_packageName->boundingRect().width() / 2.0, y); + y += m_packageName->boundingRect().height(); } - if (_context_label) { - _context_label->resetMaxWidth(); - _context_label->setPos(-_context_label->boundingRect().width() / 2.0, y); - y += _context_label->boundingRect().height(); + if (m_contextLabel) { + m_contextLabel->resetMaxWidth(); + m_contextLabel->setPos(-m_contextLabel->boundingRect().width() / 2.0, y); + y += m_contextLabel->boundingRect().height(); } - } else if (_shape) { + } else if (m_shape) { QPolygonF polygon; polygon << rect.topLeft() - << QPointF(left + tab_width, top) - << QPointF(left + tab_width, top + tab_height) - << QPointF(right, top + tab_height) + << QPointF(left + tabWidth, top) + << QPointF(left + tabWidth, top + tabHeight) + << QPointF(right, top + tabHeight) << rect.bottomRight() << rect.bottomLeft(); - _shape->setPolygon(polygon); + m_shape->setPolygon(polygon); y += TAB_VERT_BORDER; - if (StereotypesItem *stereotypes_item = getStereotypesItem()) { - stereotypes_item->setPos(left + TAB_HORIZ_BORDER, y); - y += stereotypes_item->boundingRect().height(); + if (StereotypesItem *stereotypesItem = this->stereotypesItem()) { + stereotypesItem->setPos(left + TAB_HORIZ_BORDER, y); + y += stereotypesItem->boundingRect().height(); } - if (_package_name) { - _package_name->setPos(left + TAB_HORIZ_BORDER, y); - y += _package_name->boundingRect().height(); + if (m_packageName) { + m_packageName->setPos(left + TAB_HORIZ_BORDER, y); + y += m_packageName->boundingRect().height(); } y += TAB_VERT_BORDER; y += BODY_VERT_BORDER; - if (CustomIconItem *stereotype_icon_item = getStereotypeIconItem()) { - stereotype_icon_item->setPos(right - stereotype_icon_item->boundingRect().width() - BODY_HORIZ_BORDER, y); - y += stereotype_icon_item->boundingRect().height(); + if (CustomIconItem *stereotypeIconItem = this->stereotypeIconItem()) { + stereotypeIconItem->setPos(right - stereotypeIconItem->boundingRect().width() - BODY_HORIZ_BORDER, y); + y += stereotypeIconItem->boundingRect().height(); } - if (_context_label) { - _context_label->setMaxWidth(width - 2 * BODY_HORIZ_BORDER); - _context_label->setPos(-_context_label->boundingRect().width() / 2.0, y); - y += _context_label->boundingRect().height(); + if (m_contextLabel) { + m_contextLabel->setMaxWidth(width - 2 * BODY_HORIZ_BORDER); + m_contextLabel->setPos(-m_contextLabel->boundingRect().width() / 2.0, y); + y += m_contextLabel->boundingRect().height(); } } updateSelectionMarkerGeometry(rect); - if (_relation_starter) { - _relation_starter->setPos(mapToScene(QPointF(right + 8.0, top))); - } + if (m_relationStarter) + m_relationStarter->setPos(mapToScene(QPointF(right + 8.0, top))); updateAlignmentButtonsGeometry(rect); - updateDepth(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.h index 086fe60225..a93ecddefb 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/packageitem.h @@ -35,13 +35,11 @@ #include "qmt/diagram_scene/capabilities/relationable.h" - QT_BEGIN_NAMESPACE class QGraphicsPolygonItem; class QGraphicsSimpleTextItem; QT_END_NAMESPACE - namespace qmt { class DiagramSceneModel; @@ -50,62 +48,39 @@ class CustomIconItem; class ContextLabelItem; class RelationStarter; - -class PackageItem : - public ObjectItem, - public IRelationable +class PackageItem : public ObjectItem, public IRelationable { - struct ShapeGeometry; + class ShapeGeometry; public: - PackageItem(DPackage *package, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + PackageItem(DPackage *package, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent = 0); ~PackageItem(); -public: - void update(); -public: + bool intersectShapeWithLine(const QLineF &line, QPointF *intersectionPoint, + QLineF *intersectionLine) const; - bool intersectShapeWithLine(const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) const; + virtual QSizeF minimumSize() const; -public: - - virtual QSizeF getMinimumSize() const; - -public: - - QList<Latch> getHorizontalLatches(Action action, bool grabbed_item) const; + QList<Latch> horizontalLatches(Action action, bool grabbedItem) const; + QList<Latch> verticalLatches(Action action, bool grabbedItem) const; - QList<Latch> getVerticalLatches(Action action, bool grabbed_item) const; - -public: - - QPointF getRelationStartPos() const; - - void relationDrawn(const QString &id, const QPointF &to_scene_pos, const QList<QPointF> &intermediate_points); + QPointF relationStartPos() const; + void relationDrawn(const QString &id, const QPointF &toScenePos, + const QList<QPointF> &intermediatePoints); private: - ShapeGeometry calcMinimumGeometry() const; - void updateGeometry(); -private: - - CustomIconItem *_custom_icon; - - QGraphicsPolygonItem *_shape; - - QGraphicsSimpleTextItem *_package_name; - - ContextLabelItem *_context_label; - - RelationStarter *_relation_starter; - + CustomIconItem *m_customIcon; + QGraphicsPolygonItem *m_shape; + QGraphicsSimpleTextItem *m_packageName; + ContextLabelItem *m_contextLabel; + RelationStarter *m_relationStarter; }; -} +} // namespace qmt #endif // QMT_GRAPHICSPACKAGEITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.cpp index 2b8a3c87d3..0b0bbd136b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.cpp @@ -57,145 +57,133 @@ #include <QPen> #include <QPainter> - namespace qmt { -class RelationItem::ArrowConfigurator : - public DConstVoidVisitor +class RelationItem::ArrowConfigurator : public DConstVoidVisitor { public: - ArrowConfigurator(DiagramSceneModel *diagram_scene_model, ArrowItem *arrow, const QList<QPointF> &points) - : _diagram_scene_model(diagram_scene_model), - _arrow(arrow), - _points(points) + ArrowConfigurator(DiagramSceneModel *diagramSceneModel, ArrowItem *arrow, const QList<QPointF> &points) + : m_diagramSceneModel(diagramSceneModel), + m_arrow(arrow), + m_points(points) { } void visitDInheritance(const DInheritance *inheritance) { - Q_UNUSED(inheritance); - - DObject *base_object = _diagram_scene_model->getDiagramController()->findElement<DObject>(inheritance->getBase(), _diagram_scene_model->getDiagram()); - QMT_CHECK(base_object); - bool base_is_interface = base_object->getStereotypes().contains(QStringLiteral("interface")); - bool lollipop_display = false; - if (base_is_interface) { - StereotypeDisplayVisitor stereotype_display_visitor; - stereotype_display_visitor.setModelController(_diagram_scene_model->getDiagramSceneController()->getModelController()); - stereotype_display_visitor.setStereotypeController(_diagram_scene_model->getStereotypeController()); - base_object->accept(&stereotype_display_visitor); - lollipop_display = stereotype_display_visitor.getStereotypeDisplay() == DObject::STEREOTYPE_ICON; + DObject *baseObject = m_diagramSceneModel->diagramController()->findElement<DObject>(inheritance->base(), m_diagramSceneModel->diagram()); + QMT_CHECK(baseObject); + bool baseIsInterface = baseObject->stereotypes().contains(QStringLiteral("interface")); + bool lollipopDisplay = false; + if (baseIsInterface) { + StereotypeDisplayVisitor stereotypeDisplayVisitor; + stereotypeDisplayVisitor.setModelController(m_diagramSceneModel->diagramSceneController()->modelController()); + stereotypeDisplayVisitor.setStereotypeController(m_diagramSceneModel->stereotypeController()); + baseObject->accept(&stereotypeDisplayVisitor); + lollipopDisplay = stereotypeDisplayVisitor.stereotypeDisplay() == DObject::StereotypeIcon; } - if (lollipop_display) { - _arrow->setShaft(ArrowItem::SHAFT_SOLID); - _arrow->setEndHead(ArrowItem::HEAD_NONE); - } else if (base_is_interface || inheritance->getStereotypes().contains(QStringLiteral("realize"))) { - _arrow->setShaft(ArrowItem::SHAFT_DASHED); - _arrow->setEndHead(ArrowItem::HEAD_TRIANGLE); + if (lollipopDisplay) { + m_arrow->setShaft(ArrowItem::ShaftSolid); + m_arrow->setEndHead(ArrowItem::HeadNone); + } else if (baseIsInterface || inheritance->stereotypes().contains(QStringLiteral("realize"))) { + m_arrow->setShaft(ArrowItem::ShaftDashed); + m_arrow->setEndHead(ArrowItem::HeadTriangle); } else { - _arrow->setShaft(ArrowItem::SHAFT_SOLID); - _arrow->setEndHead(ArrowItem::HEAD_TRIANGLE); + m_arrow->setShaft(ArrowItem::ShaftSolid); + m_arrow->setEndHead(ArrowItem::HeadTriangle); } - _arrow->setArrowSize(16.0); - _arrow->setStartHead(ArrowItem::HEAD_NONE); - _arrow->setPoints(_points); + m_arrow->setArrowSize(16.0); + m_arrow->setStartHead(ArrowItem::HeadNone); + m_arrow->setPoints(m_points); } void visitDDependency(const DDependency *dependency) { - Q_UNUSED(dependency); - - ArrowItem::Head end_a_head = ArrowItem::HEAD_NONE; - ArrowItem::Head end_b_head = ArrowItem::HEAD_NONE; - bool is_realization = dependency->getStereotypes().contains(QStringLiteral("realize")); - switch (dependency->getDirection()) { - case MDependency::A_TO_B: - end_b_head = is_realization ? ArrowItem::HEAD_TRIANGLE : ArrowItem::HEAD_OPEN; + ArrowItem::Head endAHead = ArrowItem::HeadNone; + ArrowItem::Head endBHead = ArrowItem::HeadNone; + bool isRealization = dependency->stereotypes().contains(QStringLiteral("realize")); + switch (dependency->direction()) { + case MDependency::AToB: + endBHead = isRealization ? ArrowItem::HeadTriangle : ArrowItem::HeadOpen; break; - case MDependency::B_TO_A: - end_a_head = is_realization ? ArrowItem::HEAD_TRIANGLE : ArrowItem::HEAD_OPEN; + case MDependency::BToA: + endAHead = isRealization ? ArrowItem::HeadTriangle : ArrowItem::HeadOpen; break; - case MDependency::BIDIRECTIONAL: - end_a_head = ArrowItem::HEAD_OPEN; - end_b_head = ArrowItem::HEAD_OPEN; + case MDependency::Bidirectional: + endAHead = ArrowItem::HeadOpen; + endBHead = ArrowItem::HeadOpen; break; default: break; } - _arrow->setShaft(ArrowItem::SHAFT_DASHED); - _arrow->setArrowSize(12.0); - _arrow->setStartHead(end_a_head); - _arrow->setEndHead(end_b_head); - _arrow->setPoints(_points); + m_arrow->setShaft(ArrowItem::ShaftDashed); + m_arrow->setArrowSize(12.0); + m_arrow->setStartHead(endAHead); + m_arrow->setEndHead(endBHead); + m_arrow->setPoints(m_points); } void visitDAssociation(const DAssociation *association) { - Q_UNUSED(association); - - _arrow->setShaft(ArrowItem::SHAFT_SOLID); - _arrow->setArrowSize(12.0); - _arrow->setDiamondSize(12.0); + m_arrow->setShaft(ArrowItem::ShaftSolid); + m_arrow->setArrowSize(12.0); + m_arrow->setDiamondSize(12.0); - ArrowItem::Head end_a_head = ArrowItem::HEAD_NONE; - ArrowItem::Head end_b_head = ArrowItem::HEAD_NONE; + ArrowItem::Head endAHead = ArrowItem::HeadNone; + ArrowItem::Head endBHead = ArrowItem::HeadNone; - bool a_nav = association->getA().isNavigable(); - bool b_nav = association->getB().isNavigable(); + bool aNav = association->endA().isNavigable(); + bool bNav = association->endB().isNavigable(); - bool a_flat = association->getA().getKind() == MAssociationEnd::ASSOCIATION; - bool b_flat = association->getB().getKind() == MAssociationEnd::ASSOCIATION; + bool aFlat = association->endA().kind() == MAssociationEnd::Association; + bool bFlat = association->endB().kind() == MAssociationEnd::Association; - switch (association->getA().getKind()) { - case MAssociationEnd::ASSOCIATION: - end_a_head = ((b_nav && !a_nav && b_flat) || (a_nav && b_nav && !b_flat)) ? ArrowItem::HEAD_FILLED_TRIANGLE : ArrowItem::HEAD_NONE; + switch (association->endA().kind()) { + case MAssociationEnd::Association: + endAHead = ((bNav && !aNav && bFlat) || (aNav && bNav && !bFlat)) ? ArrowItem::HeadFilledTriangle : ArrowItem::HeadNone; break; - case MAssociationEnd::AGGREGATION: - end_a_head = association->getB().isNavigable() ? ArrowItem::HEAD_DIAMOND_FILLED_TRIANGLE : ArrowItem::HEAD_DIAMOND; + case MAssociationEnd::Aggregation: + endAHead = association->endB().isNavigable() ? ArrowItem::HeadDiamondFilledTriangle : ArrowItem::HeadDiamond; break; - case MAssociationEnd::COMPOSITION: - end_a_head = association->getB().isNavigable() ? ArrowItem::HEAD_FILLED_DIAMOND_FILLED_TRIANGLE : ArrowItem::HEAD_FILLED_DIAMOND; + case MAssociationEnd::Composition: + endAHead = association->endB().isNavigable() ? ArrowItem::HeadFilledDiamondFilledTriangle : ArrowItem::HeadFilledDiamond; break; } - switch (association->getB().getKind()) { - case MAssociationEnd::ASSOCIATION: - end_b_head = ((a_nav && !b_nav && a_flat) || (a_nav && b_nav && !a_flat)) ? ArrowItem::HEAD_FILLED_TRIANGLE : ArrowItem::HEAD_NONE; + switch (association->endB().kind()) { + case MAssociationEnd::Association: + endBHead = ((aNav && !bNav && aFlat) || (aNav && bNav && !aFlat)) ? ArrowItem::HeadFilledTriangle : ArrowItem::HeadNone; break; - case MAssociationEnd::AGGREGATION: - end_b_head = association->getA().isNavigable() ? ArrowItem::HEAD_DIAMOND_FILLED_TRIANGLE : ArrowItem::HEAD_DIAMOND; + case MAssociationEnd::Aggregation: + endBHead = association->endA().isNavigable() ? ArrowItem::HeadDiamondFilledTriangle : ArrowItem::HeadDiamond; break; - case MAssociationEnd::COMPOSITION: - end_b_head = association->getA().isNavigable() ? ArrowItem::HEAD_FILLED_DIAMOND_FILLED_TRIANGLE : ArrowItem::HEAD_FILLED_DIAMOND; + case MAssociationEnd::Composition: + endBHead = association->endA().isNavigable() ? ArrowItem::HeadFilledDiamondFilledTriangle : ArrowItem::HeadFilledDiamond; break; } - _arrow->setStartHead(end_a_head); - _arrow->setEndHead(end_b_head); - _arrow->setPoints(_points); + m_arrow->setStartHead(endAHead); + m_arrow->setEndHead(endBHead); + m_arrow->setPoints(m_points); } private: - - DiagramSceneModel *_diagram_scene_model; - - ArrowItem *_arrow; - - QList<QPointF> _points; + DiagramSceneModel *m_diagramSceneModel; + ArrowItem *m_arrow; + QList<QPointF> m_points; }; - -RelationItem::RelationItem(DRelation *relation, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +RelationItem::RelationItem(DRelation *relation, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsItem(parent), - _relation(relation), - _diagram_scene_model(diagram_scene_model), - _secondary_selected(false), - _focus_selected(false), - _arrow(0), - _name(0), - _stereotypes(0), - _selection_handles(0) + m_relation(relation), + m_diagramSceneModel(diagramSceneModel), + m_isSecondarySelected(false), + m_isFocusSelected(false), + m_arrow(0), + m_name(0), + m_stereotypes(0), + m_selectionHandles(0) { setFlags(QGraphicsItem::ItemIsSelectable); } @@ -215,7 +203,7 @@ void RelationItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti Q_UNUSED(option); Q_UNUSED(widget); -#ifdef DEBUG_PAINT_SELECTION_SHAPE +#ifdef DEBUG_PAINT_SHAPE painter->save(); painter->setPen(Qt::red); painter->setBrush(Qt::blue); @@ -228,109 +216,104 @@ QPainterPath RelationItem::shape() const { QPainterPath path; path.setFillRule(Qt::WindingFill); - if (_arrow) { - path.addPath(_arrow->shape().translated(_arrow->pos())); - } - if (_name) { - path.addPath(_name->shape().translated(_name->pos())); - } - if (_stereotypes) { - path.addPath(_stereotypes->shape().translated(_stereotypes->pos())); - } - if (_selection_handles) { - path.addPath(_selection_handles->shape().translated(_selection_handles->pos())); - } + if (m_arrow) + path.addPath(m_arrow->shape().translated(m_arrow->pos())); + if (m_name) + path.addPath(m_name->shape().translated(m_name->pos())); + if (m_stereotypes) + path.addPath(m_stereotypes->shape().translated(m_stereotypes->pos())); + if (m_selectionHandles) + path.addPath(m_selectionHandles->shape().translated(m_selectionHandles->pos())); return path; } void RelationItem::moveDelta(const QPointF &delta) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); QList<DRelation::IntermediatePoint> points; - foreach (const DRelation::IntermediatePoint &point, _relation->getIntermediatePoints()) { - points << DRelation::IntermediatePoint(point.getPos() + delta); - } - _relation->setIntermediatePoints(points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + foreach (const DRelation::IntermediatePoint &point, m_relation->intermediatePoints()) + points << DRelation::IntermediatePoint(point.pos() + delta); + m_relation->setIntermediatePoints(points); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } -void RelationItem::alignItemPositionToRaster(double raster_width, double raster_height) +void RelationItem::alignItemPositionToRaster(double rasterWidth, double rasterHeight) { - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); QList<DRelation::IntermediatePoint> points; - foreach (const DRelation::IntermediatePoint &point, _relation->getIntermediatePoints()) { - QPointF pos = point.getPos(); - double x = qRound(pos.x() / raster_width) * raster_width; - double y = qRound(pos.y() / raster_height) * raster_height; + foreach (const DRelation::IntermediatePoint &point, m_relation->intermediatePoints()) { + QPointF pos = point.pos(); + double x = qRound(pos.x() / rasterWidth) * rasterWidth; + double y = qRound(pos.y() / rasterHeight) * rasterHeight; points << DRelation::IntermediatePoint(QPointF(x,y)); } - _relation->setIntermediatePoints(points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + m_relation->setIntermediatePoints(points); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } bool RelationItem::isSecondarySelected() const { - return _secondary_selected; + return m_isSecondarySelected; } -void RelationItem::setSecondarySelected(bool secondary_selected) +void RelationItem::setSecondarySelected(bool secondarySelected) { - if (_secondary_selected != secondary_selected) { - _secondary_selected = secondary_selected; + if (m_isSecondarySelected != secondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } bool RelationItem::isFocusSelected() const { - return _focus_selected; + return m_isFocusSelected; } -void RelationItem::setFocusSelected(bool focus_selected) +void RelationItem::setFocusSelected(bool focusSelected) { - if (_focus_selected != focus_selected) { - _focus_selected = focus_selected; + if (m_isFocusSelected != focusSelected) { + m_isFocusSelected = focusSelected; update(); } } -QPointF RelationItem::getHandlePos(int index) +QPointF RelationItem::handlePos(int index) { if (index == 0) { // TODO implement return QPointF(0,0); - } else if (index == _relation->getIntermediatePoints().size() + 1) { + } else if (index == m_relation->intermediatePoints().size() + 1) { // TODO implement return QPointF(0,0); } else { - QList<DRelation::IntermediatePoint> intermediate_points = _relation->getIntermediatePoints(); + QList<DRelation::IntermediatePoint> intermediatePoints = m_relation->intermediatePoints(); --index; - QMT_CHECK(index >= 0 && index < intermediate_points.size()); - return intermediate_points.at(index).getPos(); + QMT_CHECK(index >= 0 && index < intermediatePoints.size()); + return intermediatePoints.at(index).pos(); } } -void RelationItem::insertHandle(int before_index, const QPointF &pos) +void RelationItem::insertHandle(int beforeIndex, const QPointF &pos) { - if (before_index >= 1 && before_index <= _relation->getIntermediatePoints().size() + 1) { - QList<DRelation::IntermediatePoint> intermediate_points = _relation->getIntermediatePoints(); - intermediate_points.insert(before_index - 1, DRelation::IntermediatePoint(pos)); + if (beforeIndex >= 1 && beforeIndex <= m_relation->intermediatePoints().size() + 1) { + QList<DRelation::IntermediatePoint> intermediatePoints = m_relation->intermediatePoints(); + intermediatePoints.insert(beforeIndex - 1, DRelation::IntermediatePoint(pos)); - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MAJOR); - _relation->setIntermediatePoints(intermediate_points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateMajor); + m_relation->setIntermediatePoints(intermediatePoints); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } } void RelationItem::deleteHandle(int index) { - if (index >= 1 && index <= _relation->getIntermediatePoints().size()) { - QList<DRelation::IntermediatePoint> intermediate_points = _relation->getIntermediatePoints(); - intermediate_points.removeAt(index - 1); + if (index >= 1 && index <= m_relation->intermediatePoints().size()) { + QList<DRelation::IntermediatePoint> intermediatePoints = m_relation->intermediatePoints(); + intermediatePoints.removeAt(index - 1); - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MAJOR); - _relation->setIntermediatePoints(intermediate_points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateMajor); + m_relation->setIntermediatePoints(intermediatePoints); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } } @@ -338,39 +321,39 @@ void RelationItem::setHandlePos(int index, const QPointF &pos) { if (index == 0) { // TODO implement - } else if (index == _relation->getIntermediatePoints().size() + 1) { + } else if (index == m_relation->intermediatePoints().size() + 1) { // TODO implement } else { - QList<DRelation::IntermediatePoint> intermediate_points = _relation->getIntermediatePoints(); + QList<DRelation::IntermediatePoint> intermediatePoints = m_relation->intermediatePoints(); --index; - QMT_CHECK(index >= 0 && index < intermediate_points.size()); - intermediate_points[index].setPos(pos); + QMT_CHECK(index >= 0 && index < intermediatePoints.size()); + intermediatePoints[index].setPos(pos); - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MINOR); - _relation->setIntermediatePoints(intermediate_points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateMinor); + m_relation->setIntermediatePoints(intermediatePoints); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } } -void RelationItem::alignHandleToRaster(int index, double raster_width, double raster_height) +void RelationItem::alignHandleToRaster(int index, double rasterWidth, double rasterHeight) { if (index == 0) { // TODO implement - } else if (index ==_relation->getIntermediatePoints().size() + 1) { + } else if (index ==m_relation->intermediatePoints().size() + 1) { // TODO implement } else { - QList<DRelation::IntermediatePoint> intermediate_points = _relation->getIntermediatePoints(); + QList<DRelation::IntermediatePoint> intermediatePoints = m_relation->intermediatePoints(); --index; - QMT_CHECK(index >= 0 && index < intermediate_points.size()); + QMT_CHECK(index >= 0 && index < intermediatePoints.size()); - QPointF pos = intermediate_points.at(index).getPos(); - double x = qRound(pos.x() / raster_width) * raster_width; - double y = qRound(pos.y() / raster_height) * raster_height; - intermediate_points[index].setPos(QPointF(x, y)); + QPointF pos = intermediatePoints.at(index).pos(); + double x = qRound(pos.x() / rasterWidth) * rasterWidth; + double y = qRound(pos.y() / rasterHeight) * rasterHeight; + intermediatePoints[index].setPos(QPointF(x, y)); - _diagram_scene_model->getDiagramController()->startUpdateElement(_relation, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_MINOR); - _relation->setIntermediatePoints(intermediate_points); - _diagram_scene_model->getDiagramController()->finishUpdateElement(_relation, _diagram_scene_model->getDiagram(), false); + m_diagramSceneModel->diagramController()->startUpdateElement(m_relation, m_diagramSceneModel->diagram(), DiagramController::UpdateMinor); + m_relation->setIntermediatePoints(intermediatePoints); + m_diagramSceneModel->diagramController()->finishUpdateElement(m_relation, m_diagramSceneModel->diagram(), false); } } @@ -378,73 +361,67 @@ void RelationItem::update() { prepareGeometryChange(); - const Style *style = getAdaptedStyle(); + const Style *style = adaptedStyle(); - if (!_arrow) { - _arrow = new ArrowItem(this); - } + if (!m_arrow) + m_arrow = new ArrowItem(this); update(style); } void RelationItem::update(const Style *style) { - QPointF end_b_pos = calcEndPoint(_relation->getEndB(), _relation->getEndA(), _relation->getIntermediatePoints().size() - 1); - QPointF end_a_pos = calcEndPoint(_relation->getEndA(), end_b_pos, 0); + QPointF endBPos = calcEndPoint(m_relation->endBUid(), m_relation->endAUid(), m_relation->intermediatePoints().size() - 1); + QPointF endAPos = calcEndPoint(m_relation->endAUid(), endBPos, 0); - setPos(end_a_pos); + setPos(endAPos); QList<QPointF> points; - points << (end_a_pos - end_a_pos); - foreach (const DRelation::IntermediatePoint &point, _relation->getIntermediatePoints()) { - points << (point.getPos() - end_a_pos); + points << (endAPos - endAPos); + foreach (const DRelation::IntermediatePoint &point, m_relation->intermediatePoints()) + points << (point.pos() - endAPos); + points << (endBPos - endAPos); + + ArrowConfigurator visitor(m_diagramSceneModel, m_arrow, points); + m_relation->accept(&visitor); + m_arrow->update(style); + + if (!m_relation->name().isEmpty()) { + if (!m_name) + m_name = new QGraphicsSimpleTextItem(this); + m_name->setFont(style->smallFont()); + m_name->setBrush(style->textBrush()); + m_name->setText(m_relation->name()); + m_name->setPos(m_arrow->calcPointAtPercent(0.5) + QPointF(-m_name->boundingRect().width() * 0.5, 4.0)); + } else if (m_name) { + m_name->scene()->removeItem(m_name); + delete m_name; + m_name = 0; } - points << (end_b_pos - end_a_pos); - ArrowConfigurator visitor(_diagram_scene_model, _arrow, points); - _relation->accept(&visitor); - _arrow->update(style); - - if (!_relation->getName().isEmpty()) { - if (!_name) { - _name = new QGraphicsSimpleTextItem(this); - } - _name->setFont(style->getSmallFont()); - _name->setBrush(style->getTextBrush()); - _name->setText(_relation->getName()); - _name->setPos(_arrow->calcPointAtPercent(0.5) + QPointF(-_name->boundingRect().width() * 0.5, 4.0)); - } else if (_name) { - _name->scene()->removeItem(_name); - delete _name; - _name = 0; - } - - if (!_relation->getStereotypes().isEmpty()) { - if (!_stereotypes) { - _stereotypes = new StereotypesItem(this); - } - _stereotypes->setFont(style->getSmallFont()); - _stereotypes->setBrush(style->getTextBrush()); - _stereotypes->setStereotypes(_relation->getStereotypes()); - _stereotypes->setPos(_arrow->calcPointAtPercent(0.5) + QPointF(-_stereotypes->boundingRect().width() * 0.5, -_stereotypes->boundingRect().height() - 4.0)); - } else if (_stereotypes) { - _stereotypes->scene()->removeItem(_stereotypes); - delete _stereotypes; - _stereotypes = 0; + if (!m_relation->stereotypes().isEmpty()) { + if (!m_stereotypes) + m_stereotypes = new StereotypesItem(this); + m_stereotypes->setFont(style->smallFont()); + m_stereotypes->setBrush(style->textBrush()); + m_stereotypes->setStereotypes(m_relation->stereotypes()); + m_stereotypes->setPos(m_arrow->calcPointAtPercent(0.5) + QPointF(-m_stereotypes->boundingRect().width() * 0.5, -m_stereotypes->boundingRect().height() - 4.0)); + } else if (m_stereotypes) { + m_stereotypes->scene()->removeItem(m_stereotypes); + delete m_stereotypes; + m_stereotypes = 0; } if (isSelected() || isSecondarySelected()) { - if (!_selection_handles) { - _selection_handles = new PathSelectionItem(this, this); - } - _selection_handles->setPoints(points); - _selection_handles->setSecondarySelected(isSelected() ? false : isSecondarySelected()); - } else if (_selection_handles) { - if (_selection_handles->scene()) { - _selection_handles->scene()->removeItem(_selection_handles); - } - delete _selection_handles; - _selection_handles = 0; + if (!m_selectionHandles) + m_selectionHandles = new PathSelectionItem(this, this); + m_selectionHandles->setPoints(points); + m_selectionHandles->setSecondarySelected(isSelected() ? false : isSecondarySelected()); + } else if (m_selectionHandles) { + if (m_selectionHandles->scene()) + m_selectionHandles->scene()->removeItem(m_selectionHandles); + delete m_selectionHandles; + m_selectionHandles = 0; } setZValue((isSelected() || isSecondarySelected()) ? RELATION_ITEMS_ZVALUE_SELECTED : RELATION_ITEMS_ZVALUE); @@ -452,9 +429,8 @@ void RelationItem::update(const Style *style) void RelationItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) { - _diagram_scene_model->selectItem(this, event->modifiers() & Qt::ControlModifier); - } + if (event->button() == Qt::LeftButton || event->button() == Qt::RightButton) + m_diagramSceneModel->selectItem(this, event->modifiers() & Qt::ControlModifier); } void RelationItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) @@ -467,73 +443,71 @@ void RelationItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) Q_UNUSED(event); } -const Style *RelationItem::getAdaptedStyle() +const Style *RelationItem::adaptedStyle() { - DObject *end_a_object = _diagram_scene_model->getDiagramController()->findElement<DObject>(_relation->getEndA(), _diagram_scene_model->getDiagram()); - DObject *end_b_object = _diagram_scene_model->getDiagramController()->findElement<DObject>(_relation->getEndB(), _diagram_scene_model->getDiagram()); - StyledRelation styled_relation(_relation, end_a_object, end_b_object); - return _diagram_scene_model->getStyleController()->adaptRelationStyle(styled_relation); + DObject *endAObject = m_diagramSceneModel->diagramController()->findElement<DObject>(m_relation->endAUid(), m_diagramSceneModel->diagram()); + DObject *endBObject = m_diagramSceneModel->diagramController()->findElement<DObject>(m_relation->endBUid(), m_diagramSceneModel->diagram()); + StyledRelation styledRelation(m_relation, endAObject, endBObject); + return m_diagramSceneModel->styleController()->adaptRelationStyle(styledRelation); } -QPointF RelationItem::calcEndPoint(const Uid &end, const Uid &other_end, int nearest_intermediate_point_index) +QPointF RelationItem::calcEndPoint(const Uid &end, const Uid &otherEnd, int nearestIntermediatePointIndex) { - QPointF other_end_pos; - if (nearest_intermediate_point_index >= 0 && nearest_intermediate_point_index < _relation->getIntermediatePoints().size()) { - // other_end_pos will not be used + QPointF otherEndPos; + if (nearestIntermediatePointIndex >= 0 && nearestIntermediatePointIndex < m_relation->intermediatePoints().size()) { + // otherEndPos will not be used } else { - DObject *end_other_object = _diagram_scene_model->getDiagramController()->findElement<DObject>(other_end, _diagram_scene_model->getDiagram()); - QMT_CHECK(end_other_object); - other_end_pos = end_other_object->getPos(); + DObject *endOtherObject = m_diagramSceneModel->diagramController()->findElement<DObject>(otherEnd, m_diagramSceneModel->diagram()); + QMT_CHECK(endOtherObject); + otherEndPos = endOtherObject->pos(); } - return calcEndPoint(end, other_end_pos, nearest_intermediate_point_index); + return calcEndPoint(end, otherEndPos, nearestIntermediatePointIndex); } -QPointF RelationItem::calcEndPoint(const Uid &end, const QPointF &other_end_pos, int nearest_intermediate_point_index) +QPointF RelationItem::calcEndPoint(const Uid &end, const QPointF &otherEndPos, int nearestIntermediatePointIndex) { - QGraphicsItem *end_item = _diagram_scene_model->getGraphicsItem(end); - QMT_CHECK(end_item); - IIntersectionable *end_object_item = dynamic_cast<IIntersectionable *>(end_item); - QPointF end_pos; - if (end_object_item) { - DObject *end_object = _diagram_scene_model->getDiagramController()->findElement<DObject>(end, _diagram_scene_model->getDiagram()); - QMT_CHECK(end_object); - bool prefer_axis = false; - QPointF other_pos; - if (nearest_intermediate_point_index >= 0 && nearest_intermediate_point_index < _relation->getIntermediatePoints().size()) { - other_pos = _relation->getIntermediatePoints().at(nearest_intermediate_point_index).getPos(); - prefer_axis = true; + QGraphicsItem *endItem = m_diagramSceneModel->graphicsItem(end); + QMT_CHECK(endItem); + IIntersectionable *endObjectItem = dynamic_cast<IIntersectionable *>(endItem); + QPointF endPos; + if (endObjectItem) { + DObject *endObject = m_diagramSceneModel->diagramController()->findElement<DObject>(end, m_diagramSceneModel->diagram()); + QMT_CHECK(endObject); + bool preferAxis = false; + QPointF otherPos; + if (nearestIntermediatePointIndex >= 0 && nearestIntermediatePointIndex < m_relation->intermediatePoints().size()) { + otherPos = m_relation->intermediatePoints().at(nearestIntermediatePointIndex).pos(); + preferAxis = true; } else { - other_pos = other_end_pos; + otherPos = otherEndPos; } bool ok = false; - QLineF direct_line(end_object->getPos(), other_pos); - if (prefer_axis) { + QLineF directLine(endObject->pos(), otherPos); + if (preferAxis) { { - QPointF axis_direction = GeometryUtilities::calcPrimaryAxisDirection(direct_line); - QLineF axis(other_pos, other_pos + axis_direction); - QPointF projection = GeometryUtilities::calcProjection(axis, end_object->getPos()); - QLineF projected_line(projection, other_pos); - ok = end_object_item->intersectShapeWithLine(projected_line, &end_pos); + QPointF axisDirection = GeometryUtilities::calcPrimaryAxisDirection(directLine); + QLineF axis(otherPos, otherPos + axisDirection); + QPointF projection = GeometryUtilities::calcProjection(axis, endObject->pos()); + QLineF projectedLine(projection, otherPos); + ok = endObjectItem->intersectShapeWithLine(projectedLine, &endPos); } if (!ok) { - QPointF axis_direction = GeometryUtilities::calcSecondaryAxisDirection(direct_line); - QLineF axis(other_pos, other_pos + axis_direction); - QPointF projection = GeometryUtilities::calcProjection(axis, end_object->getPos()); - QLineF projected_line(projection, other_pos); - ok = end_object_item->intersectShapeWithLine(projected_line, &end_pos); + QPointF axisDirection = GeometryUtilities::calcSecondaryAxisDirection(directLine); + QLineF axis(otherPos, otherPos + axisDirection); + QPointF projection = GeometryUtilities::calcProjection(axis, endObject->pos()); + QLineF projectedLine(projection, otherPos); + ok = endObjectItem->intersectShapeWithLine(projectedLine, &endPos); } } - if (!ok) { - ok = end_object_item->intersectShapeWithLine(direct_line, &end_pos); - } - if (!ok) { - end_pos = end_item->pos(); - } + if (!ok) + ok = endObjectItem->intersectShapeWithLine(directLine, &endPos); + if (!ok) + endPos = endItem->pos(); } else { - end_pos = end_item->pos(); + endPos = endItem->pos(); } - return end_pos; + return endPos; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.h index 381859c6ff..efa06c5147 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/relationitem.h @@ -40,7 +40,6 @@ QT_BEGIN_NAMESPACE class QGraphicsSimpleTextItem; QT_END_NAMESPACE - namespace qmt { class Uid; @@ -51,7 +50,6 @@ class StereotypesItem; class PathSelectionItem; class Style; - class RelationItem : public QGraphicsItem, public IMoveable, @@ -61,95 +59,57 @@ class RelationItem : class ArrowConfigurator; public: - RelationItem(DRelation *relation, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + RelationItem(DRelation *relation, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~RelationItem(); -public: - - DRelation *getRelation() const { return _relation; } - -public: + DRelation *relation() const { return m_relation; } QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - QPainterPath shape() const; -public: - void moveDelta(const QPointF &delta); - - void alignItemPositionToRaster(double raster_width, double raster_height); - -public: + void alignItemPositionToRaster(double rasterWidth, double rasterHeight); bool isSecondarySelected() const; - - void setSecondarySelected(bool secondary_selected); - + void setSecondarySelected(bool secondarySelected); bool isFocusSelected() const; + void setFocusSelected(bool focusSelected); - void setFocusSelected(bool focus_selected); - -public: - - QPointF getHandlePos(int index); - - void insertHandle(int before_index, const QPointF &pos); - + QPointF handlePos(int index); + void insertHandle(int beforeIndex, const QPointF &pos); void deleteHandle(int index); - void setHandlePos(int index, const QPointF &pos); - - void alignHandleToRaster(int index, double raster_width, double raster_height); - -public: + void alignHandleToRaster(int index, double rasterWidth, double rasterHeight); virtual void update(); protected: - virtual void update(const Style *style); -protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); private: + const Style *adaptedStyle(); + QPointF calcEndPoint(const Uid &end, const Uid &otherEnd, int nearestIntermediatePointIndex); + QPointF calcEndPoint(const Uid &end, const QPointF &otherEndPos, + int nearestIntermediatePointIndex); - const Style *getAdaptedStyle(); - - QPointF calcEndPoint(const Uid &end, const Uid &other_end, int nearest_intermediate_point_index); - - QPointF calcEndPoint(const Uid &end, const QPointF &other_end_pos, int nearest_intermediate_point_index); - -private: - - DRelation *_relation; + DRelation *m_relation; protected: - - DiagramSceneModel *_diagram_scene_model; - - bool _secondary_selected; - - bool _focus_selected; - - ArrowItem *_arrow; - - QGraphicsSimpleTextItem *_name; - - StereotypesItem *_stereotypes; - - PathSelectionItem *_selection_handles; + DiagramSceneModel *m_diagramSceneModel; + bool m_isSecondarySelected; + bool m_isFocusSelected; + ArrowItem *m_arrow; + QGraphicsSimpleTextItem *m_name; + StereotypesItem *m_stereotypes; + PathSelectionItem *m_selectionHandles; }; -} +} // namespace qmt #endif // QMT_GRAPHICSRELATIONITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp index df9225e76b..ad15613006 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.cpp @@ -44,128 +44,122 @@ namespace qmt { StereotypeDisplayVisitor::StereotypeDisplayVisitor() : DConstVoidVisitor(), - _model_controller(0), - _stereotype_controller(0), - _stereotype_display(DObject::STEREOTYPE_NONE), - _stereotype_icon_element(StereotypeIcon::ELEMENT_ANY), - _stereotype_smart_display(DObject::STEREOTYPE_DECORATION) + m_modelController(0), + m_stereotypeController(0), + m_stereotypeDisplay(DObject::StereotypeNone), + m_stereotypeIconElement(StereotypeIcon::ElementAny), + m_stereotypeSmartDisplay(DObject::StereotypeDecoration) { } StereotypeDisplayVisitor::~StereotypeDisplayVisitor() { - } -void StereotypeDisplayVisitor::setModelController(ModelController *model_controller) +void StereotypeDisplayVisitor::setModelController(ModelController *modelController) { - _model_controller = model_controller; + m_modelController = modelController; } -void StereotypeDisplayVisitor::setStereotypeController(StereotypeController *stereotype_controller) +void StereotypeDisplayVisitor::setStereotypeController(StereotypeController *stereotypeController) { - _stereotype_controller = stereotype_controller; + m_stereotypeController = stereotypeController; } -StereotypeIcon::Display StereotypeDisplayVisitor::getStereotypeIconDisplay() const +StereotypeIcon::Display StereotypeDisplayVisitor::stereotypeIconDisplay() const { - switch (_stereotype_display) { - case DObject::STEREOTYPE_NONE: - return StereotypeIcon::DISPLAY_NONE; - case DObject::STEREOTYPE_LABEL: - return StereotypeIcon::DISPLAY_LABEL; - case DObject::STEREOTYPE_DECORATION: - return StereotypeIcon::DISPLAY_DECORATION; - case DObject::STEREOTYPE_ICON: - return StereotypeIcon::DISPLAY_ICON; - case DObject::STEREOTYPE_SMART: + switch (m_stereotypeDisplay) { + case DObject::StereotypeNone: + return StereotypeIcon::DisplayNone; + case DObject::StereotypeLabel: + return StereotypeIcon::DisplayLabel; + case DObject::StereotypeDecoration: + return StereotypeIcon::DisplayDecoration; + case DObject::StereotypeIcon: + return StereotypeIcon::DisplayIcon; + case DObject::StereotypeSmart: QMT_CHECK(false); - return StereotypeIcon::DISPLAY_SMART; + return StereotypeIcon::DisplaySmart; } - return StereotypeIcon::DISPLAY_LABEL; + return StereotypeIcon::DisplayLabel; } void StereotypeDisplayVisitor::visitDObject(const DObject *object) { - DObject::StereotypeDisplay stereotype_display = object->getStereotypeDisplay(); - _stereotype_icon_id = _stereotype_controller->findStereotypeIconId(_stereotype_icon_element, object->getStereotypes()); - - if (_stereotype_icon_id.isEmpty() && stereotype_display == DObject::STEREOTYPE_ICON) { - stereotype_display = DObject::STEREOTYPE_LABEL; - } else if (!_stereotype_icon_id.isEmpty() && stereotype_display == DObject::STEREOTYPE_SMART) { - StereotypeIcon stereotype_icon = _stereotype_controller->findStereotypeIcon(_stereotype_icon_id); - StereotypeIcon::Display icon_display = stereotype_icon.getDisplay(); - switch (icon_display) { - case StereotypeIcon::DISPLAY_NONE: - stereotype_display = DObject::STEREOTYPE_NONE; + DObject::StereotypeDisplay stereotypeDisplay = object->stereotypeDisplay(); + m_stereotypeIconId = m_stereotypeController->findStereotypeIconId(m_stereotypeIconElement, object->stereotypes()); + + if (m_stereotypeIconId.isEmpty() && stereotypeDisplay == DObject::StereotypeIcon) { + stereotypeDisplay = DObject::StereotypeLabel; + } else if (!m_stereotypeIconId.isEmpty() && stereotypeDisplay == DObject::StereotypeSmart) { + StereotypeIcon stereotypeIcon = m_stereotypeController->findStereotypeIcon(m_stereotypeIconId); + StereotypeIcon::Display iconDisplay = stereotypeIcon.display(); + switch (iconDisplay) { + case StereotypeIcon::DisplayNone: + stereotypeDisplay = DObject::StereotypeNone; break; - case StereotypeIcon::DISPLAY_LABEL: - stereotype_display = DObject::STEREOTYPE_LABEL; + case StereotypeIcon::DisplayLabel: + stereotypeDisplay = DObject::StereotypeLabel; break; - case StereotypeIcon::DISPLAY_DECORATION: - stereotype_display = DObject::STEREOTYPE_DECORATION; + case StereotypeIcon::DisplayDecoration: + stereotypeDisplay = DObject::StereotypeDecoration; break; - case StereotypeIcon::DISPLAY_ICON: - stereotype_display = DObject::STEREOTYPE_ICON; + case StereotypeIcon::DisplayIcon: + stereotypeDisplay = DObject::StereotypeIcon; break; - case StereotypeIcon::DISPLAY_SMART: - stereotype_display = _stereotype_smart_display; + case StereotypeIcon::DisplaySmart: + stereotypeDisplay = m_stereotypeSmartDisplay; break; } } - if (stereotype_display == DObject::STEREOTYPE_SMART) { - stereotype_display = DObject::STEREOTYPE_LABEL; - } - if (stereotype_display == DObject::STEREOTYPE_ICON && _shape_icon_id.isEmpty()) { - _shape_icon_id = _stereotype_icon_id; - } - _stereotype_display = stereotype_display; + if (stereotypeDisplay == DObject::StereotypeSmart) + stereotypeDisplay = DObject::StereotypeLabel; + if (stereotypeDisplay == DObject::StereotypeIcon && m_shapeIconId.isEmpty()) + m_shapeIconId = m_stereotypeIconId; + m_stereotypeDisplay = stereotypeDisplay; } void StereotypeDisplayVisitor::visitDPackage(const DPackage *package) { - _stereotype_icon_element = StereotypeIcon::ELEMENT_PACKAGE; - _stereotype_smart_display = DObject::STEREOTYPE_DECORATION; + m_stereotypeIconElement = StereotypeIcon::ElementPackage; + m_stereotypeSmartDisplay = DObject::StereotypeDecoration; visitDObject(package); } void StereotypeDisplayVisitor::visitDClass(const DClass *klass) { - _stereotype_icon_element = StereotypeIcon::ELEMENT_CLASS; - MClass *model_klass = _model_controller->findObject<MClass>(klass->getModelUid()); - bool has_members = false; - if (!model_klass->getMembers().isEmpty() && klass->getShowAllMembers()) { - has_members = true; - } - _stereotype_smart_display = has_members ? DObject::STEREOTYPE_DECORATION : DObject::STEREOTYPE_ICON; + m_stereotypeIconElement = StereotypeIcon::ElementClass; + MClass *modelKlass = m_modelController->findObject<MClass>(klass->modelUid()); + bool hasMembers = false; + if (!modelKlass->members().isEmpty() && klass->showAllMembers()) + hasMembers = true; + m_stereotypeSmartDisplay = hasMembers ? DObject::StereotypeDecoration : DObject::StereotypeIcon; visitDObject(klass); } void StereotypeDisplayVisitor::visitDComponent(const DComponent *component) { - _stereotype_icon_element = StereotypeIcon::ELEMENT_COMPONENT; - _stereotype_smart_display = DObject::STEREOTYPE_ICON; + m_stereotypeIconElement = StereotypeIcon::ElementComponent; + m_stereotypeSmartDisplay = DObject::StereotypeIcon; visitDObject(component); } void StereotypeDisplayVisitor::visitDDiagram(const DDiagram *diagram) { - _stereotype_icon_element = StereotypeIcon::ELEMENT_DIAGRAM; - _stereotype_smart_display = DObject::STEREOTYPE_DECORATION; + m_stereotypeIconElement = StereotypeIcon::ElementDiagram; + m_stereotypeSmartDisplay = DObject::StereotypeDecoration; visitDObject(diagram); } void StereotypeDisplayVisitor::visitDItem(const DItem *item) { - _stereotype_icon_element = StereotypeIcon::ELEMENT_ITEM; - _stereotype_smart_display = DObject::STEREOTYPE_ICON; + m_stereotypeIconElement = StereotypeIcon::ElementItem; + m_stereotypeSmartDisplay = DObject::StereotypeIcon; visitDObject(item); - if (_stereotype_icon_id.isEmpty() && !item->getShape().isEmpty()) { - _shape_icon_id = _stereotype_controller->findStereotypeIconId(StereotypeIcon::ELEMENT_ITEM, QStringList() << item->getShape()); - } - if (_shape_icon_id.isEmpty() && !item->getVariety().isEmpty()) { - _shape_icon_id = _stereotype_controller->findStereotypeIconId(StereotypeIcon::ELEMENT_ITEM, QStringList() << item->getVariety()); - } + if (m_stereotypeIconId.isEmpty() && !item->shape().isEmpty()) + m_shapeIconId = m_stereotypeController->findStereotypeIconId(StereotypeIcon::ElementItem, QStringList() << item->shape()); + if (m_shapeIconId.isEmpty() && !item->variety().isEmpty()) + m_shapeIconId = m_stereotypeController->findStereotypeIconId(StereotypeIcon::ElementItem, QStringList() << item->variety()); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.h index 6d7f37b8b8..e79d580c4e 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/items/stereotypedisplayvisitor.h @@ -41,59 +41,34 @@ namespace qmt { class ModelController; class StereotypeController; -class StereotypeDisplayVisitor : - public DConstVoidVisitor +class StereotypeDisplayVisitor : public DConstVoidVisitor { public: - StereotypeDisplayVisitor(); - ~StereotypeDisplayVisitor(); -public: - - void setModelController(ModelController *model_controller); - - void setStereotypeController(StereotypeController *stereotype_controller); - - DObject::StereotypeDisplay getStereotypeDisplay() const { return _stereotype_display; } - - StereotypeIcon::Display getStereotypeIconDisplay() const; - - QString getStereotypeIconId() const { return _stereotype_icon_id; } - - QString getShapeIconId() const { return _shape_icon_id; } - -public: + void setModelController(ModelController *modelController); + void setStereotypeController(StereotypeController *stereotypeController); + DObject::StereotypeDisplay stereotypeDisplay() const { return m_stereotypeDisplay; } + StereotypeIcon::Display stereotypeIconDisplay() const; + QString stereotypeIconId() const { return m_stereotypeIconId; } + QString shapeIconId() const { return m_shapeIconId; } void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); private: - - ModelController *_model_controller; - - StereotypeController *_stereotype_controller; - - DObject::StereotypeDisplay _stereotype_display; - - QString _stereotype_icon_id; - - QString _shape_icon_id; - - StereotypeIcon::Element _stereotype_icon_element; - - DObject::StereotypeDisplay _stereotype_smart_display; - + ModelController *m_modelController; + StereotypeController *m_stereotypeController; + DObject::StereotypeDisplay m_stereotypeDisplay; + QString m_stereotypeIconId; + QString m_shapeIconId; + StereotypeIcon::Element m_stereotypeIconElement; + DObject::StereotypeDisplay m_stereotypeSmartDisplay; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.cpp index 9b4aef8315..c219dfdb8c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.cpp @@ -45,56 +45,54 @@ namespace qmt { LatchController::LatchController(QObject *parent) : QObject(parent), - _diagram_scene_model(0), - _horizontal_align_line(new AlignLineItem(AlignLineItem::HORIZONTAL, 0)), - _vertical_align_line(new AlignLineItem(AlignLineItem::VERTICAL, 0)), - _found_horizontal_latch(false), - _horizontal_dist(0.0), - _found_vertical_latch(false), - _vertical_dist(0.0) + m_diagramSceneModel(0), + m_horizontalAlignLine(new AlignLineItem(AlignLineItem::Horizontal, 0)), + m_verticalAlignLine(new AlignLineItem(AlignLineItem::Vertical, 0)), + m_foundHorizontalLatch(false), + m_horizontalDist(0.0), + m_foundVerticalLatch(false), + m_verticalDist(0.0) { - _horizontal_align_line->setZValue(LATCH_LINES_ZVALUE); - _horizontal_align_line->setVisible(false); + m_horizontalAlignLine->setZValue(LATCH_LINES_ZVALUE); + m_horizontalAlignLine->setVisible(false); - _vertical_align_line->setZValue(LATCH_LINES_ZVALUE); - _vertical_align_line->setVisible(false); + m_verticalAlignLine->setZValue(LATCH_LINES_ZVALUE); + m_verticalAlignLine->setVisible(false); } LatchController::~LatchController() { - if (_vertical_align_line->scene()) { - _vertical_align_line->scene()->removeItem(_vertical_align_line); - } - delete _vertical_align_line; - if (_horizontal_align_line->scene()) { - _horizontal_align_line->scene()->removeItem(_horizontal_align_line); - } - delete _horizontal_align_line; + if (m_verticalAlignLine->scene()) + m_verticalAlignLine->scene()->removeItem(m_verticalAlignLine); + delete m_verticalAlignLine; + if (m_horizontalAlignLine->scene()) + m_horizontalAlignLine->scene()->removeItem(m_horizontalAlignLine); + delete m_horizontalAlignLine; } -void LatchController::setDiagramSceneModel(DiagramSceneModel *diagram_scene_model) +void LatchController::setDiagramSceneModel(DiagramSceneModel *diagramSceneModel) { - _diagram_scene_model = diagram_scene_model; + m_diagramSceneModel = diagramSceneModel; } -void LatchController::addToGraphicsScene(QGraphicsScene *graphics_scene) +void LatchController::addToGraphicsScene(QGraphicsScene *graphicsScene) { - QMT_CHECK(graphics_scene); - graphics_scene->addItem(_horizontal_align_line); - graphics_scene->addItem(_vertical_align_line); + QMT_CHECK(graphicsScene); + graphicsScene->addItem(m_horizontalAlignLine); + graphicsScene->addItem(m_verticalAlignLine); } -void LatchController::removeFromGraphicsScene(QGraphicsScene *graphics_scene) +void LatchController::removeFromGraphicsScene(QGraphicsScene *graphicsScene) { - Q_UNUSED(graphics_scene); // avoid warning in release mode + Q_UNUSED(graphicsScene); // avoid warning in release mode - if (_vertical_align_line->scene()) { - QMT_CHECK(graphics_scene == _vertical_align_line->scene()); - _vertical_align_line->scene()->removeItem(_vertical_align_line); + if (m_verticalAlignLine->scene()) { + QMT_CHECK(graphicsScene == m_verticalAlignLine->scene()); + m_verticalAlignLine->scene()->removeItem(m_verticalAlignLine); } - if (_horizontal_align_line->scene()) { - QMT_CHECK(graphics_scene == _horizontal_align_line->scene()); - _horizontal_align_line->scene()->removeItem(_horizontal_align_line); + if (m_horizontalAlignLine->scene()) { + QMT_CHECK(graphicsScene == m_horizontalAlignLine->scene()); + m_horizontalAlignLine->scene()->removeItem(m_horizontalAlignLine); } } @@ -106,64 +104,64 @@ void LatchController::mousePressEventLatching(QGraphicsSceneMouseEvent *event) void LatchController::mouseMoveEventLatching(QGraphicsSceneMouseEvent *event) { - _found_horizontal_latch = false; - _found_vertical_latch = false; + m_foundHorizontalLatch = false; + m_foundVerticalLatch = false; if (!(event->modifiers() & Qt::ShiftModifier)) { - _horizontal_align_line->setVisible(false); - _vertical_align_line->setVisible(false); + m_horizontalAlignLine->setVisible(false); + m_verticalAlignLine->setVisible(false); return; } - if (!_diagram_scene_model->getFocusItem()) { + if (!m_diagramSceneModel->focusItem()) return; - } - ILatchable *palped_latchable = dynamic_cast<ILatchable *>(_diagram_scene_model->getFocusItem()); - if (!palped_latchable) { + ILatchable *palpedLatchable = dynamic_cast<ILatchable *>(m_diagramSceneModel->focusItem()); + if (!palpedLatchable) return; - } - ILatchable::Action horiz_action = ILatchable::MOVE; - ILatchable::Action vert_action = ILatchable::MOVE; + ILatchable::Action horizAction = ILatchable::Move; + ILatchable::Action vertAction = ILatchable::Move; - QList<ILatchable::Latch> palped_horizontals = palped_latchable->getHorizontalLatches(horiz_action, true); - QList<ILatchable::Latch> palped_verticals = palped_latchable->getVerticalLatches(vert_action, true); + QList<ILatchable::Latch> palpedHorizontals = palpedLatchable->horizontalLatches(horizAction, true); + QList<ILatchable::Latch> palpedVerticals = palpedLatchable->verticalLatches(vertAction, true); - qreal horiz_min_dist = 10.0; - ILatchable::Latch best_horiz_latch; - bool found_best_horiz = false; - qreal vert_min_dist = 10.0; - ILatchable::Latch best_vert_latch; - bool found_best_vert = false; + qreal horizMinDist = 10.0; + ILatchable::Latch bestHorizLatch; + bool foundBestHoriz = false; + qreal vertMinDist = 10.0; + ILatchable::Latch bestVertLatch; + bool foundBestVert = false; - foreach (QGraphicsItem *item, _diagram_scene_model->getGraphicsItems()) { - if (item != _diagram_scene_model->getFocusItem() && !_diagram_scene_model->isSelectedItem(item)) { + foreach (QGraphicsItem *item, m_diagramSceneModel->graphicsItems()) { + if (item != m_diagramSceneModel->focusItem() && !m_diagramSceneModel->isSelectedItem(item)) { if (ILatchable *latchable = dynamic_cast<ILatchable *>(item)) { - QList<ILatchable::Latch> horizontals = latchable->getHorizontalLatches(horiz_action, false); - foreach (const ILatchable::Latch &palped_latch, palped_horizontals) { + QList<ILatchable::Latch> horizontals = latchable->horizontalLatches(horizAction, false); + foreach (const ILatchable::Latch &palpedLatch, palpedHorizontals) { foreach (const ILatchable::Latch &latch, horizontals) { - if (palped_latch._latch_type == latch._latch_type) { - // calculate distance and minimal distance with sign because this is needed later to move the objects - qreal dist = latch._pos - palped_latch._pos; - if (qAbs(dist) < qAbs(horiz_min_dist)) { - horiz_min_dist = dist; - best_horiz_latch = latch; - found_best_horiz = true; + if (palpedLatch.m_latchType == latch.m_latchType) { + // calculate distance and minimal distance with sign + // because this is needed later to move the objects + qreal dist = latch.m_pos - palpedLatch.m_pos; + if (qAbs(dist) < qAbs(horizMinDist)) { + horizMinDist = dist; + bestHorizLatch = latch; + foundBestHoriz = true; } } } } - QList<ILatchable::Latch> verticals = latchable->getVerticalLatches(vert_action, false); - foreach (const ILatchable::Latch &palped_latch, palped_verticals) { + QList<ILatchable::Latch> verticals = latchable->verticalLatches(vertAction, false); + foreach (const ILatchable::Latch &palpedLatch, palpedVerticals) { foreach (const ILatchable::Latch &latch, verticals) { - if (palped_latch._latch_type == latch._latch_type) { - // calculate distance and minimal distance with sign because this is needed later to move the objects - qreal dist = latch._pos - palped_latch._pos; - if (qAbs(dist) < qAbs(vert_min_dist)) { - vert_min_dist = dist; - best_vert_latch = latch; - found_best_vert = true; + if (palpedLatch.m_latchType == latch.m_latchType) { + // calculate distance and minimal distance with sign + // because this is needed later to move the objects + qreal dist = latch.m_pos - palpedLatch.m_pos; + if (qAbs(dist) < qAbs(vertMinDist)) { + vertMinDist = dist; + bestVertLatch = latch; + foundBestVert = true; } } } @@ -172,48 +170,48 @@ void LatchController::mouseMoveEventLatching(QGraphicsSceneMouseEvent *event) } } - if (found_best_horiz) { - switch (best_horiz_latch._latch_type) { - case ILatchable::LEFT: - case ILatchable::RIGHT: - case ILatchable::HCENTER: - _vertical_align_line->setLine(best_horiz_latch._pos, best_horiz_latch._other_pos1, best_horiz_latch._other_pos2); - _vertical_align_line->setVisible(true); - _found_horizontal_latch = true; - _horizontal_latch = best_horiz_latch; - _horizontal_dist = horiz_min_dist; + if (foundBestHoriz) { + switch (bestHorizLatch.m_latchType) { + case ILatchable::Left: + case ILatchable::Right: + case ILatchable::Hcenter: + m_verticalAlignLine->setLine(bestHorizLatch.m_pos, bestHorizLatch.m_otherPos1, bestHorizLatch.m_otherPos2); + m_verticalAlignLine->setVisible(true); + m_foundHorizontalLatch = true; + m_horizontalLatch = bestHorizLatch; + m_horizontalDist = horizMinDist; break; - case ILatchable::NONE: - case ILatchable::TOP: - case ILatchable::BOTTOM: - case ILatchable::VCENTER: + case ILatchable::None: + case ILatchable::Top: + case ILatchable::Bottom: + case ILatchable::Vcenter: QMT_CHECK(false); break; } } else { - _vertical_align_line->setVisible(false); + m_verticalAlignLine->setVisible(false); } - if (found_best_vert) { - switch (best_vert_latch._latch_type) { - case ILatchable::TOP: - case ILatchable::BOTTOM: - case ILatchable::VCENTER: - _horizontal_align_line->setLine(best_vert_latch._pos, best_vert_latch._other_pos1, best_vert_latch._other_pos2); - _horizontal_align_line->setVisible(true); - _found_vertical_latch = true; - _vertical_latch = best_vert_latch; - _vertical_dist = vert_min_dist; + if (foundBestVert) { + switch (bestVertLatch.m_latchType) { + case ILatchable::Top: + case ILatchable::Bottom: + case ILatchable::Vcenter: + m_horizontalAlignLine->setLine(bestVertLatch.m_pos, bestVertLatch.m_otherPos1, bestVertLatch.m_otherPos2); + m_horizontalAlignLine->setVisible(true); + m_foundVerticalLatch = true; + m_verticalLatch = bestVertLatch; + m_verticalDist = vertMinDist; break; - case ILatchable::NONE: - case ILatchable::LEFT: - case ILatchable::RIGHT: - case ILatchable::HCENTER: + case ILatchable::None: + case ILatchable::Left: + case ILatchable::Right: + case ILatchable::Hcenter: QMT_CHECK(false); break; } } else { - _horizontal_align_line->setVisible(false); + m_horizontalAlignLine->setVisible(false); } } @@ -221,59 +219,59 @@ void LatchController::mouseReleaseEventLatching(QGraphicsSceneMouseEvent *event) { Q_UNUSED(event); - if (_found_horizontal_latch) { - switch (_horizontal_latch._latch_type) { - case ILatchable::LEFT: - case ILatchable::RIGHT: - case ILatchable::HCENTER: - foreach (QGraphicsItem *item, _diagram_scene_model->getSelectedItems()) { - DElement *element = _diagram_scene_model->getElement(item); - if (DObject *selected_object = dynamic_cast<DObject *>(element)) { - _diagram_scene_model->getDiagramController()->startUpdateElement(selected_object, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - QPointF new_pos = selected_object->getPos(); - new_pos.setX(new_pos.x() + _horizontal_dist); - selected_object->setPos(new_pos); - _diagram_scene_model->getDiagramController()->finishUpdateElement(selected_object, _diagram_scene_model->getDiagram(), false); + if (m_foundHorizontalLatch) { + switch (m_horizontalLatch.m_latchType) { + case ILatchable::Left: + case ILatchable::Right: + case ILatchable::Hcenter: + foreach (QGraphicsItem *item, m_diagramSceneModel->selectedItems()) { + DElement *element = m_diagramSceneModel->element(item); + if (DObject *selectedObject = dynamic_cast<DObject *>(element)) { + m_diagramSceneModel->diagramController()->startUpdateElement(selectedObject, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + QPointF newPos = selectedObject->pos(); + newPos.setX(newPos.x() + m_horizontalDist); + selectedObject->setPos(newPos); + m_diagramSceneModel->diagramController()->finishUpdateElement(selectedObject, m_diagramSceneModel->diagram(), false); } } break; - case ILatchable::NONE: - case ILatchable::TOP: - case ILatchable::BOTTOM: - case ILatchable::VCENTER: + case ILatchable::None: + case ILatchable::Top: + case ILatchable::Bottom: + case ILatchable::Vcenter: QMT_CHECK(false); break; } } - if (_found_vertical_latch) { - switch (_vertical_latch._latch_type) { - case ILatchable::TOP: - case ILatchable::BOTTOM: - case ILatchable::VCENTER: - foreach (QGraphicsItem *item, _diagram_scene_model->getSelectedItems()) { - DElement *element = _diagram_scene_model->getElement(item); - if (DObject *selected_object = dynamic_cast<DObject *>(element)) { - _diagram_scene_model->getDiagramController()->startUpdateElement(selected_object, _diagram_scene_model->getDiagram(), DiagramController::UPDATE_GEOMETRY); - QPointF new_pos = selected_object->getPos(); - new_pos.setY(new_pos.y() + _vertical_dist); - selected_object->setPos(new_pos); - _diagram_scene_model->getDiagramController()->finishUpdateElement(selected_object, _diagram_scene_model->getDiagram(), false); + if (m_foundVerticalLatch) { + switch (m_verticalLatch.m_latchType) { + case ILatchable::Top: + case ILatchable::Bottom: + case ILatchable::Vcenter: + foreach (QGraphicsItem *item, m_diagramSceneModel->selectedItems()) { + DElement *element = m_diagramSceneModel->element(item); + if (DObject *selectedObject = dynamic_cast<DObject *>(element)) { + m_diagramSceneModel->diagramController()->startUpdateElement(selectedObject, m_diagramSceneModel->diagram(), DiagramController::UpdateGeometry); + QPointF newPos = selectedObject->pos(); + newPos.setY(newPos.y() + m_verticalDist); + selectedObject->setPos(newPos); + m_diagramSceneModel->diagramController()->finishUpdateElement(selectedObject, m_diagramSceneModel->diagram(), false); } } break; - case ILatchable::NONE: - case ILatchable::LEFT: - case ILatchable::RIGHT: - case ILatchable::HCENTER: + case ILatchable::None: + case ILatchable::Left: + case ILatchable::Right: + case ILatchable::Hcenter: QMT_CHECK(false); break; } } - _horizontal_align_line->setVisible(false); - _vertical_align_line->setVisible(false); + m_horizontalAlignLine->setVisible(false); + m_verticalAlignLine->setVisible(false); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.h index 215884995a..4620095336 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/latchcontroller.h @@ -41,61 +41,41 @@ class QGraphicsScene; class QGraphicsSceneMouseEvent; QT_END_NAMESPACE - namespace qmt { class DiagramController; class DiagramSceneModel; class AlignLineItem; -class QMT_EXPORT LatchController : - public QObject +class QMT_EXPORT LatchController : public QObject { Q_OBJECT public: - LatchController(QObject *parent = 0); - ~LatchController(); -public: - - void setDiagramSceneModel(DiagramSceneModel *diagram_scene_model); + void setDiagramSceneModel(DiagramSceneModel *diagramSceneModel); -public: - - void addToGraphicsScene(QGraphicsScene *graphics_scene); - - void removeFromGraphicsScene(QGraphicsScene *graphics_scene); + void addToGraphicsScene(QGraphicsScene *graphicsScene); + void removeFromGraphicsScene(QGraphicsScene *graphicsScene); void mousePressEventLatching(QGraphicsSceneMouseEvent *event); - void mouseMoveEventLatching(QGraphicsSceneMouseEvent *event); - void mouseReleaseEventLatching(QGraphicsSceneMouseEvent *event); private: - - DiagramSceneModel *_diagram_scene_model; - - AlignLineItem *_horizontal_align_line; - - AlignLineItem *_vertical_align_line; - - bool _found_horizontal_latch; - - ILatchable::Latch _horizontal_latch; - - qreal _horizontal_dist; - - bool _found_vertical_latch; - - ILatchable::Latch _vertical_latch; - - qreal _vertical_dist; + DiagramSceneModel *m_diagramSceneModel; + AlignLineItem *m_horizontalAlignLine; + AlignLineItem *m_verticalAlignLine; + bool m_foundHorizontalLatch; + ILatchable::Latch m_horizontalLatch; + qreal m_horizontalDist; + bool m_foundVerticalLatch; + ILatchable::Latch m_verticalLatch; + qreal m_verticalDist; }; -} +} // namespace qmt #endif // QMT_LATCHCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.cpp index a261d01649..0202bacbb5 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.cpp @@ -41,26 +41,21 @@ namespace qmt { -class AlignButtonsItem::AlignButtonItem : - public QGraphicsRectItem +class AlignButtonsItem::AlignButtonItem : public QGraphicsRectItem { public: - AlignButtonItem(IAlignable::AlignType align_type, const QString &identifier, IAlignable *alignable, QGraphicsItem *parent) + AlignButtonItem(IAlignable::AlignType alignType, const QString &identifier, IAlignable *alignable, QGraphicsItem *parent) : QGraphicsRectItem(parent), - _align_type(align_type), - _identifier(identifier), - _alignable(alignable), - _pixmap_item(new QGraphicsPixmapItem(this)) + m_alignType(alignType), + m_identifier(identifier), + m_alignable(alignable), + m_pixmapItem(new QGraphicsPixmapItem(this)) { setBrush(QBrush(QColor(192, 192, 192))); setPen(QPen(QColor(64, 64, 64))); } -public: - - QString getIdentifier() const { return _identifier; } - -public: + QString identifier() const { return m_identifier; } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { @@ -77,47 +72,38 @@ public: void mousePressEvent(QGraphicsSceneMouseEvent *event) { - Q_UNUSED(event;) + Q_UNUSED(event); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - if (contains(event->pos())) { - _alignable->align(_align_type, _identifier); - } + if (contains(event->pos())) + m_alignable->align(m_alignType, m_identifier); } -public: - void setPixmap(const QPixmap &pixmap) { - setRect(0.0, 0.0, pixmap.width() + 2 * INNER_BORDER, pixmap.height() + 2 * INNER_BORDER); - _pixmap_item->setPos(INNER_BORDER, INNER_BORDER); - _pixmap_item->setPixmap(pixmap); + setRect(0.0, 0.0, pixmap.width() + 2 * InnerBorder, pixmap.height() + 2 * InnerBorder); + m_pixmapItem->setPos(InnerBorder, InnerBorder); + m_pixmapItem->setPixmap(pixmap); } private: - - IAlignable::AlignType _align_type; - - QString _identifier; - - IAlignable *_alignable; - - QGraphicsPixmapItem *_pixmap_item; - + IAlignable::AlignType m_alignType; + QString m_identifier; + IAlignable *m_alignable; + QGraphicsPixmapItem *m_pixmapItem; }; - AlignButtonsItem::AlignButtonsItem(IAlignable *alignable, QGraphicsItem *parent) : QGraphicsItem(parent), - _alignable(alignable) + m_alignable(alignable) { } AlignButtonsItem::~AlignButtonsItem() { - qDeleteAll(_align_items); + qDeleteAll(m_alignItems); } QRectF AlignButtonsItem::boundingRect() const @@ -134,63 +120,63 @@ void AlignButtonsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem * void AlignButtonsItem::clear() { - qDeleteAll(_align_items); - _align_items.clear(); + qDeleteAll(m_alignItems); + m_alignItems.clear(); } -void AlignButtonsItem::addButton(IAlignable::AlignType align_type, const QString &identifier, qreal pos) +void AlignButtonsItem::addButton(IAlignable::AlignType alignType, const QString &identifier, qreal pos) { - AlignButtonItem *item = new AlignButtonItem(align_type, identifier, _alignable, this); - switch (align_type) { - case IAlignable::ALIGN_LEFT: + AlignButtonItem *item = new AlignButtonItem(alignType, identifier, m_alignable, this); + switch (alignType) { + case IAlignable::AlignLeft: { - static const QPixmap align_left_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-left.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_left_pixmap); - item->setPos(pos - INNER_BORDER - 3.0, 0); // subtract additional shift of image within pixmap + static const QPixmap alignLeftPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-left.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignLeftPixmap); + item->setPos(pos - InnerBorder - 3.0, 0); // subtract additional shift of image within pixmap break; } - case IAlignable::ALIGN_RIGHT: + case IAlignable::AlignRight: { - static const QPixmap align_right_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-right.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_right_pixmap); - item->setPos(pos - item->boundingRect().width() + INNER_BORDER + 3.0, 0); + static const QPixmap alignRightPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-right.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignRightPixmap); + item->setPos(pos - item->boundingRect().width() + InnerBorder + 3.0, 0); break; } - case IAlignable::ALIGN_TOP: + case IAlignable::AlignTop: { - static const QPixmap align_top_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-top.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_top_pixmap); - item->setPos(0, pos - INNER_BORDER - 3.0); + static const QPixmap alignTopPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-top.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignTopPixmap); + item->setPos(0, pos - InnerBorder - 3.0); break; } - case IAlignable::ALIGN_BOTTOM: + case IAlignable::AlignBottom: { - static const QPixmap align_bottom_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-bottom.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_bottom_pixmap); - item->setPos(0, pos - item->boundingRect().height() + INNER_BORDER + 3.0); + static const QPixmap alignBottomPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-bottom.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignBottomPixmap); + item->setPos(0, pos - item->boundingRect().height() + InnerBorder + 3.0); break; } - case IAlignable::ALIGN_HCENTER: + case IAlignable::AlignHcenter: { - static const QPixmap align_horizontal_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-horizontal.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_horizontal_pixmap); + static const QPixmap alignHorizontalPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-horizontal.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignHorizontalPixmap); item->setPos(pos - item->boundingRect().center().x(), 0); break; } - case IAlignable::ALIGN_VCENTER: + case IAlignable::AlignVcenter: { - static const QPixmap align_vertical_pixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-vertical.png")).scaled(NORMAL_PIXMAP_WIDTH, NORMAL_PIXMAP_HEIGHT, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - item->setPixmap(align_vertical_pixmap); + static const QPixmap alignVerticalPixmap = QPixmap(QStringLiteral(":/modelinglib/25x25/align-vertical.png")).scaled(NormalPixmapWidth, NormalPixmapHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + item->setPixmap(alignVerticalPixmap); item->setPos(0, pos - item->boundingRect().center().y()); break; } - case IAlignable::ALIGN_WIDTH: - case IAlignable::ALIGN_HEIGHT: - case IAlignable::ALIGN_SIZE: + case IAlignable::AlignWidth: + case IAlignable::AlignHeight: + case IAlignable::AlignSize: QMT_CHECK(false); break; } - _align_items.append(item); + m_alignItems.append(item); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.h index da106c28a6..0a3baa73e5 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignbuttonsitem.h @@ -39,51 +39,35 @@ namespace qmt { class IAlignable; - -class AlignButtonsItem : - public QGraphicsItem +class AlignButtonsItem : public QGraphicsItem { - class AlignButtonItem; public: - enum { - NORMAL_PIXMAP_WIDTH = 14, - NORMAL_PIXMAP_HEIGHT = NORMAL_PIXMAP_WIDTH, - INNER_BORDER = 2, - NORMAL_BUTTON_WIDTH = NORMAL_PIXMAP_WIDTH + 2 * INNER_BORDER, - NORMAL_BUTTON_HEIGHT = NORMAL_PIXMAP_HEIGHT + 2 * INNER_BORDER, - HORIZONTAL_DISTANCE_TO_OBJECT = 4, - VERTICAL_DISTANCE_TO_OBEJCT = HORIZONTAL_DISTANCE_TO_OBJECT + NormalPixmapWidth = 14, + NormalPixmapHeight = NormalPixmapWidth, + InnerBorder = 2, + NormalButtonWidth = NormalPixmapWidth + 2 * InnerBorder, + NormalButtonHeight = NormalPixmapHeight + 2 * InnerBorder, + HorizontalDistanceToObject = 4, + VerticalDistanceToObejct = HorizontalDistanceToObject }; -public: - AlignButtonsItem(IAlignable *alignable, QGraphicsItem *parent = 0); - ~AlignButtonsItem(); -public: - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); -public: - void clear(); - - void addButton(IAlignable::AlignType align_type, const QString &identifier, qreal pos); + void addButton(IAlignable::AlignType alignType, const QString &identifier, qreal pos); private: - - IAlignable *_alignable; - - QList<AlignButtonItem *> _align_items; - + IAlignable *m_alignable; + QList<AlignButtonItem *> m_alignItems; }; -} +} // namespace qmt #endif // QMT_ALIGNBUTTONSITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.cpp index baedfd37bb..9de8bc93f0 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.cpp @@ -38,13 +38,13 @@ namespace qmt { AlignLineItem::AlignLineItem(Direction direction, QGraphicsItem *parent) : QGraphicsItem(parent), - _direction(direction), - _align_line(new QGraphicsLineItem(this)), - _highlight_line(new QGraphicsLineItem(this)) + m_direction(direction), + m_alignLine(new QGraphicsLineItem(this)), + m_highlightLine(new QGraphicsLineItem(this)) { - _align_line->setPen(QPen(QBrush(Qt::blue), 1.0, Qt::DotLine)); - _highlight_line->setPen(QPen(QBrush(Qt::red), 2.0, Qt::DotLine)); - _highlight_line->setZValue(1); + m_alignLine->setPen(QPen(QBrush(Qt::blue), 1.0, Qt::DotLine)); + m_highlightLine->setPen(QPen(QBrush(Qt::red), 2.0, Qt::DotLine)); + m_highlightLine->setZValue(1); } AlignLineItem::~AlignLineItem() @@ -56,20 +56,20 @@ void AlignLineItem::setLine(qreal pos) setLine(pos, 0.0, 0.0); } -void AlignLineItem::setLine(qreal pos, qreal other_pos1, qreal other_pos2) +void AlignLineItem::setLine(qreal pos, qreal otherPos1, qreal otherPos2) { - QRectF scene_rect = scene()->sceneRect(); - switch (_direction) { - case HORIZONTAL: - _align_line->setLine(scene_rect.left() + 1.0, pos, scene_rect.right() - 1.0, pos); - _highlight_line->setLine(other_pos1, pos, other_pos2, pos); + QRectF sceneRect = scene()->sceneRect(); + switch (m_direction) { + case Horizontal: + m_alignLine->setLine(sceneRect.left() + 1.0, pos, sceneRect.right() - 1.0, pos); + m_highlightLine->setLine(otherPos1, pos, otherPos2, pos); break; - case VERTICAL: - _align_line->setLine(pos, scene_rect.top() + 1.0, pos, scene_rect.bottom() - 1.0); - _highlight_line->setLine(pos, other_pos1, pos, other_pos2); + case Vertical: + m_alignLine->setLine(pos, sceneRect.top() + 1.0, pos, sceneRect.bottom() - 1.0); + m_highlightLine->setLine(pos, otherPos1, pos, otherPos2); break; } - _highlight_line->setVisible(other_pos1 - other_pos2 != 0); + m_highlightLine->setVisible(otherPos1 - otherPos2 != 0); } QRectF AlignLineItem::boundingRect() const @@ -84,4 +84,4 @@ void AlignLineItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt Q_UNUSED(widget); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.h index 105dbae12d..c19c067943 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/alignlineitem.h @@ -35,45 +35,28 @@ namespace qmt { -class AlignLineItem : - public QGraphicsItem +class AlignLineItem : public QGraphicsItem { public: - enum Direction { - HORIZONTAL, - VERTICAL + Horizontal, + Vertical }; -public: - AlignLineItem(Direction direction, QGraphicsItem *parent = 0); - ~AlignLineItem(); -public: - void setLine(qreal pos); - - void setLine(qreal pos, qreal other_pos1, qreal other_pos2); - -public: + void setLine(qreal pos, qreal otherPos1, qreal otherPos2); QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - -private: - - Direction _direction; - - QGraphicsLineItem *_align_line; - - QGraphicsLineItem *_highlight_line; - + Direction m_direction; + QGraphicsLineItem *m_alignLine; + QGraphicsLineItem *m_highlightLine; }; -} +} // namespace qmt #endif // QMT_ALIGNLINEITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.cpp index 24bc073bcb..45c3f6e6f6 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.cpp @@ -45,8 +45,7 @@ namespace qmt { -class ArrowItem::GraphicsPathItem : - public QGraphicsPathItem +class ArrowItem::GraphicsPathItem : public QGraphicsPathItem { public: GraphicsPathItem(QGraphicsItem *parent) @@ -63,18 +62,16 @@ public: } }; - -class ArrowItem::GraphicsHeadItem : - public QGraphicsItem +class ArrowItem::GraphicsHeadItem : public QGraphicsItem { public: GraphicsHeadItem(QGraphicsItem *parent) : QGraphicsItem(parent), - _head(ArrowItem::HEAD_NONE), - _arrow_size(10.0), - _diamond_size(15.0), - _arrow_item(0), - _diamond_item(0) + m_head(ArrowItem::HeadNone), + m_arrowSize(10.0), + m_diamondSize(15.0), + m_arrowItem(0), + m_diamondItem(0) { } @@ -82,31 +79,24 @@ public: { } -public: - void setHead(ArrowItem::Head head) { - if (_head != head) { - _head = head; - } + if (m_head != head) + m_head = head; } - void setArrowSize(double arrow_size) + void setArrowSize(double arrowSize) { - if (_arrow_size != arrow_size) { - _arrow_size = arrow_size; - } + if (m_arrowSize != arrowSize) + m_arrowSize = arrowSize; } - void setDiamondSize(double diamond_size) + void setDiamondSize(double diamondSize) { - if (_diamond_size != diamond_size) { - _diamond_size = diamond_size; - } + if (m_diamondSize != diamondSize) + m_diamondSize = diamondSize; } -public: - QRectF boundingRect() const { return childrenBoundingRect(); @@ -118,18 +108,16 @@ public: Q_UNUSED(option); Q_UNUSED(widget); -#if 0 +#ifdef DEBUG_PAINT_SHAPE painter->setPen(QPen(Qt::blue)); painter->drawRect(boundingRect()); painter->setPen(QPen(Qt::red)); painter->drawPath(shape()); painter->setPen(QPen(Qt::green)); - if (_arrow_item) { - painter->drawRect(mapRectFromItem(_arrow_item, _arrow_item->boundingRect())); - } - if (_diamond_item) { - painter->drawRect(mapRectFromItem(_diamond_item, _diamond_item->boundingRect())); - } + if (m_arrowItem) + painter->drawRect(mapRectFromItem(m_arrowItem, m_arrowItem->boundingRect())); + if (m_diamondItem) + painter->drawRect(mapRectFromItem(m_diamondItem, m_diamondItem->boundingRect())); #endif } @@ -137,34 +125,30 @@ public: { QPainterPath path; path.setFillRule(Qt::WindingFill); - if (_arrow_item) { - path.addRect(mapRectFromItem(_arrow_item, _arrow_item->boundingRect())); - } - if (_diamond_item) { - path.addRect(mapRectFromItem(_diamond_item, _diamond_item->boundingRect())); - } + if (m_arrowItem) + path.addRect(mapRectFromItem(m_arrowItem, m_arrowItem->boundingRect())); + if (m_diamondItem) + path.addRect(mapRectFromItem(m_diamondItem, m_diamondItem->boundingRect())); return path; } -public: - double calcHeadLength() const { double length = 0.0; - switch (_head) { - case ArrowItem::HEAD_NONE: + switch (m_head) { + case ArrowItem::HeadNone: break; - case ArrowItem::HEAD_OPEN: - case ArrowItem::HEAD_TRIANGLE: - case ArrowItem::HEAD_FILLED_TRIANGLE: + case ArrowItem::HeadOpen: + case ArrowItem::HeadTriangle: + case ArrowItem::HeadFilledTriangle: length = calcArrowLength(); break; - case ArrowItem::HEAD_DIAMOND: - case ArrowItem::HEAD_FILLED_DIAMOND: + case ArrowItem::HeadDiamond: + case ArrowItem::HeadFilledDiamond: length = calcDiamondLength(); break; - case ArrowItem::HEAD_DIAMOND_FILLED_TRIANGLE: - case ArrowItem::HEAD_FILLED_DIAMOND_FILLED_TRIANGLE: + case ArrowItem::HeadDiamondFilledTriangle: + case ArrowItem::HeadFilledDiamondFilledTriangle: length = calcDiamondLength() + calcArrowLength(); break; } @@ -172,117 +156,103 @@ public: } private: - double calcArrowLength() const { - return sqrt(3.0) * 0.5 * _arrow_size; + return sqrt(3.0) * 0.5 * m_arrowSize; } double calcDiamondLength() const { - return sqrt(3.0) * _diamond_size; + return sqrt(3.0) * m_diamondSize; } public: - void update(const Style *style) { - bool has_arrow = false; - bool has_diamond = false; - switch (_head) { - case ArrowItem::HEAD_NONE: + bool hasArrow = false; + bool hasDiamond = false; + switch (m_head) { + case ArrowItem::HeadNone: break; - case ArrowItem::HEAD_OPEN: - case ArrowItem::HEAD_TRIANGLE: - case ArrowItem::HEAD_FILLED_TRIANGLE: - has_arrow = true; + case ArrowItem::HeadOpen: + case ArrowItem::HeadTriangle: + case ArrowItem::HeadFilledTriangle: + hasArrow = true; break; - case ArrowItem::HEAD_DIAMOND: - case ArrowItem::HEAD_FILLED_DIAMOND: - has_diamond = true; + case ArrowItem::HeadDiamond: + case ArrowItem::HeadFilledDiamond: + hasDiamond = true; break; - case ArrowItem::HEAD_DIAMOND_FILLED_TRIANGLE: - case ArrowItem::HEAD_FILLED_DIAMOND_FILLED_TRIANGLE: - has_arrow = true; - has_diamond = true; + case ArrowItem::HeadDiamondFilledTriangle: + case ArrowItem::HeadFilledDiamondFilledTriangle: + hasArrow = true; + hasDiamond = true; break; } - if (has_arrow) { - if (!_arrow_item) { - _arrow_item = new ArrowItem::GraphicsPathItem(this); - } + if (hasArrow) { + if (!m_arrowItem) + m_arrowItem = new ArrowItem::GraphicsPathItem(this); - if (_head == ArrowItem::HEAD_OPEN || _head == ArrowItem::HEAD_TRIANGLE) { - _arrow_item->setPen(style->getLinePen()); - _arrow_item->setBrush(QBrush()); + if (m_head == ArrowItem::HeadOpen || m_head == ArrowItem::HeadTriangle) { + m_arrowItem->setPen(style->linePen()); + m_arrowItem->setBrush(QBrush()); } else { - _arrow_item->setPen(style->getLinePen()); - _arrow_item->setBrush(style->getFillBrush()); + m_arrowItem->setPen(style->linePen()); + m_arrowItem->setBrush(style->fillBrush()); } QPainterPath path; double h = calcArrowLength(); - path.moveTo(-h, -_arrow_size * 0.5); + path.moveTo(-h, -m_arrowSize * 0.5); path.lineTo(0.0, 0.0); - path.lineTo(-h, _arrow_size * 0.5); - if (_head != ArrowItem::HEAD_OPEN) { + path.lineTo(-h, m_arrowSize * 0.5); + if (m_head != ArrowItem::HeadOpen) path.closeSubpath(); - } - if (has_diamond) { + if (hasDiamond) path.translate(-calcDiamondLength(), 0.0); - } - _arrow_item->setPath(path); - } else if (_arrow_item) { - _arrow_item->scene()->removeItem(_arrow_item); - delete _arrow_item; - _arrow_item = 0; + m_arrowItem->setPath(path); + } else if (m_arrowItem) { + m_arrowItem->scene()->removeItem(m_arrowItem); + delete m_arrowItem; + m_arrowItem = 0; } - if (has_diamond) { - if (!_diamond_item) { - _diamond_item = new ArrowItem::GraphicsPathItem(this); - } + if (hasDiamond) { + if (!m_diamondItem) + m_diamondItem = new ArrowItem::GraphicsPathItem(this); - if (_head == ArrowItem::HEAD_DIAMOND || _head == ArrowItem::HEAD_DIAMOND_FILLED_TRIANGLE) { - _diamond_item->setPen(style->getLinePen()); - _diamond_item->setBrush(QBrush()); + if (m_head == ArrowItem::HeadDiamond || m_head == ArrowItem::HeadDiamondFilledTriangle) { + m_diamondItem->setPen(style->linePen()); + m_diamondItem->setBrush(QBrush()); } else { - _diamond_item->setPen(style->getLinePen()); - _diamond_item->setBrush(style->getFillBrush()); + m_diamondItem->setPen(style->linePen()); + m_diamondItem->setBrush(style->fillBrush()); } QPainterPath path; double h = calcDiamondLength(); - path.lineTo(-h * 0.5, -_diamond_size * 0.5); + path.lineTo(-h * 0.5, -m_diamondSize * 0.5); path.lineTo(-h, 0.0); - path.lineTo(-h * 0.5, _diamond_size * 0.5); + path.lineTo(-h * 0.5, m_diamondSize * 0.5); path.closeSubpath(); - _diamond_item->setPath(path); - } else if (_diamond_item) { - _diamond_item->scene()->removeItem(_diamond_item); - delete _diamond_item; - _diamond_item = 0; + m_diamondItem->setPath(path); + } else if (m_diamondItem) { + m_diamondItem->scene()->removeItem(m_diamondItem); + delete m_diamondItem; + m_diamondItem = 0; } } private: - - ArrowItem::Head _head; - - double _arrow_size; - - double _diamond_size; - - ArrowItem::GraphicsPathItem *_arrow_item; - - ArrowItem::GraphicsPathItem *_diamond_item; - + ArrowItem::Head m_head; + double m_arrowSize; + double m_diamondSize; + ArrowItem::GraphicsPathItem *m_arrowItem; + ArrowItem::GraphicsPathItem *m_diamondItem; }; - -class ArrowItem::GraphicsShaftItem : - public ArrowItem::GraphicsPathItem +class ArrowItem::GraphicsShaftItem : public ArrowItem::GraphicsPathItem { public: GraphicsShaftItem(QGraphicsItem *parent) @@ -291,30 +261,29 @@ public: } }; - ArrowItem::ArrowItem(QGraphicsItem *parent) : QGraphicsItem(parent), - _shaft(SHAFT_SOLID), - _shaft_item(new GraphicsShaftItem(this)), - _arrow_size(10.0), - _diamond_size(15.0), - _start_head(HEAD_NONE), - _start_head_item(0), - _end_head(HEAD_NONE), - _end_head_item(0) + m_shaft(ShaftSolid), + m_shaftItem(new GraphicsShaftItem(this)), + m_arrowSize(10.0), + m_diamondSize(15.0), + m_startHead(HeadNone), + m_startHeadItem(0), + m_endHead(HeadNone), + m_endHeadItem(0) { } ArrowItem::ArrowItem(const ArrowItem &rhs, QGraphicsItem *parent) : QGraphicsItem(parent), - _shaft(rhs._shaft), - _shaft_item(new GraphicsShaftItem(this)), - _arrow_size(rhs._arrow_size), - _diamond_size(rhs._diamond_size), - _start_head(rhs._start_head), - _start_head_item(0), - _end_head(rhs._end_head), - _end_head_item(0) + m_shaft(rhs.m_shaft), + m_shaftItem(new GraphicsShaftItem(this)), + m_arrowSize(rhs.m_arrowSize), + m_diamondSize(rhs.m_diamondSize), + m_startHead(rhs.m_startHead), + m_startHeadItem(0), + m_endHead(rhs.m_endHead), + m_endHeadItem(0) { } @@ -324,42 +293,37 @@ ArrowItem::~ArrowItem() void ArrowItem::setShaft(ArrowItem::Shaft shaft) { - if (_shaft != shaft) { - _shaft = shaft; - } + if (m_shaft != shaft) + m_shaft = shaft; } -void ArrowItem::setArrowSize(double arrow_size) +void ArrowItem::setArrowSize(double arrowSize) { - if (_arrow_size != arrow_size) { - _arrow_size = arrow_size; - } + if (m_arrowSize != arrowSize) + m_arrowSize = arrowSize; } -void ArrowItem::setDiamondSize(double diamond_size) +void ArrowItem::setDiamondSize(double diamondSize) { - if (_diamond_size != diamond_size) { - _diamond_size = diamond_size; - } + if (m_diamondSize != diamondSize) + m_diamondSize = diamondSize; } void ArrowItem::setStartHead(ArrowItem::Head head) { - if (_start_head != head) { - _start_head = head; - } + if (m_startHead != head) + m_startHead = head; } void ArrowItem::setEndHead(ArrowItem::Head head) { - if (_end_head != head) { - _end_head = head; - } + if (m_endHead != head) + m_endHead = head; } void ArrowItem::setPoints(const QList<QPointF> &points) { - _points = points; + m_points = points; } QRectF ArrowItem::boundingRect() const @@ -373,18 +337,16 @@ void ArrowItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q_UNUSED(option); Q_UNUSED(widget); -#if DEBUG_PAINT_ARROW_SHAPE +#ifdef DEBUG_PAINT_SHAPE painter->setPen(QPen(Qt::blue)); painter->drawRect(boundingRect()); painter->setPen(QPen(Qt::red)); painter->drawPath(shape()); painter->setPen(QPen(Qt::green)); - if (_start_head_item) { - painter->drawRect(mapRectFromItem(_start_head_item, _start_head_item->boundingRect())); - } - if (_end_head_item) { - painter->drawRect(mapRectFromItem(_end_head_item, _end_head_item->boundingRect())); - } + if (m_startHeadItem) + painter->drawRect(mapRectFromItem(m_startHeadItem, m_startHeadItem->boundingRect())); + if (m_endHeadItem) + painter->drawRect(mapRectFromItem(m_endHeadItem, m_endHeadItem->boundingRect())); #endif } @@ -392,151 +354,141 @@ QPainterPath ArrowItem::shape() const { QPainterPath path; path.setFillRule(Qt::WindingFill); - if (_shaft_item &&_shaft_item->path() != QPainterPath()) { + if (m_shaftItem &&m_shaftItem->path() != QPainterPath()) { QPainterPathStroker ps; - QPen pen = _shaft_item->pen(); + QPen pen = m_shaftItem->pen(); ps.setCapStyle(pen.capStyle()); ps.setJoinStyle(pen.joinStyle()); ps.setMiterLimit(pen.miterLimit()); // overwrite pen width to make selection more lazy ps.setWidth(16.0); - QPainterPath p = ps.createStroke(_shaft_item->path()); + QPainterPath p = ps.createStroke(m_shaftItem->path()); path.addPath(p); } - if (_start_head_item) { - path.addRect(mapRectFromItem(_start_head_item, _start_head_item->boundingRect())); - } - if (_end_head_item) { - path.addRect(mapRectFromItem(_end_head_item, _end_head_item->boundingRect())); - } + if (m_startHeadItem) + path.addRect(mapRectFromItem(m_startHeadItem, m_startHeadItem->boundingRect())); + if (m_endHeadItem) + path.addRect(mapRectFromItem(m_endHeadItem, m_endHeadItem->boundingRect())); return path; } QPointF ArrowItem::calcPointAtPercent(double percentage) const { - return _shaft_item->path().pointAtPercent(percentage); + return m_shaftItem->path().pointAtPercent(percentage); } -QLineF ArrowItem::getFirstLineSegment() const +QLineF ArrowItem::firstLineSegment() const { - QMT_CHECK(_points.size() >= 2); - return QLineF(_points[0], _points[1]); + QMT_CHECK(m_points.size() >= 2); + return QLineF(m_points[0], m_points[1]); } -QLineF ArrowItem::getLastLineSegment() const +QLineF ArrowItem::lastLineSegment() const { - QMT_CHECK(_points.size() >= 2); - return QLineF(_points[_points.size() - 1], _points[_points.size() - 2]); + QMT_CHECK(m_points.size() >= 2); + return QLineF(m_points[m_points.size() - 1], m_points[m_points.size() - 2]); } -double ArrowItem::getStartHeadLength() const +double ArrowItem::startHeadLength() const { - if (_start_head_item) { - return _start_head_item->calcHeadLength(); - } + if (m_startHeadItem) + return m_startHeadItem->calcHeadLength(); return 0.0; } -double ArrowItem::getEndHeadLength() const +double ArrowItem::endHeadLength() const { - if (_end_head_item) { - return _end_head_item->calcHeadLength(); - } + if (m_endHeadItem) + return m_endHeadItem->calcHeadLength(); return 0.0; } void ArrowItem::update(const Style *style) { updateShaft(style); - updateHead(&_start_head_item, _start_head, style); - updateHead(&_end_head_item, _end_head, style); + updateHead(&m_startHeadItem, m_startHead, style); + updateHead(&m_endHeadItem, m_endHead, style); updateGeometry(); } void ArrowItem::updateShaft(const Style *style) { - QMT_CHECK(_shaft_item); + QMT_CHECK(m_shaftItem); - QPen pen(style->getLinePen()); - if (_shaft == SHAFT_DASHED) { + QPen pen(style->linePen()); + if (m_shaft == ShaftDashed) pen.setDashPattern(QVector<qreal>() << (4.0 / pen.widthF()) << (4.0 / pen.widthF())); - } - _shaft_item->setPen(pen); + m_shaftItem->setPen(pen); } -void ArrowItem::updateHead(GraphicsHeadItem **head_item, Head head, const Style *style) +void ArrowItem::updateHead(GraphicsHeadItem **headItem, Head head, const Style *style) { - if (head == HEAD_NONE) { - if (*head_item) { - if ((*head_item)->scene()) { - (*head_item)->scene()->removeItem(*head_item); - } - delete *head_item; - *head_item = 0; + if (head == HeadNone) { + if (*headItem) { + if ((*headItem)->scene()) + (*headItem)->scene()->removeItem(*headItem); + delete *headItem; + *headItem = 0; } return; } - if (!*head_item) { - *head_item = new GraphicsHeadItem(this); - } - (*head_item)->setArrowSize(_arrow_size); - (*head_item)->setDiamondSize(_diamond_size); - (*head_item)->setHead(head); - (*head_item)->update(style); + if (!*headItem) + *headItem = new GraphicsHeadItem(this); + (*headItem)->setArrowSize(m_arrowSize); + (*headItem)->setDiamondSize(m_diamondSize); + (*headItem)->setHead(head); + (*headItem)->update(style); } -void ArrowItem::updateHeadGeometry(GraphicsHeadItem **head_item, const QPointF &pos, const QPointF &other_pos) +void ArrowItem::updateHeadGeometry(GraphicsHeadItem **headItem, const QPointF &pos, const QPointF &otherPos) { - if (!*head_item) { + if (!*headItem) return; - } - (*head_item)->setPos(pos); + (*headItem)->setPos(pos); - QVector2D direction_vector(pos - other_pos); - direction_vector.normalize(); - double angle = qAcos(direction_vector.x()) * 180.0 / 3.1415926535; - if (direction_vector.y() > 0.0) { + QVector2D directionVector(pos - otherPos); + directionVector.normalize(); + double angle = qAcos(directionVector.x()) * 180.0 / 3.1415926535; + if (directionVector.y() > 0.0) angle = -angle; - } - (*head_item)->setRotation(-angle); + (*headItem)->setRotation(-angle); } void ArrowItem::updateGeometry() { - QMT_CHECK(_points.size() >= 2); - QMT_CHECK(_shaft_item); + QMT_CHECK(m_points.size() >= 2); + QMT_CHECK(m_shaftItem); prepareGeometryChange(); QPainterPath path; - if (_start_head_item) { - QVector2D start_direction_vector(_points[1] - _points[0]); - start_direction_vector.normalize(); - start_direction_vector *= _start_head_item->calcHeadLength(); - path.moveTo(_points[0] + start_direction_vector.toPointF()); + if (m_startHeadItem) { + QVector2D startDirectionVector(m_points[1] - m_points[0]); + startDirectionVector.normalize(); + startDirectionVector *= m_startHeadItem->calcHeadLength(); + path.moveTo(m_points[0] + startDirectionVector.toPointF()); } else { - path.moveTo(_points[0]); + path.moveTo(m_points[0]); } - for (int i = 1; i < _points.size() - 1; ++i) { - path.lineTo(_points.at(i)); - } + for (int i = 1; i < m_points.size() - 1; ++i) + path.lineTo(m_points.at(i)); - if (_end_head_item) { - QVector2D end_direction_vector(_points[_points.size() - 1] - _points[_points.size() - 2]); - end_direction_vector.normalize(); - end_direction_vector *= _end_head_item->calcHeadLength(); - path.lineTo(_points[_points.size() - 1] - end_direction_vector.toPointF()); + if (m_endHeadItem) { + QVector2D endDirectionVector(m_points[m_points.size() - 1] - m_points[m_points.size() - 2]); + endDirectionVector.normalize(); + endDirectionVector *= m_endHeadItem->calcHeadLength(); + path.lineTo(m_points[m_points.size() - 1] - endDirectionVector.toPointF()); } else { - path.lineTo(_points[_points.size() - 1]); + path.lineTo(m_points[m_points.size() - 1]); } - _shaft_item->setPath(path); + m_shaftItem->setPath(path); - updateHeadGeometry(&_start_head_item, _points[0], _points[1]); - updateHeadGeometry(&_end_head_item, _points[_points.size() - 1], _points[_points.size() - 2]); + updateHeadGeometry(&m_startHeadItem, m_points[0], m_points[1]); + updateHeadGeometry(&m_endHeadItem, m_points[m_points.size() - 1], m_points[m_points.size() - 2]); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.h index 948ade9faa..d2531ccb05 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/arrowitem.h @@ -37,111 +37,74 @@ QT_BEGIN_NAMESPACE class QGraphicsPathItem; QT_END_NAMESPACE - namespace qmt { class Style; -class ArrowItem : - public QGraphicsItem +class ArrowItem : public QGraphicsItem { class GraphicsPathItem; class GraphicsHeadItem; class GraphicsShaftItem; public: - enum Shaft { - SHAFT_SOLID, - SHAFT_DASHED + ShaftSolid, + ShaftDashed }; enum Head { - HEAD_NONE, - HEAD_OPEN, - HEAD_TRIANGLE, - HEAD_FILLED_TRIANGLE, - HEAD_DIAMOND, - HEAD_FILLED_DIAMOND, - HEAD_DIAMOND_FILLED_TRIANGLE, - HEAD_FILLED_DIAMOND_FILLED_TRIANGLE + HeadNone, + HeadOpen, + HeadTriangle, + HeadFilledTriangle, + HeadDiamond, + HeadFilledDiamond, + HeadDiamondFilledTriangle, + HeadFilledDiamondFilledTriangle }; -public: - ArrowItem(QGraphicsItem *parent = 0); - ArrowItem(const ArrowItem &rhs, QGraphicsItem *parent = 0); - ~ArrowItem(); -public: - void setShaft(Shaft shaft); - - void setArrowSize(double arrow_size); - - void setDiamondSize(double diamond_size); - + void setArrowSize(double arrowSize); + void setDiamondSize(double diamondSize); void setStartHead(Head head); - void setEndHead(Head head); - void setPoints(const QList<QPointF> &points); -public: - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - QPainterPath shape() const; -public: - QPointF calcPointAtPercent(double percentage) const; - - QLineF getFirstLineSegment() const; - - QLineF getLastLineSegment() const; - - double getStartHeadLength() const; - - double getEndHeadLength() const; + QLineF firstLineSegment() const; + QLineF lastLineSegment() const; + double startHeadLength() const; + double endHeadLength() const; void update(const Style *style); private: - void updateShaft(const Style *style); - - void updateHead(GraphicsHeadItem **head_item, Head head, const Style *style); - - void updateHeadGeometry(GraphicsHeadItem **head_item, const QPointF &pos, const QPointF &other_pos); - + void updateHead(GraphicsHeadItem **headItem, Head head, const Style *style); + void updateHeadGeometry(GraphicsHeadItem **headItem, const QPointF &pos, + const QPointF &otherPos); void updateGeometry(); -private: - - Shaft _shaft; - - GraphicsShaftItem *_shaft_item; - - double _arrow_size; - - double _diamond_size; - - Head _start_head; - - GraphicsHeadItem *_start_head_item; - - Head _end_head; - - GraphicsHeadItem *_end_head_item; - - QList<QPointF> _points; + Shaft m_shaft; + GraphicsShaftItem *m_shaftItem; + double m_arrowSize; + double m_diamondSize; + Head m_startHead; + GraphicsHeadItem *m_startHeadItem; + Head m_endHead; + GraphicsHeadItem *m_endHeadItem; + QList<QPointF> m_points; }; -} +} // namespace qmt #endif // QMT_GRAPHICSARROWITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.cpp index a2c4a086cc..b6ae843bb7 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.cpp @@ -36,7 +36,7 @@ namespace qmt { ContextLabelItem::ContextLabelItem(QGraphicsItem *parent) : QGraphicsSimpleTextItem(parent), - _max_width(0.0) + m_maxWidth(0.0) { } @@ -44,49 +44,49 @@ ContextLabelItem::~ContextLabelItem() { } -void ContextLabelItem::setMaxWidth(double max_width) +void ContextLabelItem::setMaxWidth(double maxWidth) { - if (_max_width != max_width) { - _max_width = max_width; + if (m_maxWidth != maxWidth) { + m_maxWidth = maxWidth; update(); } } void ContextLabelItem::resetMaxWidth() { - if (_max_width != 0.0) { - _max_width = 0.0; + if (m_maxWidth != 0.0) { + m_maxWidth = 0.0; update(); } } void ContextLabelItem::setContext(const QString &context) { - if (_context != context) { - _context = context; + if (m_context != context) { + m_context = context; update(); } } -double ContextLabelItem::getHeight() const +double ContextLabelItem::height() const { return QFontMetricsF(font()).height(); } void ContextLabelItem::update() { - setText(QString(QStringLiteral("(from %1)")).arg(_context)); - if (_max_width > 0.0) { - double context_width = boundingRect().width(); - if (context_width > _max_width) { - setText(QString(QStringLiteral("(%1)")).arg(_context)); - context_width = boundingRect().width(); + setText(QString(QStringLiteral("(from %1)")).arg(m_context)); + if (m_maxWidth > 0.0) { + double contextWidth = boundingRect().width(); + if (contextWidth > m_maxWidth) { + setText(QString(QStringLiteral("(%1)")).arg(m_context)); + contextWidth = boundingRect().width(); } - if (context_width > _max_width) { + if (contextWidth > m_maxWidth) { QFontMetricsF metrics(font()); - setText(metrics.elidedText(QString(QStringLiteral("(%1)")).arg(_context), Qt::ElideMiddle, _max_width)); + setText(metrics.elidedText(QString(QStringLiteral("(%1)")).arg(m_context), Qt::ElideMiddle, m_maxWidth)); } } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.h index 35be81db59..ee86a9170c 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/contextlabelitem.h @@ -35,36 +35,24 @@ namespace qmt { -class ContextLabelItem : - public QGraphicsSimpleTextItem +class ContextLabelItem : public QGraphicsSimpleTextItem { public: - ContextLabelItem(QGraphicsItem *parent = 0); - ~ContextLabelItem(); -public: - - void setMaxWidth(double max_width); - + void setMaxWidth(double maxWidth); void resetMaxWidth(); - void setContext(const QString &context); - - double getHeight() const; + double height() const; private: - void update(); -private: - - double _max_width; - - QString _context; + double m_maxWidth; + QString m_context; }; -} +} // namespace qmt #endif // QMT_CONTEXTLABELITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.cpp index 4b8d03744a..143fa075e7 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.cpp @@ -40,11 +40,11 @@ namespace qmt { -CustomIconItem::CustomIconItem(DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +CustomIconItem::CustomIconItem(DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsItem(parent), - _diagram_scene_model(diagram_scene_model), - _base_size(20, 20), - _actual_size(20, 20) + m_diagramSceneModel(diagramSceneModel), + m_baseSize(20, 20), + m_actualSize(20, 20) { } @@ -52,51 +52,51 @@ CustomIconItem::~CustomIconItem() { } -void CustomIconItem::setStereotypeIconId(const QString &stereotype_icon_id) +void CustomIconItem::setStereotypeIconId(const QString &stereotypeIconId) { - if (_stereotype_icon_id != stereotype_icon_id) { - _stereotype_icon_id = stereotype_icon_id; - _stereotype_icon = _diagram_scene_model->getStereotypeController()->findStereotypeIcon(_stereotype_icon_id); - _base_size = QSizeF(_stereotype_icon.getWidth(), _stereotype_icon.getHeight()); - _actual_size = _base_size; + if (m_stereotypeIconId != stereotypeIconId) { + m_stereotypeIconId = stereotypeIconId; + m_stereotypeIcon = m_diagramSceneModel->stereotypeController()->findStereotypeIcon(m_stereotypeIconId); + m_baseSize = QSizeF(m_stereotypeIcon.width(), m_stereotypeIcon.height()); + m_actualSize = m_baseSize; } } -void CustomIconItem::setBaseSize(const QSizeF &base_size) +void CustomIconItem::setBaseSize(const QSizeF &baseSize) { - _base_size = base_size; + m_baseSize = baseSize; } -void CustomIconItem::setActualSize(const QSizeF &actual_size) +void CustomIconItem::setActualSize(const QSizeF &actualSize) { - _actual_size = actual_size; + m_actualSize = actualSize; } void CustomIconItem::setBrush(const QBrush &brush) { - _brush = brush; + m_brush = brush; } void CustomIconItem::setPen(const QPen &pen) { - _pen = pen; + m_pen = pen; } -double CustomIconItem::getShapeWidth() const +double CustomIconItem::shapeWidth() const { - return _stereotype_icon.getWidth(); + return m_stereotypeIcon.width(); } -double CustomIconItem::getShapeHeight() const +double CustomIconItem::shapeHeight() const { - return _stereotype_icon.getHeight(); + return m_stereotypeIcon.height(); } QRectF CustomIconItem::boundingRect() const { - ShapeSizeVisitor visitor(QPointF(0.0, 0.0), QSizeF(_stereotype_icon.getWidth(), _stereotype_icon.getHeight()), _base_size, _actual_size); - _stereotype_icon.getIconShape().visitShapes(&visitor); - return visitor.getBoundingRect() | childrenBoundingRect(); + ShapeSizeVisitor visitor(QPointF(0.0, 0.0), QSizeF(m_stereotypeIcon.width(), m_stereotypeIcon.height()), m_baseSize, m_actualSize); + m_stereotypeIcon.iconShape().visitShapes(&visitor); + return visitor.boundingRect() | childrenBoundingRect(); } void CustomIconItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) @@ -105,10 +105,10 @@ void CustomIconItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *op Q_UNUSED(widget); painter->save(); - painter->setBrush(_brush); - painter->setPen(_pen); - ShapePaintVisitor visitor(painter, QPointF(0.0, 0.0), QSizeF(_stereotype_icon.getWidth(), _stereotype_icon.getHeight()), _base_size, _actual_size); - _stereotype_icon.getIconShape().visitShapes(&visitor); + painter->setBrush(m_brush); + painter->setPen(m_pen); + ShapePaintVisitor visitor(painter, QPointF(0.0, 0.0), QSizeF(m_stereotypeIcon.width(), m_stereotypeIcon.height()), m_baseSize, m_actualSize); + m_stereotypeIcon.iconShape().visitShapes(&visitor); //painter->setBrush(Qt::NoBrush); //painter->setPen(Qt::red); //painter->drawRect(boundingRect()); diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.h index 729e156311..5d14bd0f45 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/customiconitem.h @@ -39,61 +39,36 @@ #include <QBrush> #include <QPen> - namespace qmt { class DiagramSceneModel; - -class CustomIconItem : - public QGraphicsItem +class CustomIconItem : public QGraphicsItem { - public: - - CustomIconItem(DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + CustomIconItem(DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent = 0); ~CustomIconItem(); -public: - - void setStereotypeIconId(const QString &stereotype_icon_id); - - void setBaseSize(const QSizeF &base_size); - - void setActualSize(const QSizeF &actual_size); - + void setStereotypeIconId(const QString &stereotypeIconId); + void setBaseSize(const QSizeF &baseSize); + void setActualSize(const QSizeF &actualSize); void setBrush(const QBrush &brush); - void setPen(const QPen &pen); - - StereotypeIcon getStereotypeIcon() const { return _stereotype_icon; } - - double getShapeWidth() const; - - double getShapeHeight() const; - -public: + StereotypeIcon stereotypeIcon() const { return m_stereotypeIcon; } + double shapeWidth() const; + double shapeHeight() const; QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: - - DiagramSceneModel *_diagram_scene_model; - - QString _stereotype_icon_id; - - StereotypeIcon _stereotype_icon; - - QSizeF _base_size; - - QSizeF _actual_size; - - QBrush _brush; - - QPen _pen; + DiagramSceneModel *m_diagramSceneModel; + QString m_stereotypeIconId; + StereotypeIcon m_stereotypeIcon; + QSizeF m_baseSize; + QSizeF m_actualSize; + QBrush m_brush; + QPen m_pen; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.cpp index f8b29141df..462a3ba371 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.cpp @@ -40,119 +40,97 @@ #include <QLineF> #include <QPainter> -//#define DEBUG_PAINT_SHAPE - - namespace qmt { static const double MAX_SELECTION_DISTANCE_FROM_PATH = 4.0; - -class PathSelectionItem::GraphicsHandleItem : - public QGraphicsRectItem +class PathSelectionItem::GraphicsHandleItem : public QGraphicsRectItem { public: - enum Selection { - NOT_SELECTED, - SELECTED, - SECONDARY_SELECTED + NotSelected, + Selected, + SecondarySelected }; -public: - - GraphicsHandleItem(int point_index, PathSelectionItem *parent) + GraphicsHandleItem(int pointIndex, PathSelectionItem *parent) : QGraphicsRectItem(parent), - _owner(parent), - _point_index(point_index), - _selection(NOT_SELECTED) + m_owner(parent), + m_pointIndex(pointIndex), + m_selection(NotSelected) { } -public: - - void setPointSize(const QSizeF &point_size) + void setPointSize(const QSizeF &pointSize) { - if (_point_size != point_size) { - _point_size = point_size; + if (m_pointSize != pointSize) { + m_pointSize = pointSize; update(); } } void setSelection(Selection selection) { - if (_selection != selection) { - _selection = selection; + if (m_selection != selection) { + m_selection = selection; update(); } } protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event) { - _start_pos = mapToScene(event->pos()); - _qualifier = event->modifiers() & Qt::ControlModifier ? DELETE_HANDLE : NONE; - _owner->moveHandle(_point_index, QPointF(0.0, 0.0), PRESS, _qualifier); + m_startPos = mapToScene(event->pos()); + m_qualifier = event->modifiers() & Qt::ControlModifier ? DeleteHandle : None; + m_owner->moveHandle(m_pointIndex, QPointF(0.0, 0.0), Press, m_qualifier); } void mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - QPointF delta = mapToScene(event->pos()) - _start_pos; - _owner->moveHandle(_point_index, delta, MOVE, _qualifier); + QPointF delta = mapToScene(event->pos()) - m_startPos; + m_owner->moveHandle(m_pointIndex, delta, Move, m_qualifier); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - QPointF delta = mapToScene(event->pos()) - _start_pos; - _owner->moveHandle(_point_index, delta, RELEASE, _qualifier); + QPointF delta = mapToScene(event->pos()) - m_startPos; + m_owner->moveHandle(m_pointIndex, delta, Release, m_qualifier); } private: - void update() { prepareGeometryChange(); - setRect(-_point_size.width() / 2.0, -_point_size.height() / 2.0, _point_size.width(), _point_size.height()); - switch (_selection) { - case NOT_SELECTED: + setRect(-m_pointSize.width() / 2.0, -m_pointSize.height() / 2.0, m_pointSize.width(), m_pointSize.height()); + switch (m_selection) { + case NotSelected: setPen(Qt::NoPen); setBrush(Qt::NoBrush); break; - case SELECTED: + case Selected: setPen(QPen(Qt::black)); setBrush(QBrush(Qt::black)); break; - case SECONDARY_SELECTED: + case SecondarySelected: setPen(QPen(Qt::lightGray)); setBrush(Qt::NoBrush); break; } } -private: - - PathSelectionItem *_owner; - - int _point_index; - - QSizeF _point_size; - - Selection _selection; - - QPointF _start_pos; - - PathSelectionItem::HandleQualifier _qualifier; - + PathSelectionItem *m_owner; + int m_pointIndex; + QSizeF m_pointSize; + Selection m_selection; + QPointF m_startPos; + PathSelectionItem::HandleQualifier m_qualifier; }; - - PathSelectionItem::PathSelectionItem(IWindable *windable, QGraphicsItem *parent) : QGraphicsItem(parent), - _windable(windable), - _point_size(QSizeF(8.0, 8.0)), - _secondary_selected(false) + m_windable(windable), + m_pointSize(QSizeF(8.0, 8.0)), + m_isSecondarySelected(false) { } @@ -184,68 +162,65 @@ QPainterPath PathSelectionItem::shape() const { QPainterPath shape; shape.setFillRule(Qt::WindingFill); - foreach (const GraphicsHandleItem *handle, _handles) { + foreach (const GraphicsHandleItem *handle, m_handles) shape.addPath(handle->shape()); - } // TODO duplicate of ArrowItem::GraphicsShaftItem's shape QPolygonF polygon; - for (int i = 0; i < _handles.size(); ++i) { - polygon.append(_handles.at(i)->pos()); - } - QPainterPath polygon_path; - polygon_path.addPolygon(polygon); + for (int i = 0; i < m_handles.size(); ++i) + polygon.append(m_handles.at(i)->pos()); + QPainterPath polygonPath; + polygonPath.addPolygon(polygon); QPainterPathStroker ps; ps.setWidth(16.0); - polygon_path = ps.createStroke(polygon_path); - shape.addPath(polygon_path); + polygonPath = ps.createStroke(polygonPath); + shape.addPath(polygonPath); return shape; } void PathSelectionItem::setPointSize(const QSizeF &size) { - if (size != _point_size) { - _point_size = size; + if (size != m_pointSize) { + m_pointSize = size; update(); } } -QList<QPointF> PathSelectionItem::getPoints() const +QList<QPointF> PathSelectionItem::points() const { QList<QPointF> points; - foreach (GraphicsHandleItem *handle, _handles) { + foreach (GraphicsHandleItem *handle, m_handles) points.append(handle->pos()); - } return points; } void PathSelectionItem::setPoints(const QList<QPointF> &points) { prepareGeometryChange(); - int point_index = 0; + int pointIndex = 0; foreach (const QPointF &point, points) { GraphicsHandleItem *handle; - if (point_index >= _handles.size()) { - handle = new GraphicsHandleItem(point_index, this); - handle->setPointSize(_point_size); - _handles.append(handle); + if (pointIndex >= m_handles.size()) { + handle = new GraphicsHandleItem(pointIndex, this); + handle->setPointSize(m_pointSize); + m_handles.append(handle); } else { - handle = _handles.at(point_index); + handle = m_handles.at(pointIndex); } handle->setPos(point); - ++point_index; + ++pointIndex; } - while (_handles.size() > point_index) { - _handles.last()->scene()->removeItem(_handles.last()); - delete _handles.last(); - _handles.removeLast(); + while (m_handles.size() > pointIndex) { + m_handles.last()->scene()->removeItem(m_handles.last()); + delete m_handles.last(); + m_handles.removeLast(); } update(); } -void PathSelectionItem::setSecondarySelected(bool secondary_selected) +void PathSelectionItem::setSecondarySelected(bool secondarySelected) { - if (_secondary_selected != secondary_selected) { - _secondary_selected = secondary_selected; + if (m_isSecondarySelected != secondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } @@ -253,10 +228,10 @@ void PathSelectionItem::setSecondarySelected(bool secondary_selected) void PathSelectionItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (event->modifiers() & Qt::ShiftModifier) { - for (int i = 0; i < _handles.size() - 1; ++i) { - qreal distance = GeometryUtilities::calcDistancePointToLine(event->pos(), QLineF(_handles.at(i)->pos(), _handles.at(i+1)->pos())); + for (int i = 0; i < m_handles.size() - 1; ++i) { + qreal distance = GeometryUtilities::calcDistancePointToLine(event->pos(), QLineF(m_handles.at(i)->pos(), m_handles.at(i+1)->pos())); if (distance < MAX_SELECTION_DISTANCE_FROM_PATH) { - _windable->insertHandle(i + 1, event->scenePos()); + m_windable->insertHandle(i + 1, event->scenePos()); event->accept(); return; } @@ -270,39 +245,34 @@ void PathSelectionItem::update() { prepareGeometryChange(); int i = 0; - foreach (GraphicsHandleItem *handle, _handles) { - handle->setPointSize(_point_size); - bool is_end_point = (i == 0 || i == _handles.size() - 1); - handle->setSelection(_secondary_selected - ? (is_end_point ? GraphicsHandleItem::NOT_SELECTED : GraphicsHandleItem::SECONDARY_SELECTED) - : GraphicsHandleItem::SELECTED); + foreach (GraphicsHandleItem *handle, m_handles) { + handle->setPointSize(m_pointSize); + bool isEndPoint = (i == 0 || i == m_handles.size() - 1); + handle->setSelection(m_isSecondarySelected + ? (isEndPoint ? GraphicsHandleItem::NotSelected : GraphicsHandleItem::SecondarySelected) + : GraphicsHandleItem::Selected); ++i; } } -void PathSelectionItem::moveHandle(int point_index, const QPointF &delta_move, HandleStatus handle_status, HandleQualifier handle_qualifier) +void PathSelectionItem::moveHandle(int pointIndex, const QPointF &deltaMove, HandleStatus handleStatus, HandleQualifier handleQualifier) { - Q_UNUSED(handle_status); - - switch (handle_qualifier) { - case NONE: + switch (handleQualifier) { + case None: { - if (handle_status == PRESS) { - _original_handle_pos = _windable->getHandlePos(point_index); - } - QPointF new_pos = _original_handle_pos + delta_move; - _windable->setHandlePos(point_index, new_pos); - if (handle_status == RELEASE) { - _windable->alignHandleToRaster(point_index, RASTER_WIDTH, RASTER_HEIGHT); - } + if (handleStatus == Press) + m_originalHandlePos = m_windable->handlePos(pointIndex); + QPointF newPos = m_originalHandlePos + deltaMove; + m_windable->setHandlePos(pointIndex, newPos); + if (handleStatus == Release) + m_windable->alignHandleToRaster(pointIndex, RASTER_WIDTH, RASTER_HEIGHT); break; } - case DELETE_HANDLE: - if (handle_status == PRESS) { - _windable->deleteHandle(point_index); - } + case DeleteHandle: + if (handleStatus == Press) + m_windable->deleteHandle(pointIndex); break; } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.h index fc2c5e086f..02799871ba 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/pathselectionitem.h @@ -33,79 +33,56 @@ #include <QGraphicsItem> - namespace qmt { class IWindable; -class PathSelectionItem : - public QGraphicsItem +class PathSelectionItem : public QGraphicsItem { class GraphicsHandleItem; - friend class GraphicsHandleItem; enum HandleStatus { - PRESS, - MOVE, - RELEASE, - CANCEL + Press, + Move, + Release, + Cancel }; enum HandleQualifier { - NONE, - DELETE_HANDLE + None, + DeleteHandle }; public: - PathSelectionItem(IWindable *windable, QGraphicsItem *parent = 0); - ~PathSelectionItem(); -public: - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - QPainterPath shape() const; -public: - - QSizeF getPointSize() const { return _point_size; } - + QSizeF pointSize() const { return m_pointSize; } void setPointSize(const QSizeF &size); - - QList<QPointF> getPoints() const; - + QList<QPointF> points() const; void setPoints(const QList<QPointF> &points); - - void setSecondarySelected(bool secondary_selected); + void setSecondarySelected(bool secondarySelected); protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); private: - void update(); - - void moveHandle(int point_index, const QPointF &delta_move, HandleStatus handle_status, HandleQualifier handle_qualifier); - -private: - - IWindable *_windable; - - QSizeF _point_size; - - bool _secondary_selected; - - QList<GraphicsHandleItem *> _handles; - - QPointF _original_handle_pos; + void moveHandle(int pointIndex, const QPointF &deltaMove, HandleStatus handleStatus, + HandleQualifier handleQualifier); + + IWindable *m_windable; + QSizeF m_pointSize; + bool m_isSecondarySelected; + QList<GraphicsHandleItem *> m_handles; + QPointF m_originalHandlePos; }; -} +} // namespace qmt #endif // QMT_GRAPHICSPATHSELECTIONITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.cpp index 2960a29e97..2beb8adf0b 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.cpp @@ -40,32 +40,28 @@ #include <QPen> #include <qmath.h> - namespace qmt { -class RectangularSelectionItem::GraphicsHandleItem : - public QGraphicsRectItem +class RectangularSelectionItem::GraphicsHandleItem : public QGraphicsRectItem { public: - GraphicsHandleItem(Handle handle, RectangularSelectionItem *parent) : QGraphicsRectItem(parent), - _owner(parent), - _handle(handle), - _secondary_selected(false) + m_owner(parent), + m_handle(handle), + m_isSecondarySelected(false) { setPen(QPen(Qt::black)); setBrush(QBrush(Qt::black)); } - void setSecondarySelected(bool secondary_selected) + void setSecondarySelected(bool secondarySelected) { - if (secondary_selected != _secondary_selected) { - _secondary_selected = secondary_selected; - if (secondary_selected) { + if (secondarySelected != m_isSecondarySelected) { + m_isSecondarySelected = secondarySelected; + if (secondarySelected) { setPen(QPen(Qt::lightGray)); setBrush(Qt::NoBrush); - } else { setPen(QPen(Qt::black)); setBrush(QBrush(Qt::black)); @@ -74,53 +70,43 @@ public: } protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event) { - _start_pos = mapToScene(event->pos()); - if (!_secondary_selected) { - _owner->moveHandle(_handle, QPointF(0.0, 0.0), PRESS, NONE); - } + m_startPos = mapToScene(event->pos()); + if (!m_isSecondarySelected) + m_owner->moveHandle(m_handle, QPointF(0.0, 0.0), Press, None); } void mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - QPointF pos = mapToScene(event->pos()) - _start_pos; - if (!_secondary_selected) { - _owner->moveHandle(_handle, pos, MOVE, NONE); - } - + QPointF pos = mapToScene(event->pos()) - m_startPos; + if (!m_isSecondarySelected) + m_owner->moveHandle(m_handle, pos, Move, None); } void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - QPointF pos = mapToScene(event->pos()) - _start_pos; - if (!_secondary_selected) { - _owner->moveHandle(_handle, pos, RELEASE, NONE); - } + QPointF pos = mapToScene(event->pos()) - m_startPos; + if (!m_isSecondarySelected) + m_owner->moveHandle(m_handle, pos, Release, None); } private: - - RectangularSelectionItem *_owner; - - Handle _handle; - - bool _secondary_selected; - - QPointF _start_pos; + RectangularSelectionItem *m_owner; + Handle m_handle; + bool m_isSecondarySelected; + QPointF m_startPos; }; - -RectangularSelectionItem::RectangularSelectionItem(IResizable *item_resizer, QGraphicsItem *parent) +RectangularSelectionItem::RectangularSelectionItem(IResizable *itemResizer, QGraphicsItem *parent) : QGraphicsItem(parent), - _item_resizer(item_resizer), - _point_size(QSizeF(9.0, 9.0)), - _points(8), - _show_border(false), - _border_item(0), - _freedom(FREEDOM_ANY), - _secondary_selected(false) + m_itemResizer(itemResizer), + m_pointSize(QSizeF(9.0, 9.0)), + m_points(8), + m_showBorder(false), + m_borderItem(0), + m_freedom(FreedomAny), + m_isSecondarySelected(false) { } @@ -142,8 +128,8 @@ void RectangularSelectionItem::paint(QPainter *painter, const QStyleOptionGraphi void RectangularSelectionItem::setRect(const QRectF &rectangle) { - if (rectangle != _rect) { - _rect = rectangle; + if (rectangle != m_rect) { + m_rect = rectangle; update(); } } @@ -155,311 +141,299 @@ void RectangularSelectionItem::setRect(qreal x, qreal y, qreal width, qreal heig void RectangularSelectionItem::setPointSize(const QSizeF &size) { - if (size != _point_size) { - _point_size = size; + if (size != m_pointSize) { + m_pointSize = size; update(); } } -void RectangularSelectionItem::setShowBorder(bool show_border) +void RectangularSelectionItem::setShowBorder(bool showBorder) { - _show_border = show_border; + m_showBorder = showBorder; } void RectangularSelectionItem::setFreedom(Freedom freedom) { - _freedom = freedom; + m_freedom = freedom; } -void RectangularSelectionItem::setSecondarySelected(bool secondary_selected) +void RectangularSelectionItem::setSecondarySelected(bool secondarySelected) { - if (secondary_selected != _secondary_selected) { - _secondary_selected = secondary_selected; + if (secondarySelected != m_isSecondarySelected) { + m_isSecondarySelected = secondarySelected; update(); } } void RectangularSelectionItem::update() { - QMT_CHECK(HANDLE_FIRST == 0 && HANDLE_LAST == 7); + QMT_CHECK(HandleFirst == 0 && HandleLast == 7); prepareGeometryChange(); for (int i = 0; i <= 7; ++i) { - if (!_points[i]) { - _points[i] = new GraphicsHandleItem((Handle) i, this); - } - _points[i]->setRect(-_point_size.width() / 2.0, -_point_size.height() / 2.0, _point_size.width(), _point_size.height()); + if (!m_points[i]) + m_points[i] = new GraphicsHandleItem((Handle) i, this); + m_points[i]->setRect(-m_pointSize.width() / 2.0, -m_pointSize.height() / 2.0, m_pointSize.width(), m_pointSize.height()); bool visible = false; switch ((Handle) i) { - case HANDLE_TOP_LEFT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleTopLeft: + visible = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_TOP: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_VERTICAL_ONLY; + case HandleTop: + visible = m_freedom == FreedomAny || m_freedom == FreedomVerticalOnly; break; - case HANDLE_TOP_RIGHT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleTopRight: + visible = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_LEFT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_HORIZONTAL_ONLY; + case HandleLeft: + visible = m_freedom == FreedomAny || m_freedom == FreedomHorizontalOnly; break; - case HANDLE_RIGHT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_HORIZONTAL_ONLY; + case HandleRight: + visible = m_freedom == FreedomAny || m_freedom == FreedomHorizontalOnly; break; - case HANDLE_BOTTOM_LEFT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleBottomLeft: + visible = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_BOTTOM: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_VERTICAL_ONLY; + case HandleBottom: + visible = m_freedom == FreedomAny || m_freedom == FreedomVerticalOnly; break; - case HANDLE_BOTTOM_RIGHT: - visible = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleBottomRight: + visible = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; } - _points[i]->setSecondarySelected(_secondary_selected); - _points[i]->setVisible(visible); + m_points[i]->setSecondarySelected(m_isSecondarySelected); + m_points[i]->setVisible(visible); } - double horiz_center = (_rect.left() + _rect.right()) * 0.5; - double vert_center = (_rect.top() + _rect.bottom()) * 0.5; - _points[0]->setPos(pos() + _rect.topLeft()); - _points[1]->setPos(pos() + QPointF(horiz_center, _rect.top())); - _points[2]->setPos(pos() + _rect.topRight()); - _points[3]->setPos(pos() + QPointF(_rect.left(), vert_center)); - _points[4]->setPos(pos() + QPointF(_rect.right(), vert_center)); - _points[5]->setPos(pos() + _rect.bottomLeft()); - _points[6]->setPos(pos() + QPointF(horiz_center, _rect.bottom())); - _points[7]->setPos(pos() + _rect.bottomRight()); - - if (_show_border) { - if (!_border_item) { - _border_item = new QGraphicsRectItem(this); - } - _border_item->setRect(_rect); - if (_secondary_selected) { - _border_item->setPen(QPen(QBrush(Qt::lightGray), 0.0, Qt::DashDotLine)); - } else { - _border_item->setPen(QPen(QBrush(Qt::black), 0.0, Qt::DashDotLine)); - } - } else if (_border_item) { - if (_border_item->scene()) { - _border_item->scene()->removeItem(_border_item); - } - delete _border_item; - _border_item = 0; + double horizCenter = (m_rect.left() + m_rect.right()) * 0.5; + double vertCenter = (m_rect.top() + m_rect.bottom()) * 0.5; + m_points[0]->setPos(pos() + m_rect.topLeft()); + m_points[1]->setPos(pos() + QPointF(horizCenter, m_rect.top())); + m_points[2]->setPos(pos() + m_rect.topRight()); + m_points[3]->setPos(pos() + QPointF(m_rect.left(), vertCenter)); + m_points[4]->setPos(pos() + QPointF(m_rect.right(), vertCenter)); + m_points[5]->setPos(pos() + m_rect.bottomLeft()); + m_points[6]->setPos(pos() + QPointF(horizCenter, m_rect.bottom())); + m_points[7]->setPos(pos() + m_rect.bottomRight()); + + if (m_showBorder) { + if (!m_borderItem) + m_borderItem = new QGraphicsRectItem(this); + m_borderItem->setRect(m_rect); + if (m_isSecondarySelected) + m_borderItem->setPen(QPen(QBrush(Qt::lightGray), 0.0, Qt::DashDotLine)); + else + m_borderItem->setPen(QPen(QBrush(Qt::black), 0.0, Qt::DashDotLine)); + } else if (m_borderItem) { + if (m_borderItem->scene()) + m_borderItem->scene()->removeItem(m_borderItem); + delete m_borderItem; + m_borderItem = 0; } } -void RectangularSelectionItem::moveHandle(Handle handle, const QPointF &delta_move, HandleStatus handle_status, HandleQualifier handle_qualifier) +void RectangularSelectionItem::moveHandle(Handle handle, const QPointF &deltaMove, HandleStatus handleStatus, HandleQualifier handleQualifier) { - Q_UNUSED(handle_qualifier); + Q_UNUSED(handleQualifier); - if (handle_status == PRESS) { - _original_resize_pos = _item_resizer->getPos(); - _original_resize_rect = _item_resizer->getRect(); + if (handleStatus == Press) { + m_originalResizePos = m_itemResizer->pos(); + m_originalResizeRect = m_itemResizer->rect(); } bool moveable = false; switch (handle) { - case HANDLE_TOP_LEFT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleTopLeft: + moveable = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_TOP: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_VERTICAL_ONLY; + case HandleTop: + moveable = m_freedom == FreedomAny || m_freedom == FreedomVerticalOnly; break; - case HANDLE_TOP_RIGHT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleTopRight: + moveable = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_LEFT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_HORIZONTAL_ONLY; + case HandleLeft: + moveable = m_freedom == FreedomAny || m_freedom == FreedomHorizontalOnly; break; - case HANDLE_RIGHT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_HORIZONTAL_ONLY; + case HandleRight: + moveable = m_freedom == FreedomAny || m_freedom == FreedomHorizontalOnly; break; - case HANDLE_BOTTOM_LEFT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleBottomLeft: + moveable = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; - case HANDLE_BOTTOM: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_VERTICAL_ONLY; + case HandleBottom: + moveable = m_freedom == FreedomAny || m_freedom == FreedomVerticalOnly; break; - case HANDLE_BOTTOM_RIGHT: - moveable = _freedom == FREEDOM_ANY || _freedom == FREEDOM_KEEP_RATIO; + case HandleBottomRight: + moveable = m_freedom == FreedomAny || m_freedom == FreedomKeepRatio; break; } - if (!moveable) { + if (!moveable) return; - } - - QSizeF minimum_size = _item_resizer->getMinimumSize(); - QPointF top_left_delta; - QPointF bottom_right_delta; + QSizeF minimumSize = m_itemResizer->minimumSize(); + QPointF topLeftDelta; + QPointF bottomRightDelta; // calculate movements of corners - if (_freedom == FREEDOM_KEEP_RATIO) { - qreal minimum_length = qSqrt(minimum_size.width() * minimum_size.width() + minimum_size.height() * minimum_size.height()); - QPointF v(minimum_size.width() / minimum_length, minimum_size.height() / minimum_length); - qreal delta_length = qSqrt(delta_move.x() * delta_move.x() + delta_move.y() * delta_move.y()); + if (m_freedom == FreedomKeepRatio) { + qreal minimumLength = qSqrt(minimumSize.width() * minimumSize.width() + minimumSize.height() * minimumSize.height()); + QPointF v(minimumSize.width() / minimumLength, minimumSize.height() / minimumLength); + qreal deltaLength = qSqrt(deltaMove.x() * deltaMove.x() + deltaMove.y() * deltaMove.y()); switch (handle) { - case HANDLE_TOP_LEFT: - if (delta_move.x() > 0 && delta_move.y() > 0) { - top_left_delta = v * delta_length; - } else if (delta_move.x() < 0 && delta_move.y() < 0) { - top_left_delta = -(v * delta_length); - } + case HandleTopLeft: + if (deltaMove.x() > 0 && deltaMove.y() > 0) + topLeftDelta = v * deltaLength; + else if (deltaMove.x() < 0 && deltaMove.y() < 0) + topLeftDelta = -(v * deltaLength); break; - case HANDLE_TOP: + case HandleTop: QMT_CHECK(false); break; - case HANDLE_TOP_RIGHT: - if (delta_move.x() > 0 && delta_move.y() < 0) { - top_left_delta = QPointF(0.0, -(v.x() * delta_length)); - bottom_right_delta = QPointF(v.y() * delta_length, 0.0); - } else if (delta_move.x() < 0 && delta_move.y() > 0) { - top_left_delta = QPointF(0.0, v.x() * delta_length); - bottom_right_delta = QPointF(-(v.y() * delta_length), 0.0); + case HandleTopRight: + if (deltaMove.x() > 0 && deltaMove.y() < 0) { + topLeftDelta = QPointF(0.0, -(v.x() * deltaLength)); + bottomRightDelta = QPointF(v.y() * deltaLength, 0.0); + } else if (deltaMove.x() < 0 && deltaMove.y() > 0) { + topLeftDelta = QPointF(0.0, v.x() * deltaLength); + bottomRightDelta = QPointF(-(v.y() * deltaLength), 0.0); } break; - case HANDLE_LEFT: + case HandleLeft: QMT_CHECK(false); break; - case HANDLE_RIGHT: + case HandleRight: QMT_CHECK(false); break; - case HANDLE_BOTTOM_LEFT: - if (delta_move.x() < 0 && delta_move.y() > 0) { - top_left_delta = QPointF(-(v.x() * delta_length), 0.0); - bottom_right_delta = QPointF(0.0, v.y() * delta_length); - } else if (delta_move.x() > 0 && delta_move.y() < 0) { - top_left_delta = QPointF(v.x() * delta_length, 0.0); - bottom_right_delta = QPointF(0.0, -(v.y() * delta_length)); + case HandleBottomLeft: + if (deltaMove.x() < 0 && deltaMove.y() > 0) { + topLeftDelta = QPointF(-(v.x() * deltaLength), 0.0); + bottomRightDelta = QPointF(0.0, v.y() * deltaLength); + } else if (deltaMove.x() > 0 && deltaMove.y() < 0) { + topLeftDelta = QPointF(v.x() * deltaLength, 0.0); + bottomRightDelta = QPointF(0.0, -(v.y() * deltaLength)); } break; - case HANDLE_BOTTOM: + case HandleBottom: QMT_CHECK(false); break; - case HANDLE_BOTTOM_RIGHT: - if (delta_move.x() > 0 && delta_move.y() > 0) { - bottom_right_delta = v * delta_length; - } else if (delta_move.x() < 0 && delta_move.y() < 0) { - bottom_right_delta = -(v * delta_length); - } + case HandleBottomRight: + if (deltaMove.x() > 0 && deltaMove.y() > 0) + bottomRightDelta = v * deltaLength; + else if (deltaMove.x() < 0 && deltaMove.y() < 0) + bottomRightDelta = -(v * deltaLength); break; } } else { switch (handle) { - case HANDLE_TOP_LEFT: - top_left_delta = delta_move; + case HandleTopLeft: + topLeftDelta = deltaMove; break; - case HANDLE_TOP: - top_left_delta = QPointF(0.0, delta_move.y()); + case HandleTop: + topLeftDelta = QPointF(0.0, deltaMove.y()); break; - case HANDLE_TOP_RIGHT: - top_left_delta = QPointF(0, delta_move.y()); - bottom_right_delta = QPointF(delta_move.x(), 0.0); + case HandleTopRight: + topLeftDelta = QPointF(0, deltaMove.y()); + bottomRightDelta = QPointF(deltaMove.x(), 0.0); break; - case HANDLE_LEFT: - top_left_delta = QPointF(delta_move.x(), 0.0); + case HandleLeft: + topLeftDelta = QPointF(deltaMove.x(), 0.0); break; - case HANDLE_RIGHT: - bottom_right_delta = QPointF(delta_move.x(), 0.0); + case HandleRight: + bottomRightDelta = QPointF(deltaMove.x(), 0.0); break; - case HANDLE_BOTTOM_LEFT: - top_left_delta = QPointF(delta_move.x(), 0.0); - bottom_right_delta = QPointF(0.0, delta_move.y()); + case HandleBottomLeft: + topLeftDelta = QPointF(deltaMove.x(), 0.0); + bottomRightDelta = QPointF(0.0, deltaMove.y()); break; - case HANDLE_BOTTOM: - bottom_right_delta = QPointF(0.0, delta_move.y()); + case HandleBottom: + bottomRightDelta = QPointF(0.0, deltaMove.y()); break; - case HANDLE_BOTTOM_RIGHT: - bottom_right_delta = delta_move; + case HandleBottomRight: + bottomRightDelta = deltaMove; break; } } - QRectF new_rect = _original_resize_rect.adjusted(top_left_delta.x(), top_left_delta.y(), bottom_right_delta.x(), bottom_right_delta.y()); - QSizeF size_delta = minimum_size - new_rect.size(); + QRectF newRect = m_originalResizeRect.adjusted(topLeftDelta.x(), topLeftDelta.y(), bottomRightDelta.x(), bottomRightDelta.y()); + QSizeF sizeDelta = minimumSize - newRect.size(); // correct horizontal resize against minimum width switch (handle) { - case HANDLE_TOP_LEFT: - case HANDLE_LEFT: - case HANDLE_BOTTOM_LEFT: - if (size_delta.width() > 0.0) { - top_left_delta.setX(top_left_delta.x() - size_delta.width()); - } + case HandleTopLeft: + case HandleLeft: + case HandleBottomLeft: + if (sizeDelta.width() > 0.0) + topLeftDelta.setX(topLeftDelta.x() - sizeDelta.width()); break; - case HANDLE_TOP: - case HANDLE_BOTTOM: + case HandleTop: + case HandleBottom: break; - case HANDLE_TOP_RIGHT: - case HANDLE_RIGHT: - case HANDLE_BOTTOM_RIGHT: - if (size_delta.width() > 0.0) { - bottom_right_delta.setX(bottom_right_delta.x() + size_delta.width()); - } + case HandleTopRight: + case HandleRight: + case HandleBottomRight: + if (sizeDelta.width() > 0.0) + bottomRightDelta.setX(bottomRightDelta.x() + sizeDelta.width()); break; } // correct vertical resize against minimum height switch (handle) { - case HANDLE_TOP_LEFT: - case HANDLE_TOP: - case HANDLE_TOP_RIGHT: - if (size_delta.height() > 0.0) { - top_left_delta.setY(top_left_delta.y() - size_delta.height()); - } + case HandleTopLeft: + case HandleTop: + case HandleTopRight: + if (sizeDelta.height() > 0.0) + topLeftDelta.setY(topLeftDelta.y() - sizeDelta.height()); break; - case HANDLE_LEFT: - case HANDLE_RIGHT: + case HandleLeft: + case HandleRight: break; - case HANDLE_BOTTOM_LEFT: - case HANDLE_BOTTOM: - case HANDLE_BOTTOM_RIGHT: - if (size_delta.height() > 0.0) { - bottom_right_delta.setY(bottom_right_delta.y() + size_delta.height()); - } + case HandleBottomLeft: + case HandleBottom: + case HandleBottomRight: + if (sizeDelta.height() > 0.0) + bottomRightDelta.setY(bottomRightDelta.y() + sizeDelta.height()); break; } - _item_resizer->setPosAndRect(_original_resize_pos, _original_resize_rect, top_left_delta, bottom_right_delta); + m_itemResizer->setPosAndRect(m_originalResizePos, m_originalResizeRect, topLeftDelta, bottomRightDelta); - if (handle_status == RELEASE) { - IResizable::Side horiz = IResizable::SIDE_NONE; - IResizable::Side vert = IResizable::SIDE_NONE; + if (handleStatus == Release) { + IResizable::Side horiz = IResizable::SideNone; + IResizable::Side vert = IResizable::SideNone; switch (handle) { - case HANDLE_TOP_LEFT: - case HANDLE_LEFT: - case HANDLE_BOTTOM_LEFT: - horiz = IResizable::SIDE_LEFT_OR_TOP; + case HandleTopLeft: + case HandleLeft: + case HandleBottomLeft: + horiz = IResizable::SideLeftOrTop; break; - case HANDLE_TOP_RIGHT: - case HANDLE_RIGHT: - case HANDLE_BOTTOM_RIGHT: - horiz = IResizable::SIDE_RIGHT_OR_BOTTOM; + case HandleTopRight: + case HandleRight: + case HandleBottomRight: + horiz = IResizable::SideRightOrBottom; break; - case HANDLE_TOP: - case HANDLE_BOTTOM: + case HandleTop: + case HandleBottom: // nothing break; } switch (handle) { - case HANDLE_TOP_LEFT: - case HANDLE_TOP: - case HANDLE_TOP_RIGHT: - vert = IResizable::SIDE_LEFT_OR_TOP; + case HandleTopLeft: + case HandleTop: + case HandleTopRight: + vert = IResizable::SideLeftOrTop; break; - case HANDLE_BOTTOM_LEFT: - case HANDLE_BOTTOM: - case HANDLE_BOTTOM_RIGHT: - vert = IResizable::SIDE_RIGHT_OR_BOTTOM; + case HandleBottomLeft: + case HandleBottom: + case HandleBottomRight: + vert = IResizable::SideRightOrBottom; break; - case HANDLE_LEFT: - case HANDLE_RIGHT: + case HandleLeft: + case HandleRight: // nothing break; } - _item_resizer->alignItemSizeToRaster(horiz, vert, 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); + m_itemResizer->alignItemSizeToRaster(horiz, vert, 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.h index d17fd255ed..a9c5ef30de 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/rectangularselectionitem.h @@ -38,117 +38,83 @@ QT_BEGIN_NAMESPACE class QGraphicsRectItem; QT_END_NAMESPACE - namespace qmt { class IResizable; -class RectangularSelectionItem : - public QGraphicsItem +class RectangularSelectionItem : public QGraphicsItem { class GraphicsHandleItem; - friend class GraphicsHandleItem; enum Handle { - HANDLE_FIRST = 0, - HANDLE_TOP_LEFT = HANDLE_FIRST, - HANDLE_TOP, - HANDLE_TOP_RIGHT, - HANDLE_LEFT, - HANDLE_RIGHT, - HANDLE_BOTTOM_LEFT, - HANDLE_BOTTOM, - HANDLE_BOTTOM_RIGHT, - HANDLE_LAST = HANDLE_BOTTOM_RIGHT + HandleFirst = 0, + HandleTopLeft = HandleFirst, + HandleTop, + HandleTopRight, + HandleLeft, + HandleRight, + HandleBottomLeft, + HandleBottom, + HandleBottomRight, + HandleLast = HandleBottomRight }; enum HandleStatus { - PRESS, - MOVE, - RELEASE, - CANCEL + Press, + Move, + Release, + Cancel }; enum HandleQualifier { - NONE, - KEEP_POS + None, + KeepPos }; public: - enum Freedom { - FREEDOM_ANY, - FREEDOM_VERTICAL_ONLY, - FREEDOM_HORIZONTAL_ONLY, - FREEDOM_KEEP_RATIO + FreedomAny, + FreedomVerticalOnly, + FreedomHorizontalOnly, + FreedomKeepRatio }; -public: - - RectangularSelectionItem(IResizable *item_resizer, QGraphicsItem *parent = 0); - + RectangularSelectionItem(IResizable *itemResizer, QGraphicsItem *parent = 0); ~RectangularSelectionItem(); -public: - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); -public: - - QRectF getRect() const { return _rect; } - + QRectF rect() const { return m_rect; } void setRect(const QRectF &rectangle); - void setRect(qreal x, qreal y, qreal width, qreal height); - - QSizeF getPointSize() const { return _point_size; } - + QSizeF pointSize() const { return m_pointSize; } void setPointSize(const QSizeF &size); - - bool getShowBorder() const { return _show_border; } - - void setShowBorder(bool show_border); - - Freedom getFreedom() const { return _freedom; } - + bool showBorder() const { return m_showBorder; } + void setShowBorder(bool showBorder); + Freedom freedom() const { return m_freedom; } void setFreedom(Freedom freedom); - - bool isSecondarySelected() const { return _secondary_selected; } - - void setSecondarySelected(bool secondary_selected); + bool isSecondarySelected() const { return m_isSecondarySelected; } + void setSecondarySelected(bool secondarySelected); private: - void update(); - - void moveHandle(Handle handle, const QPointF &delta_move, HandleStatus handle_status, HandleQualifier handle_qualifier); - -private: - - IResizable *_item_resizer; - - QRectF _rect; - - QSizeF _point_size; - - QVector<GraphicsHandleItem *> _points; - - QPointF _original_resize_pos; - - QRectF _original_resize_rect; - - bool _show_border; - - QGraphicsRectItem *_border_item; - - Freedom _freedom; - - bool _secondary_selected; + void moveHandle(Handle handle, const QPointF &deltaMove, HandleStatus handleStatus, + HandleQualifier handleQualifier); + + IResizable *m_itemResizer; + QRectF m_rect; + QSizeF m_pointSize; + QVector<GraphicsHandleItem *> m_points; + QPointF m_originalResizePos; + QRectF m_originalResizeRect; + bool m_showBorder; + QGraphicsRectItem *m_borderItem; + Freedom m_freedom; + bool m_isSecondarySelected; }; -} +} // namespace qmt #endif // QMT_RECTENGULARSELECTIONITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.cpp index e735108d2a..15f58e97f1 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.cpp @@ -45,11 +45,11 @@ namespace qmt { -RelationStarter::RelationStarter(IRelationable *owner, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent) +RelationStarter::RelationStarter(IRelationable *owner, DiagramSceneModel *diagramSceneModel, QGraphicsItem *parent) : QGraphicsRectItem(parent), - _owner(owner), - _diagram_scene_model(diagram_scene_model), - _current_preview_arrow(0) + m_owner(owner), + m_diagramSceneModel(diagramSceneModel), + m_currentPreviewArrow(0) { setBrush(QBrush(QColor(192, 192, 192))); setPen(QPen(QColor(64, 64, 64))); @@ -78,7 +78,8 @@ void RelationStarter::paint(QPainter *painter, const QStyleOptionGraphicsItem *o painter->restore(); } -void RelationStarter::addArrow(const QString &id, ArrowItem::Shaft shaft, ArrowItem::Head end_head, ArrowItem::Head start_head) +void RelationStarter::addArrow(const QString &id, ArrowItem::Shaft shaft, + ArrowItem::Head endHead, ArrowItem::Head startHead) { QMT_CHECK(!id.isEmpty()); prepareGeometryChange(); @@ -86,30 +87,30 @@ void RelationStarter::addArrow(const QString &id, ArrowItem::Shaft shaft, ArrowI arrow->setArrowSize(10.0); arrow->setDiamondSize(15.0); arrow->setShaft(shaft); - arrow->setStartHead(start_head); - arrow->setEndHead(end_head); + arrow->setStartHead(startHead); + arrow->setEndHead(endHead); arrow->setPoints(QList<QPointF>() << QPointF(0.0, 10.0) << QPointF(15.0, 0.0)); - arrow->setPos(6.0, _arrows.size() * 20.0 + 8.0); - arrow->update(_diagram_scene_model->getStyleController()->getRelationStarterStyle()); - _arrows.append(arrow); - _arrow_ids.insert(arrow, id); - setRect(0.0, 0.0, 26.0, _arrows.size() * 20.0 + 6.0); + arrow->setPos(6.0, m_arrows.size() * 20.0 + 8.0); + arrow->update(m_diagramSceneModel->styleController()->relationStarterStyle()); + m_arrows.append(arrow); + m_arrowIds.insert(arrow, id); + setRect(0.0, 0.0, 26.0, m_arrows.size() * 20.0 + 6.0); } void RelationStarter::mousePressEvent(QGraphicsSceneMouseEvent *event) { - _current_preview_arrow = 0; - foreach (ArrowItem *item, _arrows) { + m_currentPreviewArrow = 0; + foreach (ArrowItem *item, m_arrows) { if (item->boundingRect().contains(mapToItem(item, event->pos()))) { prepareGeometryChange(); - _current_preview_arrow_intermediate_points.clear(); - _current_preview_arrow_id = _arrow_ids.value(item); - QMT_CHECK(!_current_preview_arrow_id.isEmpty()); - _current_preview_arrow = new ArrowItem(*item); - _current_preview_arrow->setPoints(QList<QPointF>() << _owner->getRelationStartPos() << mapToScene(event->pos())); - _current_preview_arrow->update(_diagram_scene_model->getStyleController()->getRelationStarterStyle()); - _current_preview_arrow->setZValue(PREVIEW_RELATION_ZVALUE); - scene()->addItem(_current_preview_arrow); + m_currentPreviewArrowIntermediatePoints.clear(); + m_currentPreviewArrowId = m_arrowIds.value(item); + QMT_CHECK(!m_currentPreviewArrowId.isEmpty()); + m_currentPreviewArrow = new ArrowItem(*item); + m_currentPreviewArrow->setPoints(QList<QPointF>() << m_owner->relationStartPos() << mapToScene(event->pos())); + m_currentPreviewArrow->update(m_diagramSceneModel->styleController()->relationStarterStyle()); + m_currentPreviewArrow->setZValue(PREVIEW_RELATION_ZVALUE); + scene()->addItem(m_currentPreviewArrow); setFocus(); // receive keyboard events break; } @@ -118,48 +119,47 @@ void RelationStarter::mousePressEvent(QGraphicsSceneMouseEvent *event) void RelationStarter::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (!_current_preview_arrow) { + if (!m_currentPreviewArrow) return; - } updateCurrentPreviewArrow(mapToScene(event->pos())); } void RelationStarter::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - if (_current_preview_arrow) { - _owner->relationDrawn(_current_preview_arrow_id, mapToScene(event->pos()), _current_preview_arrow_intermediate_points); - _current_preview_arrow->scene()->removeItem(_current_preview_arrow); - delete _current_preview_arrow; - _current_preview_arrow = 0; - _current_preview_arrow_intermediate_points.clear(); + if (m_currentPreviewArrow) { + m_owner->relationDrawn(m_currentPreviewArrowId, mapToScene(event->pos()), + m_currentPreviewArrowIntermediatePoints); + m_currentPreviewArrow->scene()->removeItem(m_currentPreviewArrow); + delete m_currentPreviewArrow; + m_currentPreviewArrow = 0; + m_currentPreviewArrowIntermediatePoints.clear(); } } void RelationStarter::keyPressEvent(QKeyEvent *event) { - if (!_current_preview_arrow) { + if (!m_currentPreviewArrow) return; - } if (event->key() == Qt::Key_Shift) { - QPointF p = _current_preview_arrow->getLastLineSegment().p1(); - if (_current_preview_arrow_intermediate_points.isEmpty() || _current_preview_arrow_intermediate_points.last() != p) { - _current_preview_arrow_intermediate_points.append(p); + QPointF p = m_currentPreviewArrow->lastLineSegment().p1(); + if (m_currentPreviewArrowIntermediatePoints.isEmpty() || m_currentPreviewArrowIntermediatePoints.last() != p) { + m_currentPreviewArrowIntermediatePoints.append(p); // Do not update the preview arrow here because last two points are now identical which looks wired } } else if (event->key() == Qt::Key_Control) { - if (!_current_preview_arrow_intermediate_points.isEmpty()) { - _current_preview_arrow_intermediate_points.removeLast(); - updateCurrentPreviewArrow(_current_preview_arrow->getLastLineSegment().p1()); + if (!m_currentPreviewArrowIntermediatePoints.isEmpty()) { + m_currentPreviewArrowIntermediatePoints.removeLast(); + updateCurrentPreviewArrow(m_currentPreviewArrow->lastLineSegment().p1()); } } } -void RelationStarter::updateCurrentPreviewArrow(const QPointF &head_point) +void RelationStarter::updateCurrentPreviewArrow(const QPointF &headPoint) { prepareGeometryChange(); - _current_preview_arrow->setPoints(QList<QPointF>() << _owner->getRelationStartPos() - << _current_preview_arrow_intermediate_points << head_point); - _current_preview_arrow->update(_diagram_scene_model->getStyleController()->getRelationStarterStyle()); + m_currentPreviewArrow->setPoints(QList<QPointF>() << m_owner->relationStartPos() + << m_currentPreviewArrowIntermediatePoints << headPoint); + m_currentPreviewArrow->update(m_diagramSceneModel->styleController()->relationStarterStyle()); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.h index 6767bef21b..38e625fbb9 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/relationstarter.h @@ -37,62 +37,42 @@ #include <QHash> - namespace qmt { class DiagramSceneModel; class IRelationable; - -class RelationStarter : - public QGraphicsRectItem +class RelationStarter : public QGraphicsRectItem { public: - RelationStarter(IRelationable *owner, DiagramSceneModel *diagram_scene_model, QGraphicsItem *parent = 0); - + RelationStarter(IRelationable *owner, DiagramSceneModel *diagramSceneModel, + QGraphicsItem *parent = 0); ~RelationStarter(); -public: - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); -public: - - void addArrow(const QString &id, ArrowItem::Shaft shaft, ArrowItem::Head end_head, ArrowItem::Head start_head = ArrowItem::HEAD_NONE); + void addArrow(const QString &id, ArrowItem::Shaft shaft, ArrowItem::Head endHead, + ArrowItem::Head startHead = ArrowItem::HeadNone); protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - void keyPressEvent(QKeyEvent *event); private: - - void updateCurrentPreviewArrow(const QPointF &head_point); - -public: - - IRelationable *_owner; - - DiagramSceneModel *_diagram_scene_model; - - QList<ArrowItem *> _arrows; - - QHash<ArrowItem *, QString> _arrow_ids; - - ArrowItem *_current_preview_arrow; - - QString _current_preview_arrow_id; - - QList<QPointF> _current_preview_arrow_intermediate_points; + void updateCurrentPreviewArrow(const QPointF &headPoint); + + IRelationable *m_owner; + DiagramSceneModel *m_diagramSceneModel; + QList<ArrowItem *> m_arrows; + QHash<ArrowItem *, QString> m_arrowIds; + ArrowItem *m_currentPreviewArrow; + QString m_currentPreviewArrowId; + QList<QPointF> m_currentPreviewArrowIntermediatePoints; }; -} +} // namespace qmt #endif // QMT_GRAPHICSRELATIONSTARTER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.cpp index 2202c6f60b..89036b0e73 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.cpp @@ -53,9 +53,8 @@ QString StereotypesItem::format(const QList<QString> &stereotypes) text = QString::fromUtf8("«"); bool first = true; foreach (const QString &stereotype, stereotypes) { - if (!first) { + if (!first) text += QStringLiteral(", "); - } text += stereotype; first = false; } @@ -64,4 +63,4 @@ QString StereotypesItem::format(const QList<QString> &stereotypes) return text; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.h index 60a55cfead..e9c9218237 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/stereotypesitem.h @@ -36,24 +36,17 @@ namespace qmt { -class StereotypesItem : - public QGraphicsSimpleTextItem +class StereotypesItem : public QGraphicsSimpleTextItem { public: StereotypesItem(QGraphicsItem *parent = 0); - ~StereotypesItem(); -public: - void setStereotypes(const QList<QString> &stereotypes); -public: - static QString format(const QList<QString> &stereotypes); - }; -} +} // namespace qmt #endif // QMT_GRAPHICSSTEREOTYPESITEM_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.cpp b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.cpp index c39c5630b9..5fecda1177 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.cpp @@ -37,8 +37,8 @@ namespace qmt { TemplateParameterBox::TemplateParameterBox(QGraphicsItem *parent) : QGraphicsRectItem(parent), - _break_lines(false), - _parameters_text(new QGraphicsSimpleTextItem(this)) + m_breakLines(false), + m_parametersText(new QGraphicsSimpleTextItem(this)) { update(); } @@ -49,62 +49,61 @@ TemplateParameterBox::~TemplateParameterBox() void TemplateParameterBox::setFont(const QFont &font) { - if (font != _parameters_text->font()) { - _parameters_text->setFont(font); + if (font != m_parametersText->font()) { + m_parametersText->setFont(font); update(); } } void TemplateParameterBox::setTextBrush(const QBrush &brush) { - if (brush != _parameters_text->brush()) { - _parameters_text->setBrush(brush); + if (brush != m_parametersText->brush()) { + m_parametersText->setBrush(brush); update(); } } -void TemplateParameterBox::setTemplateParameters(const QList<QString> &template_parameters) +void TemplateParameterBox::setTemplateParameters(const QList<QString> &templateParameters) { - if (_template_parameters != template_parameters) { - _template_parameters = template_parameters; + if (m_templateParameters != templateParameters) { + m_templateParameters = templateParameters; updateText(); } } -void TemplateParameterBox::setBreakLines(bool break_lines) +void TemplateParameterBox::setBreakLines(bool breakLines) { - if (break_lines != _break_lines) { - _break_lines = break_lines; + if (breakLines != m_breakLines) { + m_breakLines = breakLines; updateText(); } } void TemplateParameterBox::updateText() { - QString template_text; + QString templateText; bool first = true; - foreach (const QString ¶meter, _template_parameters) { + foreach (const QString ¶meter, m_templateParameters) { if (!first) { - if (_break_lines) { - template_text += QLatin1Char('\n'); - } else { - template_text += QStringLiteral(", "); - } + if (m_breakLines) + templateText += QLatin1Char('\n'); + else + templateText += QStringLiteral(", "); } - template_text += parameter; + templateText += parameter; first = false; } - if (template_text != _parameters_text->text()) { - _parameters_text->setText(template_text); + if (templateText != m_parametersText->text()) { + m_parametersText->setText(templateText); update(); } } void TemplateParameterBox::update() { - QRectF rect = _parameters_text->boundingRect(); + QRectF rect = m_parametersText->boundingRect(); setRect(0, 0, rect.width() + 4, rect.height() + 3); - _parameters_text->setPos(2, 2); + m_parametersText->setPos(2, 2); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.h b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.h index 60e267c3b8..0cf0e54c61 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_scene/parts/templateparameterbox.h @@ -35,37 +35,24 @@ namespace qmt { -class TemplateParameterBox : - public QGraphicsRectItem +class TemplateParameterBox : public QGraphicsRectItem { public: TemplateParameterBox(QGraphicsItem *parent = 0); - ~TemplateParameterBox(); -public: - void setFont(const QFont &font); - void setTextBrush(const QBrush &brush); - - void setTemplateParameters(const QList<QString> &template_parameters); - - void setBreakLines(bool break_lines); + void setTemplateParameters(const QList<QString> &templateParameters); + void setBreakLines(bool breakLines); private: - void updateText(); - void update(); -private: - - QList<QString> _template_parameters; - - bool _break_lines; - - QGraphicsSimpleTextItem *_parameters_text; + QList<QString> m_templateParameters; + bool m_breakLines; + QGraphicsSimpleTextItem *m_parametersText; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagram_mime_types.h b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagram_mime_types.h index d6df8c46ee..0064046356 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagram_mime_types.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagram_mime_types.h @@ -34,26 +34,17 @@ namespace qmt { // mime types for drag&drop - static const char MIME_TYPE_MODEL_ELEMENTS[] = "text/model-elements"; - static const char MIME_TYPE_NEW_MODEL_ELEMENTS[] = "text/new-model-elements"; - // object type constants used within drag&drop - static const char ELEMENT_TYPE_PACKAGE[] = "package"; - static const char ELEMENT_TYPE_COMPONENT[] = "component"; - static const char ELEMENT_TYPE_CLASS[] = "class"; - static const char ELEMENT_TYPE_ITEM[] = "item"; - static const char ELEMENT_TYPE_ANNOTATION[] = "annotation"; - static const char ELEMENT_TYPE_BOUNDARY[] = "boundary"; -} +} // namespace qmt #endif // QMT_DIAGRAM_MIME_TYPES_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.cpp b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.cpp index 843fdec430..360b769c21 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.cpp @@ -41,30 +41,26 @@ #include <QModelIndex> - namespace qmt { -class DiagramsManager::ManagedDiagram { +class DiagramsManager::ManagedDiagram +{ public: - ManagedDiagram(DiagramSceneModel *diagram_scene_model, const QString &diagram_name); - + ManagedDiagram(DiagramSceneModel *diagramSceneModel, const QString &diagramName); ~ManagedDiagram(); -public: - DiagramSceneModel *getDiagramSceneModel() const { return _diagram_scene_model.data(); } - - QString getDiagramName() const { return _diagram_name; } - - void setDiagramName(const QString &name) { _diagram_name = name; } + DiagramSceneModel *diagramSceneModel() const { return m_diagramSceneModel.data(); } + QString diagramName() const { return m_diagramName; } + void setDiagramName(const QString &name) { m_diagramName = name; } private: - QScopedPointer<DiagramSceneModel> _diagram_scene_model; - QString _diagram_name; + QScopedPointer<DiagramSceneModel> m_diagramSceneModel; + QString m_diagramName; }; -DiagramsManager::ManagedDiagram::ManagedDiagram(DiagramSceneModel *diagram_scene_model, const QString &diagram_name) - : _diagram_scene_model(diagram_scene_model), - _diagram_name(diagram_name) +DiagramsManager::ManagedDiagram::ManagedDiagram(DiagramSceneModel *diagramSceneModel, const QString &diagramName) + : m_diagramSceneModel(diagramSceneModel), + m_diagramName(diagramName) { } @@ -72,112 +68,109 @@ DiagramsManager::ManagedDiagram::~ManagedDiagram() { } - - DiagramsManager::DiagramsManager(QObject *parent) : QObject(parent), - _diagrams_view(0), - _diagram_controller(0), - _diagram_scene_controller(0), - _style_controller(0), - _stereotype_controller(0) + m_diagramsView(0), + m_diagramController(0), + m_diagramSceneController(0), + m_styleController(0), + m_stereotypeController(0) { } DiagramsManager::~DiagramsManager() { - qDeleteAll(_diagram_uid_to_managed_diagram_map); + qDeleteAll(m_diagramUidToManagedDiagramMap); } void DiagramsManager::setModel(TreeModel *model) { - if (_model) { - connect(_model, 0, this, 0); - } - _model = model; - if (model) { - connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(onDataChanged(QModelIndex,QModelIndex))); - } + if (m_model) + connect(m_model, 0, this, 0); + m_model = model; + if (model) + connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(onDataChanged(QModelIndex,QModelIndex))); } -void DiagramsManager::setDiagramsView(DiagramsViewInterface *diagrams_view) +void DiagramsManager::setDiagramsView(DiagramsViewInterface *diagramsView) { - _diagrams_view = diagrams_view; + m_diagramsView = diagramsView; } -void DiagramsManager::setDiagramController(DiagramController *diagram_controller) +void DiagramsManager::setDiagramController(DiagramController *diagramController) { - if (_diagram_controller) { - connect(_diagram_controller, 0, this, 0); - } - _diagram_controller = diagram_controller; - if (diagram_controller) { - connect(diagram_controller, SIGNAL(diagramAboutToBeRemoved(const MDiagram*)), this, SLOT(removeDiagram(const MDiagram*))); - } + if (m_diagramController) + connect(m_diagramController, 0, this, 0); + m_diagramController = diagramController; + if (diagramController) + connect(diagramController, SIGNAL(diagramAboutToBeRemoved(const MDiagram*)), + this, SLOT(removeDiagram(const MDiagram*))); } -void DiagramsManager::setDiagramSceneController(DiagramSceneController *diagram_scene_controller) +void DiagramsManager::setDiagramSceneController(DiagramSceneController *diagramSceneController) { - _diagram_scene_controller = diagram_scene_controller; + m_diagramSceneController = diagramSceneController; } -void DiagramsManager::setStyleController(StyleController *style_controller) +void DiagramsManager::setStyleController(StyleController *styleController) { - _style_controller = style_controller; + m_styleController = styleController; } -void DiagramsManager::setStereotypeController(StereotypeController *stereotype_controller) +void DiagramsManager::setStereotypeController(StereotypeController *stereotypeController) { - _stereotype_controller = stereotype_controller; + m_stereotypeController = stereotypeController; } DiagramSceneModel *DiagramsManager::bindDiagramSceneModel(MDiagram *diagram) { - if (!_diagram_uid_to_managed_diagram_map.contains(diagram->getUid())) { - DiagramSceneModel *diagram_scene_model = new DiagramSceneModel(); - diagram_scene_model->setDiagramController(_diagram_controller); - diagram_scene_model->setDiagramSceneController(_diagram_scene_controller); - diagram_scene_model->setStyleController(_style_controller); - diagram_scene_model->setStereotypeController(_stereotype_controller); - diagram_scene_model->setDiagram(diagram); - connect(diagram_scene_model, SIGNAL(diagramSceneActivated(const MDiagram*)), this, SIGNAL(diagramActivated(const MDiagram*))); - connect(diagram_scene_model, SIGNAL(selectionChanged(const MDiagram*)), this, SIGNAL(diagramSelectionChanged(const MDiagram*))); - ManagedDiagram *managed_diagram = new ManagedDiagram(diagram_scene_model, diagram->getName()); - _diagram_uid_to_managed_diagram_map.insert(diagram->getUid(), managed_diagram); + if (!m_diagramUidToManagedDiagramMap.contains(diagram->uid())) { + DiagramSceneModel *diagramSceneModel = new DiagramSceneModel(); + diagramSceneModel->setDiagramController(m_diagramController); + diagramSceneModel->setDiagramSceneController(m_diagramSceneController); + diagramSceneModel->setStyleController(m_styleController); + diagramSceneModel->setStereotypeController(m_stereotypeController); + diagramSceneModel->setDiagram(diagram); + connect(diagramSceneModel, SIGNAL(diagramSceneActivated(const MDiagram*)), + this, SIGNAL(diagramActivated(const MDiagram*))); + connect(diagramSceneModel, SIGNAL(selectionHasChanged(const MDiagram*)), + this, SIGNAL(diagramSelectionChanged(const MDiagram*))); + ManagedDiagram *managedDiagram = new ManagedDiagram(diagramSceneModel, diagram->name()); + m_diagramUidToManagedDiagramMap.insert(diagram->uid(), managedDiagram); } - return getDiagramSceneModel(diagram); + return diagramSceneModel(diagram); } -DiagramSceneModel *DiagramsManager::getDiagramSceneModel(const MDiagram *diagram) const +DiagramSceneModel *DiagramsManager::diagramSceneModel(const MDiagram *diagram) const { - const ManagedDiagram *managed_diagram = _diagram_uid_to_managed_diagram_map.value(diagram->getUid()); - QMT_CHECK(managed_diagram); - return managed_diagram->getDiagramSceneModel(); + const ManagedDiagram *managedDiagram = m_diagramUidToManagedDiagramMap.value(diagram->uid()); + QMT_CHECK(managedDiagram); + return managedDiagram->diagramSceneModel(); } void DiagramsManager::unbindDiagramSceneModel(const MDiagram *diagram) { QMT_CHECK(diagram); - ManagedDiagram *managed_diagram = _diagram_uid_to_managed_diagram_map.take(diagram->getUid()); - QMT_CHECK(managed_diagram); - delete managed_diagram; + ManagedDiagram *managedDiagram = m_diagramUidToManagedDiagramMap.take(diagram->uid()); + QMT_CHECK(managedDiagram); + delete managedDiagram; } void DiagramsManager::openDiagram(MDiagram *diagram) { - if (_diagrams_view) { - _diagrams_view->openDiagram(diagram); - } + if (m_diagramsView) + m_diagramsView->openDiagram(diagram); } void DiagramsManager::removeDiagram(const MDiagram *diagram) { if (diagram) { - ManagedDiagram *managed_diagram = _diagram_uid_to_managed_diagram_map.value(diagram->getUid()); - if (managed_diagram) { - if (_diagrams_view) { + ManagedDiagram *managedDiagram = m_diagramUidToManagedDiagramMap.value(diagram->uid()); + if (managedDiagram) { + if (m_diagramsView) { // closeDiagram() must call unbindDiagramSceneModel() - _diagrams_view->closeDiagram(diagram); + m_diagramsView->closeDiagram(diagram); } } } @@ -185,29 +178,27 @@ void DiagramsManager::removeDiagram(const MDiagram *diagram) void DiagramsManager::removeAllDiagrams() { - if (_diagrams_view) { - _diagrams_view->closeAllDiagrams(); - } - qDeleteAll(_diagram_uid_to_managed_diagram_map); - _diagram_uid_to_managed_diagram_map.clear(); + if (m_diagramsView) + m_diagramsView->closeAllDiagrams(); + qDeleteAll(m_diagramUidToManagedDiagramMap); + m_diagramUidToManagedDiagramMap.clear(); } void DiagramsManager::onDataChanged(const QModelIndex &topleft, const QModelIndex &bottomright) { for (int row = topleft.row(); row <= bottomright.row(); ++row) { - QModelIndex index = _model->index(row, 0, topleft.parent()); - MDiagram *diagram = dynamic_cast<MDiagram *>(_model->getElement(index)); + QModelIndex index = m_model->QStandardItemModel::index(row, 0, topleft.parent()); + MDiagram *diagram = dynamic_cast<MDiagram *>(m_model->element(index)); if (diagram) { - ManagedDiagram *managed_diagram = _diagram_uid_to_managed_diagram_map.value(diagram->getUid()); - if (managed_diagram && managed_diagram->getDiagramName() != diagram->getName()) { - managed_diagram->setDiagramName(diagram->getName()); - if (_diagrams_view) { - _diagrams_view->onDiagramRenamed(diagram); - } + ManagedDiagram *managedDiagram = m_diagramUidToManagedDiagramMap.value(diagram->uid()); + if (managedDiagram && managedDiagram->diagramName() != diagram->name()) { + managedDiagram->setDiagramName(diagram->name()); + if (m_diagramsView) + m_diagramsView->onDiagramRenamed(diagram); } } } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.h b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.h index 7830cbbe3d..57050ceb71 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsmanager.h @@ -42,7 +42,6 @@ QT_BEGIN_NAMESPACE class QModelIndex; QT_END_NAMESPACE - namespace qmt { class MDiagram; @@ -57,79 +56,50 @@ class TreeModel; class DiagramsViewInterface; class DiagramSceneModel; - -class QMT_EXPORT DiagramsManager : - public QObject +class QMT_EXPORT DiagramsManager : public QObject { Q_OBJECT - class ManagedDiagram; public: - explicit DiagramsManager(QObject *parent = 0); - ~DiagramsManager(); signals: - void someDiagramOpened(bool); - void diagramActivated(const MDiagram *diagram); - void diagramSelectionChanged(const MDiagram *diagram); public: - void setModel(TreeModel *model); - - void setDiagramsView(DiagramsViewInterface *diagrams_view); - - void setDiagramController(DiagramController *diagram_controller); - - void setDiagramSceneController(DiagramSceneController *diagram_scene_controller); - - void setStyleController(StyleController *style_controller); - - void setStereotypeController(StereotypeController *stereotype_controller); - -public: + void setDiagramsView(DiagramsViewInterface *diagramsView); + void setDiagramController(DiagramController *diagramController); + void setDiagramSceneController(DiagramSceneController *diagramSceneController); + void setStyleController(StyleController *styleController); + void setStereotypeController(StereotypeController *stereotypeController); DiagramSceneModel *bindDiagramSceneModel(MDiagram *diagram); - - DiagramSceneModel *getDiagramSceneModel(const MDiagram *diagram) const; - + DiagramSceneModel *diagramSceneModel(const MDiagram *diagram) const; void unbindDiagramSceneModel(const MDiagram *diagram); public slots: - void openDiagram(MDiagram *diagram); - void removeDiagram(const MDiagram *diagram); - void removeAllDiagrams(); private slots: - void onDataChanged(const QModelIndex &topleft, const QModelIndex &bottomright); private: - - QPointer<TreeModel> _model; - - DiagramsViewInterface *_diagrams_view; - - DiagramController *_diagram_controller; - - DiagramSceneController *_diagram_scene_controller; - - StyleController *_style_controller; - - StereotypeController *_stereotype_controller; - - QHash<Uid, ManagedDiagram *> _diagram_uid_to_managed_diagram_map; + QPointer<TreeModel> m_model; + DiagramsViewInterface *m_diagramsView; + DiagramController *m_diagramController; + DiagramSceneController *m_diagramSceneController; + StyleController *m_styleController; + StereotypeController *m_stereotypeController; + QHash<Uid, ManagedDiagram *> m_diagramUidToManagedDiagramMap; }; -} +} // namespace qmt #endif // QMT_DIAGRAMSMANAGER_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsviewinterface.h b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsviewinterface.h index b2ab670927..b07a35bf20 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsviewinterface.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/diagramsviewinterface.h @@ -36,22 +36,17 @@ namespace qmt { class MDiagram; class DiagramSceneModel; - -class DiagramsViewInterface { +class DiagramsViewInterface +{ public: virtual ~DiagramsViewInterface() { } -public: - virtual void openDiagram(MDiagram *) = 0; - virtual void closeDiagram(const MDiagram *) = 0; - virtual void closeAllDiagrams() = 0; - virtual void onDiagramRenamed(const MDiagram *) = 0; }; -} +} // namespace qmt #endif // QMT_DIAGRAMSVIEWINTERFACE_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.cpp b/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.cpp index 93312e6a12..5e32dae608 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.cpp @@ -44,7 +44,7 @@ namespace qmt { SceneInspector::SceneInspector(QObject *parent) : QObject(parent), - _diagrams_manager(0) + m_diagramsManager(0) { } @@ -52,65 +52,62 @@ SceneInspector::~SceneInspector() { } -void SceneInspector::setDiagramsManager(DiagramsManager *diagrams_manager) +void SceneInspector::setDiagramsManager(DiagramsManager *diagramsManager) { - _diagrams_manager = diagrams_manager; + m_diagramsManager = diagramsManager; } -QSizeF SceneInspector::getRasterSize() const +QSizeF SceneInspector::rasterSize() const { return QSizeF(RASTER_WIDTH, RASTER_HEIGHT); } -QSizeF SceneInspector::getMinimalSize(const DElement *element, const MDiagram *diagram) const +QSizeF SceneInspector::minimalSize(const DElement *element, const MDiagram *diagram) const { - DiagramSceneModel *diagram_scene_model = _diagrams_manager->getDiagramSceneModel(diagram); - QMT_CHECK(diagram_scene_model); - if (diagram_scene_model) { - const QGraphicsItem *item = diagram_scene_model->getGraphicsItem(const_cast<DElement *>(element)); + DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram); + QMT_CHECK(diagramSceneModel); + if (diagramSceneModel) { + const QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element)); QMT_CHECK(item); if (item) { - if (const IResizable *resizable = dynamic_cast<const IResizable *>(item)) { - return resizable->getMinimumSize(); - } + if (const IResizable *resizable = dynamic_cast<const IResizable *>(item)) + return resizable->minimumSize(); } } QMT_CHECK(false); return QSizeF(); } -IMoveable *SceneInspector::getMoveable(const DElement *element, const MDiagram *diagram) const +IMoveable *SceneInspector::moveable(const DElement *element, const MDiagram *diagram) const { - DiagramSceneModel *diagram_scene_model = _diagrams_manager->getDiagramSceneModel(diagram); - QMT_CHECK(diagram_scene_model); - if (diagram_scene_model) { - QGraphicsItem *item = diagram_scene_model->getGraphicsItem(const_cast<DElement *>(element)); + DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram); + QMT_CHECK(diagramSceneModel); + if (diagramSceneModel) { + QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element)); QMT_CHECK(item); if (item) { - if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) { + if (IMoveable *moveable = dynamic_cast<IMoveable *>(item)) return moveable; - } } } QMT_CHECK(false); return 0; } -IResizable *SceneInspector::getResizable(const DElement *element, const MDiagram *diagram) const +IResizable *SceneInspector::resizable(const DElement *element, const MDiagram *diagram) const { - DiagramSceneModel *diagram_scene_model = _diagrams_manager->getDiagramSceneModel(diagram); - QMT_CHECK(diagram_scene_model); - if (diagram_scene_model) { - QGraphicsItem *item = diagram_scene_model->getGraphicsItem(const_cast<DElement *>(element)); + DiagramSceneModel *diagramSceneModel = m_diagramsManager->diagramSceneModel(diagram); + QMT_CHECK(diagramSceneModel); + if (diagramSceneModel) { + QGraphicsItem *item = diagramSceneModel->graphicsItem(const_cast<DElement *>(element)); QMT_CHECK(item); if (item) { - if (IResizable *resizeable = dynamic_cast<IResizable *>(item)) { + if (IResizable *resizeable = dynamic_cast<IResizable *>(item)) return resizeable; - } } } QMT_CHECK(false); return 0; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.h b/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.h index d1aed77207..d88de71ece 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_ui/sceneinspector.h @@ -39,33 +39,23 @@ namespace qmt { class DiagramsManager; -class QMT_EXPORT SceneInspector : - public QObject, - public ISceneInspector +class QMT_EXPORT SceneInspector : public QObject, public ISceneInspector { public: explicit SceneInspector(QObject *parent = 0); ~SceneInspector(); -public: - - void setDiagramsManager(DiagramsManager *diagrams_manager); - -public: + void setDiagramsManager(DiagramsManager *diagramsManager); - QSizeF getRasterSize() const; - - QSizeF getMinimalSize(const DElement *element, const MDiagram *diagram) const; - - IMoveable *getMoveable(const DElement *element, const MDiagram *diagram) const; - - IResizable *getResizable(const DElement *element, const MDiagram *diagram) const; + QSizeF rasterSize() const; + QSizeF minimalSize(const DElement *element, const MDiagram *diagram) const; + IMoveable *moveable(const DElement *element, const MDiagram *diagram) const; + IResizable *resizable(const DElement *element, const MDiagram *diagram) const; private: - - DiagramsManager *_diagrams_manager; + DiagramsManager *m_diagramsManager; }; -} +} // namespace qmt #endif // QMT_SCENEINSPECTOR_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.cpp b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.cpp index fd4923ee48..33135ea7f5 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.cpp @@ -43,7 +43,7 @@ namespace qmt { DiagramsView::DiagramsView(QWidget *parent) : QTabWidget(parent), - _diagrams_manager(0) + m_diagramsManager(0) { setTabsClosable(true); setMovable(true); @@ -56,89 +56,85 @@ DiagramsView::~DiagramsView() { } -void DiagramsView::setDiagramsManager(DiagramsManager *diagrams_manager) +void DiagramsView::setDiagramsManager(DiagramsManager *diagramsManager) { - _diagrams_manager = diagrams_manager; + m_diagramsManager = diagramsManager; } void DiagramsView::openDiagram(MDiagram *diagram) { QMT_CHECK(diagram); - DiagramView *diagram_view = _diagram_views.value(diagram->getUid()); - if (!diagram_view) { - DiagramSceneModel *diagram_scene_model = _diagrams_manager->bindDiagramSceneModel(diagram); - DiagramView *diagram_view = new DiagramView(this); - diagram_view->setDiagramSceneModel(diagram_scene_model); - int tab_index = addTab(diagram_view, diagram->getName()); - setCurrentIndex(tab_index); - _diagram_views.insert(diagram->getUid(), diagram_view); + DiagramView *diagramView = m_diagramViews.value(diagram->uid()); + if (!diagramView) { + DiagramSceneModel *diagramSceneModel = m_diagramsManager->bindDiagramSceneModel(diagram); + DiagramView *diagramView = new DiagramView(this); + diagramView->setDiagramSceneModel(diagramSceneModel); + int tabIndex = addTab(diagramView, diagram->name()); + setCurrentIndex(tabIndex); + m_diagramViews.insert(diagram->uid(), diagramView); } else { - setCurrentWidget(diagram_view); + setCurrentWidget(diagramView); } - emit someDiagramOpened(!_diagram_views.isEmpty()); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } void DiagramsView::closeDiagram(const MDiagram *diagram) { - if (!diagram) { + if (!diagram) return; - } - DiagramView *diagram_view = _diagram_views.value(diagram->getUid()); - if (diagram_view) { - removeTab(indexOf(diagram_view)); - delete diagram_view; - _diagram_views.remove(diagram->getUid()); + DiagramView *diagramView = m_diagramViews.value(diagram->uid()); + if (diagramView) { + removeTab(indexOf(diagramView)); + delete diagramView; + m_diagramViews.remove(diagram->uid()); } - emit someDiagramOpened(!_diagram_views.isEmpty()); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } void DiagramsView::closeAllDiagrams() { for (int i = count() - 1; i >= 0; --i) { - DiagramView *diagram_view = dynamic_cast<DiagramView *>(widget(i)); - if (diagram_view) { + DiagramView *diagramView = dynamic_cast<DiagramView *>(widget(i)); + if (diagramView) { removeTab(i); - delete diagram_view; + delete diagramView; } } - _diagram_views.clear(); - emit someDiagramOpened(!_diagram_views.isEmpty()); + m_diagramViews.clear(); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } -void DiagramsView::onCurrentChanged(int tab_index) +void DiagramsView::onCurrentChanged(int tabIndex) { - emit currentDiagramChanged(getDiagram(tab_index)); + emit currentDiagramChanged(diagram(tabIndex)); } -void DiagramsView::onTabCloseRequested(int tab_index) +void DiagramsView::onTabCloseRequested(int tabIndex) { - emit diagramCloseRequested(getDiagram(tab_index)); + emit diagramCloseRequested(diagram(tabIndex)); } void DiagramsView::onDiagramRenamed(const MDiagram *diagram) { - if (!diagram) { + if (!diagram) return; - } - DiagramView *diagram_view = _diagram_views.value(diagram->getUid()); - if (diagram_view) { - setTabText(indexOf(diagram_view), diagram->getName()); - } + DiagramView *diagramView = m_diagramViews.value(diagram->uid()); + if (diagramView) + setTabText(indexOf(diagramView), diagram->name()); } -MDiagram *DiagramsView::getDiagram(int tab_index) const +MDiagram *DiagramsView::diagram(int tabIndex) const { - DiagramView *diagram_view = dynamic_cast<DiagramView *>(widget(tab_index)); - return getDiagram(diagram_view); + DiagramView *diagramView = dynamic_cast<DiagramView *>(widget(tabIndex)); + return diagram(diagramView); } -MDiagram *DiagramsView::getDiagram(DiagramView *diagram_view) const +MDiagram *DiagramsView::diagram(DiagramView *diagramView) const { - if (!diagram_view || diagram_view->getDiagramSceneModel()) { + if (!diagramView || diagramView->diagramSceneModel()) return 0; - } - return diagram_view->getDiagramSceneModel()->getDiagram(); + return diagramView->diagramSceneModel()->diagram(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.h b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.h index dbf94da1b3..c6b537d5fb 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramsview.h @@ -39,7 +39,6 @@ #include <QPointer> #include <QHash> - namespace qmt { class MDiagram; @@ -48,59 +47,40 @@ class DiagramView; class DiagramSceneModel; class DiagramsManager; - -class QMT_EXPORT DiagramsView : - public QTabWidget, - public DiagramsViewInterface +class QMT_EXPORT DiagramsView : public QTabWidget, public DiagramsViewInterface { Q_OBJECT public: explicit DiagramsView(QWidget *parent = 0); - ~DiagramsView(); signals: - void currentDiagramChanged(const MDiagram *diagram); - void diagramCloseRequested(const MDiagram *diagram); - void someDiagramOpened(bool); public: - - void setDiagramsManager(DiagramsManager *diagrams_manager); + void setDiagramsManager(DiagramsManager *diagramsManager); public slots: - void openDiagram(MDiagram *diagram); - void closeDiagram(const MDiagram *diagram); - void closeAllDiagrams(); - void onDiagramRenamed(const MDiagram *diagram); private slots: - - void onCurrentChanged(int tab_index); - - void onTabCloseRequested(int tab_index); + void onCurrentChanged(int tabIndex); + void onTabCloseRequested(int tabIndex); private: + MDiagram *diagram(int tabIndex) const; + MDiagram *diagram(DiagramView * diagramView) const; - MDiagram *getDiagram(int tab_index) const; - - MDiagram *getDiagram(DiagramView * diagram_view) const; - -private: - - DiagramsManager *_diagrams_manager; - - QHash<Uid, DiagramView *> _diagram_views; + DiagramsManager *m_diagramsManager; + QHash<Uid, DiagramView *> m_diagramViews; }; -} +} // namespace qmt #endif // DIAGRAMSVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.cpp b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.cpp index e9e4d0ccb2..f70df1b40d 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.cpp @@ -42,7 +42,6 @@ #include <QDropEvent> #include <QMimeData> - namespace qmt { DiagramView::DiagramView(QWidget *parent) @@ -58,42 +57,41 @@ DiagramView::~DiagramView() { } -DiagramSceneModel *DiagramView::getDiagramSceneModel() const +DiagramSceneModel *DiagramView::diagramSceneModel() const { - return _diagram_scene_model; + return m_diagramSceneModel; } -void DiagramView::setDiagramSceneModel(DiagramSceneModel *diagram_scene_model) +void DiagramView::setDiagramSceneModel(DiagramSceneModel *diagramSceneModel) { setScene(0); - _diagram_scene_model = diagram_scene_model; - if (diagram_scene_model) - setScene(_diagram_scene_model->getGraphicsScene()); + m_diagramSceneModel = diagramSceneModel; + if (diagramSceneModel) + setScene(m_diagramSceneModel->graphicsScene()); } void DiagramView::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))) { bool accept = false; - QDataStream data_stream(event->mimeData()->data(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))); - while (data_stream.status() == QDataStream::Ok) { + QDataStream dataStream(event->mimeData()->data(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))); + while (dataStream.status() == QDataStream::Ok) { QString key; - data_stream >> key; + dataStream >> key; if (!key.isEmpty()) { - if (_diagram_scene_model->getDiagramSceneController()->isAddingAllowed(Uid(key), _diagram_scene_model->getDiagram())) { + if (m_diagramSceneModel->diagramSceneController()->isAddingAllowed(Uid(key), m_diagramSceneModel->diagram())) accept = true; - } } } event->setAccepted(accept); } else if (event->mimeData()->hasFormat(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))) { bool accept = false; - QDataStream data_stream(event->mimeData()->data(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))); - while (data_stream.status() == QDataStream::Ok) { - QString new_element_id; - data_stream >> new_element_id; - if (!new_element_id.isEmpty()) { - // TODO ask a factory if new_element_id is a known type + QDataStream dataStream(event->mimeData()->data(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))); + while (dataStream.status() == QDataStream::Ok) { + QString newElementId; + dataStream >> newElementId; + if (!newElementId.isEmpty()) { + // TODO ask a factory if newElementId is a known type accept = true; } } @@ -117,27 +115,26 @@ void DiagramView::dropEvent(QDropEvent *event) { event->setDropAction(Qt::MoveAction); if (event->mimeData()->hasFormat(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))) { - QDataStream data_stream(event->mimeData()->data(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))); - while (data_stream.status() == QDataStream::Ok) { + QDataStream dataStream(event->mimeData()->data(QLatin1String(MIME_TYPE_MODEL_ELEMENTS))); + while (dataStream.status() == QDataStream::Ok) { QString key; - data_stream >> key; + dataStream >> key; if (!key.isEmpty()) { - if (_diagram_scene_model->getDiagramSceneController()->isAddingAllowed(Uid(key), _diagram_scene_model->getDiagram())) { - _diagram_scene_model->getDiagramSceneController()->addExistingModelElement(Uid(key), mapToScene(event->pos()), _diagram_scene_model->getDiagram()); - } + if (m_diagramSceneModel->diagramSceneController()->isAddingAllowed(Uid(key), m_diagramSceneModel->diagram())) + m_diagramSceneModel->diagramSceneController()->addExistingModelElement(Uid(key), mapToScene(event->pos()), m_diagramSceneModel->diagram()); } } event->accept(); } else if (event->mimeData()->hasFormat(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))) { - QDataStream data_stream(event->mimeData()->data(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))); - while (data_stream.status() == QDataStream::Ok) { - QString new_element_id; + QDataStream dataStream(event->mimeData()->data(QLatin1String(MIME_TYPE_NEW_MODEL_ELEMENTS))); + while (dataStream.status() == QDataStream::Ok) { + QString newElementId; QString name; QString stereotype; - data_stream >> new_element_id >> name >> stereotype; - if (!new_element_id.isEmpty()) { + dataStream >> newElementId >> name >> stereotype; + if (!newElementId.isEmpty()) { QPointF pos = mapToScene(event->pos()); - _diagram_scene_model->getDiagramSceneController()->dropNewElement(new_element_id, name, stereotype, _diagram_scene_model->findTopmostElement(pos), pos, _diagram_scene_model->getDiagram()); + m_diagramSceneModel->diagramSceneController()->dropNewElement(newElementId, name, stereotype, m_diagramSceneModel->findTopmostElement(pos), pos, m_diagramSceneModel->diagram()); } } event->accept(); @@ -146,4 +143,4 @@ void DiagramView::dropEvent(QDropEvent *event) } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.h b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.h index 74a6cbf58a..fc507aab20 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/diagramview.h @@ -41,38 +41,25 @@ namespace qmt { class DiagramSceneModel; class MPackage; - -class QMT_EXPORT DiagramView : - public QGraphicsView +class QMT_EXPORT DiagramView : public QGraphicsView { public: - explicit DiagramView(QWidget *parent); - ~DiagramView(); -public: - - DiagramSceneModel *getDiagramSceneModel() const; - - void setDiagramSceneModel(DiagramSceneModel *diagram_scene_model); + DiagramSceneModel *diagramSceneModel() const; + void setDiagramSceneModel(DiagramSceneModel *diagramSceneModel); protected: - void dragEnterEvent(QDragEnterEvent *event); - void dragLeaveEvent(QDragLeaveEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - void dropEvent(QDropEvent *event); private: - - QPointer<DiagramSceneModel> _diagram_scene_model; - + QPointer<DiagramSceneModel> m_diagramSceneModel; }; -} +} // namespace qmt #endif // QMT_DIAGRAMVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.cpp b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.cpp index 65f4285090..eff20bbd14 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.cpp +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.cpp @@ -43,7 +43,7 @@ namespace qmt { StackedDiagramsView::StackedDiagramsView(QWidget *parent) : QStackedWidget(parent), - _diagrams_manager(0) + m_diagramsManager(0) { connect(this, SIGNAL(currentChanged(int)), this, SLOT(onCurrentChanged(int))); } @@ -52,59 +52,58 @@ StackedDiagramsView::~StackedDiagramsView() { } -void StackedDiagramsView::setDiagramsManager(DiagramsManager *diagrams_manager) +void StackedDiagramsView::setDiagramsManager(DiagramsManager *diagramsManager) { - _diagrams_manager = diagrams_manager; + m_diagramsManager = diagramsManager; } void StackedDiagramsView::openDiagram(MDiagram *diagram) { QMT_CHECK(diagram); - DiagramView *diagram_view = _diagram_views.value(diagram->getUid()); - if (!diagram_view) { - DiagramSceneModel *diagram_scene_model = _diagrams_manager->bindDiagramSceneModel(diagram); - DiagramView *diagram_view = new DiagramView(this); - diagram_view->setDiagramSceneModel(diagram_scene_model); - int tab_index = addWidget(diagram_view); - setCurrentIndex(tab_index); - _diagram_views.insert(diagram->getUid(), diagram_view); + DiagramView *diagramView = m_diagramViews.value(diagram->uid()); + if (!diagramView) { + DiagramSceneModel *diagramSceneModel = m_diagramsManager->bindDiagramSceneModel(diagram); + DiagramView *diagramView = new DiagramView(this); + diagramView->setDiagramSceneModel(diagramSceneModel); + int tabIndex = addWidget(diagramView); + setCurrentIndex(tabIndex); + m_diagramViews.insert(diagram->uid(), diagramView); } else { - setCurrentWidget(diagram_view); + setCurrentWidget(diagramView); } - emit someDiagramOpened(!_diagram_views.isEmpty()); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } void StackedDiagramsView::closeDiagram(const MDiagram *diagram) { - if (!diagram) { + if (!diagram) return; - } - DiagramView *diagram_view = _diagram_views.value(diagram->getUid()); - if (diagram_view) { - removeWidget(diagram_view); - delete diagram_view; - _diagram_views.remove(diagram->getUid()); + DiagramView *diagramView = m_diagramViews.value(diagram->uid()); + if (diagramView) { + removeWidget(diagramView); + delete diagramView; + m_diagramViews.remove(diagram->uid()); } - emit someDiagramOpened(!_diagram_views.isEmpty()); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } void StackedDiagramsView::closeAllDiagrams() { for (int i = count() - 1; i >= 0; --i) { - DiagramView *diagram_view = dynamic_cast<DiagramView *>(widget(i)); - if (diagram_view) { - removeWidget(diagram_view); - delete diagram_view; + DiagramView *diagramView = dynamic_cast<DiagramView *>(widget(i)); + if (diagramView) { + removeWidget(diagramView); + delete diagramView; } } - _diagram_views.clear(); - emit someDiagramOpened(!_diagram_views.isEmpty()); + m_diagramViews.clear(); + emit someDiagramOpened(!m_diagramViews.isEmpty()); } -void StackedDiagramsView::onCurrentChanged(int tab_index) +void StackedDiagramsView::onCurrentChanged(int tabIndex) { - emit currentDiagramChanged(getDiagram(tab_index)); + emit currentDiagramChanged(diagram(tabIndex)); } void StackedDiagramsView::onDiagramRenamed(const MDiagram *diagram) @@ -114,18 +113,17 @@ void StackedDiagramsView::onDiagramRenamed(const MDiagram *diagram) // nothing to do! } -MDiagram *StackedDiagramsView::getDiagram(int tab_index) const +MDiagram *StackedDiagramsView::diagram(int tabIndex) const { - DiagramView *diagram_view = dynamic_cast<DiagramView *>(widget(tab_index)); - return getDiagram(diagram_view); + DiagramView *diagramView = dynamic_cast<DiagramView *>(widget(tabIndex)); + return diagram(diagramView); } -MDiagram *StackedDiagramsView::getDiagram(DiagramView *diagram_view) const +MDiagram *StackedDiagramsView::diagram(DiagramView *diagramView) const { - if (!diagram_view || !diagram_view->getDiagramSceneModel()) { + if (!diagramView || !diagramView->diagramSceneModel()) return 0; - } - return diagram_view->getDiagramSceneModel()->getDiagram(); + return diagramView->diagramSceneModel()->diagram(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.h b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.h index 8bf12522b9..f95811d46a 100644 --- a/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.h +++ b/src/libs/3rdparty/modeling/qmt/diagram_widgets_ui/stackeddiagramsview.h @@ -39,66 +39,46 @@ #include <QPointer> #include <QHash> - namespace qmt { class MDiagram; - class DiagramView; class DiagramSceneModel; class DiagramsManager; - -class QMT_EXPORT StackedDiagramsView : - public QStackedWidget, - public DiagramsViewInterface +class QMT_EXPORT StackedDiagramsView : public QStackedWidget, public DiagramsViewInterface { Q_OBJECT public: explicit StackedDiagramsView(QWidget *parent = 0); - ~StackedDiagramsView(); signals: - void currentDiagramChanged(const MDiagram *diagram); - void diagramCloseRequested(const MDiagram *diagram); - void someDiagramOpened(bool); public: - - void setDiagramsManager(DiagramsManager *diagrams_manager); + void setDiagramsManager(DiagramsManager *diagramsManager); public slots: - void openDiagram(MDiagram *diagram); - void closeDiagram(const MDiagram *diagram); - void closeAllDiagrams(); - void onDiagramRenamed(const MDiagram *diagram); private slots: - - void onCurrentChanged(int tab_index); + void onCurrentChanged(int tabIndex); private: + MDiagram *diagram(int tabIndex) const; + MDiagram *diagram(DiagramView * diagramView) const; - MDiagram *getDiagram(int tab_index) const; - - MDiagram *getDiagram(DiagramView * diagram_view) const; - -private: - - DiagramsManager *_diagrams_manager; - - QHash<Uid, DiagramView *> _diagram_views; + DiagramsManager *m_diagramsManager; + QHash<Uid, DiagramView *> m_diagramViews; }; -} +} // namespace qmt #endif // QMT_STACKEDDIAGRAMSVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.cpp b/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.cpp index b399727044..bed0e7b356 100644 --- a/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.cpp @@ -64,241 +64,238 @@ namespace qmt { DocumentController::DocumentController(QObject *parent) : QObject(parent), - _project_controller(new ProjectController(this)), - _undo_controller(new UndoController(this)), - _model_controller(new ModelController(this)), - _diagram_controller(new DiagramController(this)), - _diagram_scene_controller(new DiagramSceneController(this)), - _style_controller(new StyleController(this)), - _stereotype_controller(new StereotypeController(this)), - _config_controller(new ConfigController(this)), - _tree_model(new TreeModel(this)), - _sorted_tree_model(new SortedTreeModel(this)), - _diagrams_manager(new DiagramsManager(this)), - _scene_inspector(new SceneInspector(this)), - _model_clipboard(new MContainer()), - _diagram_clipboard(new DContainer()) + m_projectController(new ProjectController(this)), + m_undoController(new UndoController(this)), + m_modelController(new ModelController(this)), + m_diagramController(new DiagramController(this)), + m_diagramSceneController(new DiagramSceneController(this)), + m_styleController(new StyleController(this)), + m_stereotypeController(new StereotypeController(this)), + m_configController(new ConfigController(this)), + m_treeModel(new TreeModel(this)), + m_sortedTreeModel(new SortedTreeModel(this)), + m_diagramsManager(new DiagramsManager(this)), + m_sceneInspector(new SceneInspector(this)), + m_modelClipboard(new MContainer()), + m_diagramClipboard(new DContainer()) { // project controller - QObject::connect(_project_controller, SIGNAL(changed()), this, SIGNAL(changed())); + QObject::connect(m_projectController, SIGNAL(changed()), this, SIGNAL(changed())); // model controller - _model_controller->setUndoController(_undo_controller); - QObject::connect(_model_controller, SIGNAL(modified()), _project_controller, SLOT(setModified())); + m_modelController->setUndoController(m_undoController); + QObject::connect(m_modelController, SIGNAL(modified()), m_projectController, SLOT(setModified())); // diagram controller - _diagram_controller->setModelController(_model_controller); - _diagram_controller->setUndoController(_undo_controller); - QObject::connect(_diagram_controller, SIGNAL(modified(const MDiagram*)), _project_controller, SLOT(setModified())); + m_diagramController->setModelController(m_modelController); + m_diagramController->setUndoController(m_undoController); + QObject::connect(m_diagramController, SIGNAL(modified(const MDiagram*)), m_projectController, SLOT(setModified())); // diagram scene controller - _diagram_scene_controller->setModelController(_model_controller); - _diagram_scene_controller->setDiagramController(_diagram_controller); + m_diagramSceneController->setModelController(m_modelController); + m_diagramSceneController->setDiagramController(m_diagramController); // config controller - _config_controller->setStereotypeController(_stereotype_controller); + m_configController->setStereotypeController(m_stereotypeController); // tree model - _tree_model->setModelController(_model_controller); - _tree_model->setStereotypeController(_stereotype_controller); - _tree_model->setStyleController(_style_controller); + m_treeModel->setModelController(m_modelController); + m_treeModel->setStereotypeController(m_stereotypeController); + m_treeModel->setStyleController(m_styleController); // sorted tree model - _sorted_tree_model->setTreeModel(_tree_model); + m_sortedTreeModel->setTreeModel(m_treeModel); // diagrams manager - _diagrams_manager->setModel(_tree_model); - _diagrams_manager->setDiagramController(_diagram_controller); - _diagrams_manager->setDiagramSceneController(_diagram_scene_controller); - _diagrams_manager->setStyleController(_style_controller); - _diagrams_manager->setStereotypeController(_stereotype_controller); + m_diagramsManager->setModel(m_treeModel); + m_diagramsManager->setDiagramController(m_diagramController); + m_diagramsManager->setDiagramSceneController(m_diagramSceneController); + m_diagramsManager->setStyleController(m_styleController); + m_diagramsManager->setStereotypeController(m_stereotypeController); // scene inspector - _scene_inspector->setDiagramsManager(_diagrams_manager); + m_sceneInspector->setDiagramsManager(m_diagramsManager); // diagram scene controller (2) - _diagram_scene_controller->setSceneInspector(_scene_inspector); + m_diagramSceneController->setSceneInspector(m_sceneInspector); } DocumentController::~DocumentController() { // manually delete objects to ensure correct reverse order of creation - delete _scene_inspector; - delete _diagrams_manager; - delete _sorted_tree_model; - delete _tree_model; - delete _config_controller; - delete _stereotype_controller; - delete _style_controller; - delete _diagram_scene_controller; - delete _diagram_controller; - delete _model_controller; - delete _undo_controller; - delete _project_controller; + delete m_sceneInspector; + delete m_diagramsManager; + delete m_sortedTreeModel; + delete m_treeModel; + delete m_configController; + delete m_stereotypeController; + delete m_styleController; + delete m_diagramSceneController; + delete m_diagramController; + delete m_modelController; + delete m_undoController; + delete m_projectController; } bool DocumentController::isModelClipboardEmpty() const { - return _model_clipboard->isEmpty(); + return m_modelClipboard->isEmpty(); } bool DocumentController::isDiagramClipboardEmpty() const { - return _diagram_clipboard->isEmpty(); + return m_diagramClipboard->isEmpty(); } bool DocumentController::hasDiagramSelection(const MDiagram *diagram) const { - return _diagrams_manager->getDiagramSceneModel(diagram)->hasSelection(); + return m_diagramsManager->diagramSceneModel(diagram)->hasSelection(); } void DocumentController::cutFromModel(const MSelection &selection) { - *_model_clipboard = _model_controller->cutElements(selection); + *m_modelClipboard = m_modelController->cutElements(selection); emit modelClipboardChanged(isModelClipboardEmpty()); } void DocumentController::cutFromDiagram(MDiagram *diagram) { - *_diagram_clipboard = _diagram_controller->cutElements(_diagrams_manager->getDiagramSceneModel(diagram)->getSelectedElements(), diagram); + *m_diagramClipboard = m_diagramController->cutElements(m_diagramsManager->diagramSceneModel(diagram)->selectedElements(), diagram); emit diagramClipboardChanged(isDiagramClipboardEmpty()); } void DocumentController::copyFromModel(const MSelection &selection) { - *_model_clipboard = _model_controller->copyElements(selection); + *m_modelClipboard = m_modelController->copyElements(selection); emit modelClipboardChanged(isModelClipboardEmpty()); } void DocumentController::copyFromDiagram(const qmt::MDiagram *diagram) { - *_diagram_clipboard = _diagram_controller->copyElements(_diagrams_manager->getDiagramSceneModel(diagram)->getSelectedElements(), diagram); + *m_diagramClipboard = m_diagramController->copyElements(m_diagramsManager->diagramSceneModel(diagram)->selectedElements(), diagram); emit diagramClipboardChanged(isDiagramClipboardEmpty()); } void DocumentController::copyDiagram(const MDiagram *diagram) { - _diagrams_manager->getDiagramSceneModel(diagram)->copyToClipboard(); + m_diagramsManager->diagramSceneModel(diagram)->copyToClipboard(); } -void DocumentController::pasteIntoModel(MObject *model_object) +void DocumentController::pasteIntoModel(MObject *modelObject) { - if (model_object) { - _model_controller->pasteElements(model_object, *_model_clipboard); - } + if (modelObject) + m_modelController->pasteElements(modelObject, *m_modelClipboard); } void DocumentController::pasteIntoDiagram(MDiagram *diagram) { - _diagram_controller->pasteElements(*_diagram_clipboard, diagram); + m_diagramController->pasteElements(*m_diagramClipboard, diagram); } void DocumentController::deleteFromModel(const MSelection &selection) { - _model_controller->deleteElements(selection); + m_modelController->deleteElements(selection); } void DocumentController::deleteFromDiagram(MDiagram *diagram) { - if (_diagrams_manager->getDiagramSceneModel(diagram)->hasSelection()) { - DSelection dselection = _diagrams_manager->getDiagramSceneModel(diagram)->getSelectedElements(); - _diagram_scene_controller->deleteFromDiagram(dselection, diagram); + if (m_diagramsManager->diagramSceneModel(diagram)->hasSelection()) { + DSelection dselection = m_diagramsManager->diagramSceneModel(diagram)->selectedElements(); + m_diagramSceneController->deleteFromDiagram(dselection, diagram); } } void DocumentController::removeFromDiagram(MDiagram *diagram) { - _diagram_controller->deleteElements(_diagrams_manager->getDiagramSceneModel(diagram)->getSelectedElements(), diagram); + m_diagramController->deleteElements(m_diagramsManager->diagramSceneModel(diagram)->selectedElements(), diagram); } void DocumentController::selectAllOnDiagram(MDiagram *diagram) { - _diagrams_manager->getDiagramSceneModel(diagram)->selectAllElements(); + m_diagramsManager->diagramSceneModel(diagram)->selectAllElements(); } MPackage *DocumentController::createNewPackage(MPackage *parent) { - MPackage *new_package = new MPackage(); - new_package->setName(tr("New Package")); - _model_controller->addObject(parent, new_package); - return new_package; + MPackage *newPackage = new MPackage(); + newPackage->setName(tr("New Package")); + m_modelController->addObject(parent, newPackage); + return newPackage; } MClass *DocumentController::createNewClass(MPackage *parent) { - MClass *new_class = new MClass(); - new_class->setName(tr("New Class")); - _model_controller->addObject(parent, new_class); - return new_class; + MClass *newClass = new MClass(); + newClass->setName(tr("New Class")); + m_modelController->addObject(parent, newClass); + return newClass; } MComponent *DocumentController::createNewComponent(MPackage *parent) { - MComponent *new_component = new MComponent(); - new_component->setName(tr("New Component")); - _model_controller->addObject(parent, new_component); - return new_component; + MComponent *newComponent = new MComponent(); + newComponent->setName(tr("New Component")); + m_modelController->addObject(parent, newComponent); + return newComponent; } MCanvasDiagram *DocumentController::createNewCanvasDiagram(MPackage *parent) { - MCanvasDiagram *new_diagram = new MCanvasDiagram(); - if (!_diagram_scene_controller->findDiagramBySearchId(parent, parent->getName())) { - new_diagram->setName(parent->getName()); - } else { - new_diagram->setName(tr("New Diagram")); - } - _model_controller->addObject(parent, new_diagram); - return new_diagram; + MCanvasDiagram *newDiagram = new MCanvasDiagram(); + if (!m_diagramSceneController->findDiagramBySearchId(parent, parent->name())) + newDiagram->setName(parent->name()); + else + newDiagram->setName(tr("New Diagram")); + m_modelController->addObject(parent, newDiagram); + return newDiagram; } MDiagram *DocumentController::findRootDiagram() { FindRootDiagramVisitor visitor; - _model_controller->getRootPackage()->accept(&visitor); - MDiagram *root_diagram = visitor.getDiagram(); - return root_diagram; + m_modelController->rootPackage()->accept(&visitor); + MDiagram *rootDiagram = visitor.diagram(); + return rootDiagram; } MDiagram *DocumentController::findOrCreateRootDiagram() { - MDiagram *root_diagram = findRootDiagram(); - if (!root_diagram) { - root_diagram = createNewCanvasDiagram(_model_controller->getRootPackage()); - _model_controller->startUpdateObject(root_diagram); - if (_project_controller->getProject()->hasFileName()) { - root_diagram->setName(NameController::convertFileNameToElementName(_project_controller->getProject()->getFileName())); - } - _model_controller->finishUpdateObject(root_diagram, false); + MDiagram *rootDiagram = findRootDiagram(); + if (!rootDiagram) { + rootDiagram = createNewCanvasDiagram(m_modelController->rootPackage()); + m_modelController->startUpdateObject(rootDiagram); + if (m_projectController->project()->hasFileName()) + rootDiagram->setName(NameController::convertFileNameToElementName(m_projectController->project()->fileName())); + m_modelController->finishUpdateObject(rootDiagram, false); } - return root_diagram; + return rootDiagram; } -void DocumentController::createNewProject(const QString &file_name) +void DocumentController::createNewProject(const QString &fileName) { - _diagrams_manager->removeAllDiagrams(); - _tree_model->setModelController(0); - _model_controller->setRootPackage(0); - _undo_controller->reset(); + m_diagramsManager->removeAllDiagrams(); + m_treeModel->setModelController(0); + m_modelController->setRootPackage(0); + m_undoController->reset(); - _project_controller->newProject(file_name); + m_projectController->newProject(fileName); - _tree_model->setModelController(_model_controller); - _model_controller->setRootPackage(_project_controller->getProject()->getRootPackage()); + m_treeModel->setModelController(m_modelController); + m_modelController->setRootPackage(m_projectController->project()->rootPackage()); } -void DocumentController::loadProject(const QString &file_name) +void DocumentController::loadProject(const QString &fileName) { - _diagrams_manager->removeAllDiagrams(); - _tree_model->setModelController(0); - _model_controller->setRootPackage(0); - _undo_controller->reset(); + m_diagramsManager->removeAllDiagrams(); + m_treeModel->setModelController(0); + m_modelController->setRootPackage(0); + m_undoController->reset(); - _project_controller->newProject(file_name); - _project_controller->load(); + m_projectController->newProject(fileName); + m_projectController->load(); - _tree_model->setModelController(_model_controller); - _model_controller->setRootPackage(_project_controller->getProject()->getRootPackage()); + m_treeModel->setModelController(m_modelController); + m_modelController->setRootPackage(m_projectController->project()->rootPackage()); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.h b/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.h index 6fde5a305e..45125ce05a 100644 --- a/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/document_controller/documentcontroller.h @@ -58,136 +58,76 @@ class DContainer; class MSelection; class MObject; - -class QMT_EXPORT DocumentController : - public QObject +class QMT_EXPORT DocumentController : public QObject { Q_OBJECT public: explicit DocumentController(QObject *parent = 0); - ~DocumentController(); signals: - void changed(); - - void modelClipboardChanged(bool is_empty); - - void diagramClipboardChanged(bool is_empty); - -public: - - ProjectController *getProjectController() const { return _project_controller; } - - UndoController *getUndoController() const { return _undo_controller; } - - ModelController *getModelController() const { return _model_controller; } - - DiagramController *getDiagramController() const { return _diagram_controller; } - - DiagramSceneController *getDiagramSceneController() const { return _diagram_scene_controller; } - - StyleController *getStyleController() const { return _style_controller; } - - StereotypeController *getStereotypeController() const { return _stereotype_controller; } - - ConfigController *getConfigController() const { return _config_controller; } - - TreeModel *getTreeModel() const { return _tree_model; } - - SortedTreeModel *getSortedTreeModel() const { return _sorted_tree_model; } - - DiagramsManager *getDiagramsManager() const { return _diagrams_manager; } - - SceneInspector *getSceneInspector() const { return _scene_inspector; } + void modelClipboardChanged(bool isEmpty); + void diagramClipboardChanged(bool isEmpty); public: + ProjectController *projectController() const { return m_projectController; } + UndoController *undoController() const { return m_undoController; } + ModelController *modelController() const { return m_modelController; } + DiagramController *diagramController() const { return m_diagramController; } + DiagramSceneController *diagramSceneController() const { return m_diagramSceneController; } + StyleController *styleController() const { return m_styleController; } + StereotypeController *stereotypeController() const { return m_stereotypeController; } + ConfigController *configController() const { return m_configController; } + TreeModel *treeModel() const { return m_treeModel; } + SortedTreeModel *sortedTreeModel() const { return m_sortedTreeModel; } + DiagramsManager *diagramsManager() const { return m_diagramsManager; } + SceneInspector *sceneInspector() const { return m_sceneInspector; } bool isModelClipboardEmpty() const; - bool isDiagramClipboardEmpty() const; - bool hasDiagramSelection(const qmt::MDiagram *diagram) const; -public: - void cutFromModel(const MSelection &selection); - void cutFromDiagram(MDiagram *diagram); - void copyFromModel(const MSelection &selection); - void copyFromDiagram(const MDiagram *diagram); - void copyDiagram(const MDiagram *diagram); - - void pasteIntoModel(MObject *model_object); - + void pasteIntoModel(MObject *modelObject); void pasteIntoDiagram(MDiagram *diagram); - void deleteFromModel(const MSelection &selection); - void deleteFromDiagram(MDiagram *diagram); - void removeFromDiagram(MDiagram *diagram); - void selectAllOnDiagram(MDiagram *diagram); -public: - MPackage *createNewPackage(MPackage *); - MClass *createNewClass(MPackage *); - MComponent *createNewComponent(MPackage *); - MCanvasDiagram *createNewCanvasDiagram(MPackage *); -public: - MDiagram *findRootDiagram(); - MDiagram *findOrCreateRootDiagram(); -public: - - void createNewProject(const QString &file_name); - - void loadProject(const QString &file_name); + void createNewProject(const QString &fileName); + void loadProject(const QString &fileName); private: - - ProjectController *_project_controller; - - UndoController *_undo_controller; - - ModelController *_model_controller; - - DiagramController *_diagram_controller; - - DiagramSceneController *_diagram_scene_controller; - - StyleController *_style_controller; - - StereotypeController *_stereotype_controller; - - ConfigController *_config_controller; - - TreeModel *_tree_model; - - SortedTreeModel *_sorted_tree_model; - - DiagramsManager *_diagrams_manager; - - SceneInspector *_scene_inspector; - - QScopedPointer<MContainer> _model_clipboard; - - QScopedPointer<DContainer> _diagram_clipboard; - + ProjectController *m_projectController; + UndoController *m_undoController; + ModelController *m_modelController; + DiagramController *m_diagramController; + DiagramSceneController *m_diagramSceneController; + StyleController *m_styleController; + StereotypeController *m_stereotypeController; + ConfigController *m_configController; + TreeModel *m_treeModel; + SortedTreeModel *m_sortedTreeModel; + DiagramsManager *m_diagramsManager; + SceneInspector *m_sceneInspector; + QScopedPointer<MContainer> m_modelClipboard; + QScopedPointer<DContainer> m_diagramClipboard; }; -} +} // namespace qmt #endif // QMT_DOCUMENTCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.cpp b/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.cpp index e0476b879a..e35e1c0561 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.cpp +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.cpp @@ -34,13 +34,14 @@ namespace qmt { ContextMenuAction::ContextMenuAction(const QString &label, const QString &id, QObject *parent) : QAction(label, parent), - _id(id) + m_id(id) { } -ContextMenuAction::ContextMenuAction(const QString &label, const QString &id, const QKeySequence &shortcut, QObject *parent) +ContextMenuAction::ContextMenuAction(const QString &label, const QString &id, const QKeySequence &shortcut, + QObject *parent) : QAction(label, parent), - _id(id) + m_id(id) { setShortcut(shortcut); } @@ -49,4 +50,4 @@ ContextMenuAction::~ContextMenuAction() { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.h b/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.h index 3953a47610..66dc01cf95 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/contextmenuaction.h @@ -35,26 +35,20 @@ namespace qmt { -class ContextMenuAction : - public QAction +class ContextMenuAction : public QAction { public: - ContextMenuAction(const QString &label, const QString &id, QObject *parent = 0); - - ContextMenuAction(const QString &label, const QString &id, const QKeySequence &shortcut, QObject *parent = 0); - + ContextMenuAction(const QString &label, const QString &id, const QKeySequence &shortcut, + QObject *parent = 0); ~ContextMenuAction(); -public: - - QString getId() const { return _id; } + QString id() const { return m_id; } private: - - QString _id; + QString m_id; }; -} +} // namespace qmt #endif // QMT_CONTEXTMENUACTION_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.cpp b/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.cpp index 01ff77a887..2c0880962d 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.cpp +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.cpp @@ -30,19 +30,16 @@ #include "exceptions.h" - namespace qmt { -Exception::Exception(const QString &err_msg) - : _error_message(err_msg) +Exception::Exception(const QString &errorMessage) + : m_errorMessage(errorMessage) { } - - NullPointerException::NullPointerException() : Exception(QStringLiteral("unacceptable null object")) { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.h b/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.h index 361d5d3433..8f895cfba2 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/exceptions.h @@ -33,30 +33,26 @@ #include <QString> - namespace qmt { class Exception { public: - Exception(const QString &err_msg); - - QString getErrorMsg() const { return _error_message; } + Exception(const QString &errorMessage); - void setErrorMsg(const QString &err_msg) { _error_message = err_msg; } + QString errorMessage() const { return m_errorMessage; } + void setErrorMessage(const QString &errorMessage) { m_errorMessage = errorMessage; } private: - QString _error_message; + QString m_errorMessage; }; - -class NullPointerException : - public Exception +class NullPointerException : public Exception { public: NullPointerException(); }; -} +} // namespace qmt #endif // QMT_EXCEPTIONS_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.cpp b/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.cpp index 245a3079ee..6eb8c01764 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.cpp +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.cpp @@ -42,37 +42,35 @@ #include <qdebug.h> #include <limits> - template <typename T> inline int sgn(T val) { return (T(0) < val) - (val < T(0)); } - namespace qmt { GeometryUtilities::GeometryUtilities() { } -QLineF GeometryUtilities::stretch(const QLineF &line, double p1_extension, double p2_extension) +QLineF GeometryUtilities::stretch(const QLineF &line, double p1Extension, double p2Extension) { QLineF direction = line.unitVector(); - QPointF stretched_p1 = line.p1() - (direction.p2() - direction.p1()) * p1_extension; - QPointF stretched_p2 = line.p2() + (direction.p2() - direction.p1()) * p2_extension; - return QLineF(stretched_p1, stretched_p2); + QPointF stretchedP1 = line.p1() - (direction.p2() - direction.p1()) * p1Extension; + QPointF stretchedP2 = line.p2() + (direction.p2() - direction.p1()) * p2Extension; + return QLineF(stretchedP1, stretchedP2); } -bool GeometryUtilities::intersect(const QPolygonF &polygon, const QLineF &line, QPointF *intersection_point, QLineF *intersection_line) +bool GeometryUtilities::intersect(const QPolygonF &polygon, const QLineF &line, + QPointF *intersectionPoint, QLineF *intersectionLine) { for (int i = 0; i <= polygon.size() - 2; ++i) { - QLineF polygon_line(polygon.at(i), polygon.at(i+1)); - QLineF::IntersectType intersection_type = polygon_line.intersect(line, intersection_point); - if (intersection_type == QLineF::BoundedIntersection) { - if (intersection_line) { - *intersection_line = polygon_line; - } + QLineF polygonLine(polygon.at(i), polygon.at(i+1)); + QLineF::IntersectType intersectionType = polygonLine.intersect(line, intersectionPoint); + if (intersectionType == QLineF::BoundedIntersection) { + if (intersectionLine) + *intersectionLine = polygonLine; return true; } } @@ -81,9 +79,10 @@ bool GeometryUtilities::intersect(const QPolygonF &polygon, const QLineF &line, namespace { -struct Candidate { - Candidate() : third(GeometryUtilities::SIDE_UNSPECIFIED) { } - +class Candidate +{ +public: + Candidate() : third(GeometryUtilities::SideUnspecified) { } Candidate(const QVector2D &f, const QPointF &s, GeometryUtilities::Side t) : first(f), second(s), third(t) { } QVector2D first; @@ -93,63 +92,64 @@ struct Candidate { } -bool GeometryUtilities::placeRectAtLine(const QRectF &rect, const QLineF &line, double line_offset, double distance, const QLineF &intersection_line, QPointF *placement, Side *horizontal_aligned_side) +bool GeometryUtilities::placeRectAtLine(const QRectF &rect, const QLineF &line, double lineOffset, double distance, + const QLineF &intersectionLine, QPointF *placement, Side *horizontalAlignedSide) { QMT_CHECK(placement); QList<Candidate> candidates; - candidates << Candidate(QVector2D(rect.topRight() - rect.topLeft()), QPointF(0.0, 0.0), SIDE_TOP) - << Candidate(QVector2D(rect.topLeft() - rect.topRight()), rect.topRight() - rect.topLeft(), SIDE_TOP) - << Candidate(QVector2D(rect.bottomLeft() - rect.topLeft()), QPointF(0.0, 0.0), SIDE_LEFT) - << Candidate(QVector2D(rect.topLeft() - rect.bottomLeft()), rect.bottomLeft() - rect.topLeft(), SIDE_LEFT) - << Candidate(QVector2D(rect.bottomRight() - rect.bottomLeft()), rect.bottomLeft() - rect.topLeft(), SIDE_BOTTOM) - << Candidate(QVector2D(rect.bottomLeft() - rect.bottomRight()), rect.bottomRight() - rect.topLeft(), SIDE_BOTTOM) - << Candidate(QVector2D(rect.bottomRight() - rect.topRight()), rect.topRight() - rect.topLeft(), SIDE_RIGHT) - << Candidate(QVector2D(rect.topRight() - rect.bottomRight()), rect.bottomRight() - rect.topLeft(), SIDE_RIGHT); - - QVector<QVector2D> rect_edge_vectors; - rect_edge_vectors << QVector2D(rect.topLeft() - rect.topLeft()) - << QVector2D(rect.topRight() - rect.topLeft()) - << QVector2D(rect.bottomLeft() - rect.topLeft()) - << QVector2D(rect.bottomRight() -rect.topLeft()); - - QVector2D direction_vector(line.p2() - line.p1()); - direction_vector.normalize(); - - QVector2D side_vector(direction_vector.y(), -direction_vector.x()); - - QVector2D intersection_vector(intersection_line.p2() - intersection_line.p1()); - intersection_vector.normalize(); - - QVector2D outside_vector = QVector2D(intersection_vector.y(), -intersection_vector.x()); - double p = QVector2D::dotProduct(direction_vector, outside_vector); - if (p < 0.0) { - outside_vector = outside_vector * -1.0; - } - - double smallest_a = -1.0; - QPointF rect_translation; - Side side = SIDE_UNSPECIFIED; - int best_sign = 0; + candidates << Candidate(QVector2D(rect.topRight() - rect.topLeft()), QPointF(0.0, 0.0), SideTop) + << Candidate(QVector2D(rect.topLeft() - rect.topRight()), rect.topRight() - rect.topLeft(), SideTop) + << Candidate(QVector2D(rect.bottomLeft() - rect.topLeft()), QPointF(0.0, 0.0), SideLeft) + << Candidate(QVector2D(rect.topLeft() - rect.bottomLeft()), rect.bottomLeft() - rect.topLeft(), SideLeft) + << Candidate(QVector2D(rect.bottomRight() - rect.bottomLeft()), rect.bottomLeft() - rect.topLeft(), SideBottom) + << Candidate(QVector2D(rect.bottomLeft() - rect.bottomRight()), rect.bottomRight() - rect.topLeft(), SideBottom) + << Candidate(QVector2D(rect.bottomRight() - rect.topRight()), rect.topRight() - rect.topLeft(), SideRight) + << Candidate(QVector2D(rect.topRight() - rect.bottomRight()), rect.bottomRight() - rect.topLeft(), SideRight); + + QVector<QVector2D> rectEdgeVectors; + rectEdgeVectors << QVector2D(rect.topLeft() - rect.topLeft()) + << QVector2D(rect.topRight() - rect.topLeft()) + << QVector2D(rect.bottomLeft() - rect.topLeft()) + << QVector2D(rect.bottomRight() -rect.topLeft()); + + QVector2D directionVector(line.p2() - line.p1()); + directionVector.normalize(); + + QVector2D sideVector(directionVector.y(), -directionVector.x()); + + QVector2D intersectionVector(intersectionLine.p2() - intersectionLine.p1()); + intersectionVector.normalize(); + + QVector2D outsideVector = QVector2D(intersectionVector.y(), -intersectionVector.x()); + double p = QVector2D::dotProduct(directionVector, outsideVector); + if (p < 0.0) + outsideVector = outsideVector * -1.0; + + double smallestA = -1.0; + QPointF rectTranslation; + Side side = SideUnspecified; + int bestSign = 0; foreach (const Candidate &candidate, candidates) { - // solve equation a * direction_vector + candidate.first = b * intersection_vector to find smallest a - double r = direction_vector.x() * intersection_vector.y() - direction_vector.y() * intersection_vector.x(); + // solve equation a * directionVector + candidate.first = b * intersectionVector to find smallest a + double r = directionVector.x() * intersectionVector.y() - directionVector.y() * intersectionVector.x(); if (r <= -1e-5 || r >= 1e-5) { - double a = (candidate.first.y() * intersection_vector.x() - candidate.first.x() * intersection_vector.y()) / r; - if (a >= 0.0 && (smallest_a < 0.0 || a < smallest_a)) { + double a = (candidate.first.y() * intersectionVector.x() + - candidate.first.x() * intersectionVector.y()) / r; + if (a >= 0.0 && (smallestA < 0.0 || a < smallestA)) { // verify that all rectangle edges lay outside of shape (by checking for positiv projection to intersection) bool ok = true; int sign = 0; - QVector2D rect_origin_vector = direction_vector * a - QVector2D(candidate.second); - foreach (const QVector2D &rect_edge_vector, rect_edge_vectors) { - QVector2D edge_vector = rect_origin_vector + rect_edge_vector; - double aa = QVector2D::dotProduct(outside_vector, edge_vector); + QVector2D rectOriginVector = directionVector * a - QVector2D(candidate.second); + foreach (const QVector2D &rectEdgeVector, rectEdgeVectors) { + QVector2D edgeVector = rectOriginVector + rectEdgeVector; + double aa = QVector2D::dotProduct(outsideVector, edgeVector); if (aa < 0.0) { ok = false; break; } - int s = sgn(QVector2D::dotProduct(side_vector, edge_vector)); + int s = sgn(QVector2D::dotProduct(sideVector, edgeVector)); if (s) { if (sign) { if (s != sign) { @@ -162,43 +162,42 @@ bool GeometryUtilities::placeRectAtLine(const QRectF &rect, const QLineF &line, } } if (ok) { - smallest_a = a; - rect_translation = candidate.second; + smallestA = a; + rectTranslation = candidate.second; side = candidate.third; - best_sign = sign; + bestSign = sign; } } } } - if (horizontal_aligned_side) { + if (horizontalAlignedSide) { // convert side into a horizontal side depending on placement relative to direction vector switch (side) { - case SIDE_TOP: - side = best_sign == -1 ? SIDE_RIGHT : SIDE_LEFT; + case SideTop: + side = bestSign == -1 ? SideRight : SideLeft; break; - case SIDE_BOTTOM: - side = best_sign == -1 ? SIDE_LEFT : SIDE_RIGHT; + case SideBottom: + side = bestSign == -1 ? SideLeft : SideRight; break; default: break; } - *horizontal_aligned_side = side; + *horizontalAlignedSide = side; } - if (smallest_a < 0.0) { + if (smallestA < 0.0) return false; - } - *placement = line.p1() + (direction_vector * (smallest_a + line_offset)).toPointF() + (side_vector * (best_sign * distance)).toPointF() - rect_translation; + *placement = line.p1() + (directionVector * (smallestA + lineOffset)).toPointF() + + (sideVector * (bestSign * distance)).toPointF() - rectTranslation; return true; } double GeometryUtilities::calcAngle(const QLineF &line) { - QVector2D direction_vector(line.p2() - line.p1()); - direction_vector.normalize(); - double angle = qAcos(direction_vector.x()) * 180.0 / 3.1415926535; - if (direction_vector.y() > 0.0) { + QVector2D directionVector(line.p2() - line.p1()); + directionVector.normalize(); + double angle = qAcos(directionVector.x()) * 180.0 / 3.1415926535; + if (directionVector.y() > 0.0) angle = -angle; - } return angle; } @@ -215,12 +214,11 @@ double GeometryUtilities::calcDistancePointToLine(const QPointF &point, const QL { QVector2D p(point); QVector2D a(line.p1()); - QVector2D direction_vector(line.p2() - line.p1()); - qreal r = -((a - p) & direction_vector) / direction_vector.lengthSquared(); - if (r < 0.0 || r > 1.0) { + QVector2D directionVector(line.p2() - line.p1()); + qreal r = -((a - p) & directionVector) / directionVector.lengthSquared(); + if (r < 0.0 || r > 1.0) return std::numeric_limits<float>::quiet_NaN(); - } - qreal d = (a + r * direction_vector - p).length(); + qreal d = (a + r * directionVector - p).length(); return d; } @@ -228,9 +226,9 @@ QPointF GeometryUtilities::calcProjection(const QLineF &line, const QPointF &poi { QVector2D p(point); QVector2D a(line.p1()); - QVector2D direction_vector(line.p2() - line.p1()); - qreal r = -((a - p) & direction_vector) / direction_vector.lengthSquared(); - return (a + r * direction_vector).toPointF(); + QVector2D directionVector(line.p2() - line.p1()); + qreal r = -((a - p) & directionVector) / directionVector.lengthSquared(); + return (a + r * directionVector).toPointF(); } QPointF GeometryUtilities::calcPrimaryAxisDirection(const QLineF &line) @@ -238,17 +236,15 @@ QPointF GeometryUtilities::calcPrimaryAxisDirection(const QLineF &line) qreal xAbs = qAbs(line.dx()); qreal yAbs = qAbs(line.dy()); if (yAbs > xAbs) { - if (line.dy() >= 0.0) { + if (line.dy() >= 0.0) return QPointF(0.0, 1.0); - } else { + else return QPointF(0.0, -1.0); - } } else { - if (line.dx() >= 0.0) { + if (line.dx() >= 0.0) return QPointF(1.0, 0.0); - } else { + else return QPointF(-1.0, 0.0); - } } } @@ -257,36 +253,35 @@ QPointF GeometryUtilities::calcSecondaryAxisDirection(const QLineF &line) qreal xAbs = qAbs(line.dx()); qreal yAbs = qAbs(line.dy()); if (yAbs > xAbs) { - if (line.dx() >= 0.0) { + if (line.dx() >= 0.0) return QPointF(1.0, 0.0); - } else { + else return QPointF(-1.0, 0.0); - } } else { - if (line.dy() >= 0.0) { + if (line.dy() >= 0.0) return QPointF(0.0, 1.0); - } else { + else return QPointF(0.0, -1.0); - } } } -void GeometryUtilities::adjustPosAndRect(QPointF *pos, QRectF *rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta, const QPointF &relative_alignment) +void GeometryUtilities::adjustPosAndRect(QPointF *pos, QRectF *rect, const QPointF &topLeftDelta, + const QPointF &bottomRightDelta, const QPointF &relativeAlignment) { - *pos += QPointF(top_left_delta.x() * (1.0 - relative_alignment.x()) + bottom_right_delta.x() * relative_alignment.x(), - top_left_delta.y() * (1.0 - relative_alignment.y()) + bottom_right_delta.y() * relative_alignment.y()); - rect->adjust(top_left_delta.x() * relative_alignment.x() - bottom_right_delta.x() * relative_alignment.x(), - top_left_delta.y() * relative_alignment.y() - bottom_right_delta.y() * relative_alignment.y(), - bottom_right_delta.x() * (1.0 - relative_alignment.x()) - top_left_delta.x() * (1.0 - relative_alignment.x()), - bottom_right_delta.y() * (1.0 - relative_alignment.y()) - top_left_delta.y() * (1.0 - relative_alignment.y())); + *pos += QPointF(topLeftDelta.x() * (1.0 - relativeAlignment.x()) + bottomRightDelta.x() * relativeAlignment.x(), + topLeftDelta.y() * (1.0 - relativeAlignment.y()) + bottomRightDelta.y() * relativeAlignment.y()); + rect->adjust(topLeftDelta.x() * relativeAlignment.x() - bottomRightDelta.x() * relativeAlignment.x(), + topLeftDelta.y() * relativeAlignment.y() - bottomRightDelta.y() * relativeAlignment.y(), + bottomRightDelta.x() * (1.0 - relativeAlignment.x()) - topLeftDelta.x() * (1.0 - relativeAlignment.x()), + bottomRightDelta.y() * (1.0 - relativeAlignment.y()) - topLeftDelta.y() * (1.0 - relativeAlignment.y())); } -QSizeF GeometryUtilities::ensureMinimumRasterSize(const QSizeF &size, double raster_width, double raster_height) +QSizeF GeometryUtilities::ensureMinimumRasterSize(const QSizeF &size, double rasterWidth, double rasterHeight) { - double width = int(size.width() / raster_width + 0.99999) * raster_width; - double height = int(size.height() / raster_height + 0.99999) * raster_height; + double width = int(size.width() / rasterWidth + 0.99999) * rasterWidth; + double height = int(size.height() / rasterHeight + 0.99999) * rasterHeight; return QSizeF(width, height); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.h b/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.h index 0e586b81a6..d75e3e2e7c 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/geometryutilities.h @@ -41,7 +41,6 @@ class QRectF; class QSizeF; QT_END_NAMESPACE - namespace qmt { class GeometryUtilities @@ -50,39 +49,31 @@ private: GeometryUtilities(); public: - enum Side { - SIDE_UNSPECIFIED, - SIDE_TOP, - SIDE_BOTTOM, - SIDE_LEFT, - SIDE_RIGHT + SideUnspecified, + SideTop, + SideBottom, + SideLeft, + SideRight }; -public: - - static QLineF stretch(const QLineF &line, double p1_extension, double p2_extension); - - static bool intersect(const QPolygonF &polygon, const QLineF &line, QPointF *intersection_point, QLineF *intersection_line = 0); - - static bool placeRectAtLine(const QRectF &rect, const QLineF &line, double line_offset, double distance, const QLineF &intersection_line, QPointF *placement, Side *horizontal_aligned_side); - + static QLineF stretch(const QLineF &line, double p1Extension, double p2Extension); + static bool intersect(const QPolygonF &polygon, const QLineF &line, + QPointF *intersectionPoint, QLineF *intersectionLine = 0); + static bool placeRectAtLine(const QRectF &rect, const QLineF &line, double lineOffset, + double distance, const QLineF &intersectionLine, QPointF *placement, + Side *horizontalAlignedSide); static double calcAngle(const QLineF &line); - static double calcDistancePointToLine(const QPointF &point, const QLineF &line); - static QPointF calcProjection(const QLineF &line, const QPointF &point); - static QPointF calcPrimaryAxisDirection(const QLineF &line); - static QPointF calcSecondaryAxisDirection(const QLineF &line); - - static void adjustPosAndRect(QPointF *pos, QRectF *rect, const QPointF &top_left_delta, const QPointF &bottom_right_delta, - const QPointF &relative_alignment); - - static QSizeF ensureMinimumRasterSize(const QSizeF &size, double raster_width, double raster_height); + static void adjustPosAndRect(QPointF *pos, QRectF *rect, const QPointF &topLeftDelta, + const QPointF &bottomRightDelta, const QPointF &relativeAlignment); + static QSizeF ensureMinimumRasterSize(const QSizeF &size, double rasterWidth, + double rasterHeight); }; -} +} // namespace qmt #endif // QMT_GEOMETRYUTILITIES_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/handle.h b/src/libs/3rdparty/modeling/qmt/infrastructure/handle.h index c546c56979..f930fbb4de 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/handle.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/handle.h @@ -40,55 +40,57 @@ template<class T> class Handle { public: - - Handle() : _target(0) { } - - explicit Handle(const Uid &uid) : _uid(uid), _target(0) { } - - explicit Handle(T *t) : _uid(t ? t->getUid() : Uid()), _target(t) { } - - Handle(const Handle &rhs) : _uid(rhs._uid), _target(rhs._target) { } - + Handle() : m_target(0) { } + explicit Handle(const Uid &uid) : m_uid(uid), m_target(0) { } + explicit Handle(T *t) : m_uid(t ? t->uid() : Uid()), m_target(t) { } + Handle(const Handle &rhs) : m_uid(rhs.m_uid), m_target(rhs.m_target) { } template<class U> - Handle(const Handle<U> &rhs) : _uid(rhs.getUid()), _target(rhs.getTarget()) { } - -public: - - bool isNull() const { return !_uid.isValid(); } + Handle(const Handle<U> &rhs) : m_uid(rhs.uid()), m_target(rhs.target()) { } - bool hasTarget() const { return _target != 0; } + bool isNull() const { return !m_uid.isValid(); } + bool hasTarget() const { return m_target != 0; } + Uid uid() const { return m_uid; } + T *target() const { return m_target; } - Uid getUid() const { return _uid; } - - T *getTarget() const { return _target; } - - void setUid(const Uid &uid) { QMT_CHECK(_target != 0 ? (_target->getUid() == uid) : true); _uid = uid; } + void setUid(const Uid &uid) + { + QMT_CHECK(m_target != 0 ? (m_target->uid() == uid) : true); + m_uid = uid; + } - void setTarget(T *t) { _uid = t ? t->getUid() : Uid(); _target = t; } + void setTarget(T *t) + { + m_uid = t ? t->uid() : Uid(); + m_target = t; + } - void clear() { _uid = Uid(); _target = 0; } + void clear() + { + m_uid = Uid(); + m_target = 0; + } - void clearTarget() { _target = 0; } + void clearTarget() { m_target = 0; } private: - Uid _uid; - T *_target; + Uid m_uid; + T *m_target; }; template<class T> inline int qHash(const Handle<T> &handle) { - return qHash(handle.getUid()); + return qHash(handle.uid()); } template<class T, class U> bool operator==(const Handle<T> &lhs, const Handle<U> &rhs) { - return lhs.getUid() == rhs.getUid(); + return lhs.uid() == rhs.uid(); } template<class T> -Handle<T> make_handle(T *t) +Handle<T> makeHandle(T *t) { return Handle<T>(t); } @@ -96,12 +98,11 @@ Handle<T> make_handle(T *t) template<class T, class U> Handle<T> handle_dynamic_cast(const Handle<U> &handle) { - if (!handle.hasTarget()) { - return Handle<T>(handle.getUid()); - } - return Handle<T>(dynamic_cast<T *>(handle.getTarget())); + if (!handle.hasTarget()) + return Handle<T>(handle.uid()); + return Handle<T>(dynamic_cast<T *>(handle.target())); } -} +} // namespace qmt #endif // QMT_HANDLE_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/handles.h b/src/libs/3rdparty/modeling/qmt/infrastructure/handles.h index 3dd9e804de..cc93d212a1 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/handles.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/handles.h @@ -37,37 +37,30 @@ #include <QList> #include <QHash> - namespace qmt { template<typename T> class Handles { public: + typedef QList<Handle<T> > value_type; + typedef typename value_type::iterator iterator; + typedef typename value_type::const_iterator const_iterator; - typedef QList<Handle<T> > type; - - typedef typename type::iterator iterator; - - typedef typename type::const_iterator const_iterator; - -public: - - explicit Handles(bool take_ownership = false) : _take_ownership(take_ownership) { } + explicit Handles(bool takeOwnership = false) : m_takesOwnership(takeOwnership) { } Handles(const Handles<T> &rhs) - : _handle_list(rhs._handle_list), - _take_ownership(false) + : m_handleList(rhs.m_handleList), + m_takesOwnership(false) { } - Handles(const Handles<T> &rhs, bool take_ownership) - : _handle_list(rhs._handle_list), - _take_ownership(take_ownership) + Handles(const Handles<T> &rhs, bool takeOwnership) + : m_handleList(rhs.m_handleList), + m_takesOwnership(takeOwnership) { - if (_take_ownership && rhs._take_ownership) { - const_cast<Handles<T> &>(rhs)._handle_list.clear(); - } + if (m_takesOwnership && rhs.m_takesOwnership) + const_cast<Handles<T> &>(rhs).m_handleList.clear(); } ~Handles() @@ -75,33 +68,25 @@ public: reset(); } -public: - Handles<T> operator=(const Handles<T> &rhs) { if (this != &rhs) { - _handle_list = rhs._handle_list; - if (_take_ownership && rhs._take_ownership) { - const_cast<Handles<T> &>(rhs)._handle_list.clear(); - } + m_handleList = rhs.m_handleList; + if (m_takesOwnership && rhs.m_takesOwnership) + const_cast<Handles<T> &>(rhs).m_handleList.clear(); } return *this; } -public: - - bool takesOwnership() const { return _take_ownership; } - - bool isEmpty() const { return _handle_list.empty(); } - - int size() const { return _handle_list.size(); } + bool takesOwnership() const { return m_takesOwnership; } + bool isEmpty() const { return m_handleList.empty(); } + int size() const { return m_handleList.size(); } bool contains(const Uid &uid) const { - foreach (const Handle<T> &handle, _handle_list) { - if (handle.getUid() == uid) { + foreach (const Handle<T> &handle, m_handleList) { + if (handle.uid() == uid) return true; - } } return false; } @@ -109,38 +94,36 @@ public: bool contains(const T *t) const { QMT_CHECK(t); - return contains(t->getUid()); + return contains(t->uid()); } T *find(const Uid &uid) const { - foreach (const Handle<T> &handle, _handle_list) { - if (handle.getUid() == uid) { - return handle.getTarget(); - } + foreach (const Handle<T> &handle, m_handleList) { + if (handle.uid() == uid) + return handle.target(); } return 0; } T *at(int index) const { - QMT_CHECK(index >= 0 && index < _handle_list.size()); - return _handle_list.at(index).getTarget(); + QMT_CHECK(index >= 0 && index < m_handleList.size()); + return m_handleList.at(index).target(); } T *at(int index) { - QMT_CHECK(index >= 0 && index < _handle_list.size()); - return _handle_list.at(index); + QMT_CHECK(index >= 0 && index < m_handleList.size()); + return m_handleList.at(index); } int indexOf(const Uid &uid) const { int index = 0; - foreach (const Handle<T> &handle, _handle_list) { - if (handle.getUid() == uid) { + foreach (const Handle<T> &handle, m_handleList) { + if (handle.uid() == uid) return index; - } ++index; } return -1; @@ -149,81 +132,72 @@ public: int indexOf(const T *t) const { QMT_CHECK(t); - return indexOf(t->getUid()); + return indexOf(t->uid()); } -public: - - const type &get() const { return _handle_list; } + const value_type &get() const { return m_handleList; } - type take() + value_type take() { - type handles = _handle_list; - _handle_list.clear(); + value_type handles = m_handleList; + m_handleList.clear(); return handles; } - void set(const type &handles) { + void set(const value_type &handles) { reset(); - _handle_list = handles; + m_handleList = handles; } void reset() { - if (_take_ownership) { - foreach (const Handle<T> &handle, _handle_list) { - delete handle.getTarget(); - } + if (m_takesOwnership) { + foreach (const Handle<T> &handle, m_handleList) + delete handle.target(); } - _handle_list.clear(); + m_handleList.clear(); } -public: - iterator begin() { return _handle_list.begin(); } - - iterator end() { return _handle_list.end(); } - - const_iterator begin() const { return _handle_list.begin(); } - - const_iterator end() const { return _handle_list.end(); } - -public: + iterator begin() { return m_handleList.begin(); } + iterator end() { return m_handleList.end(); } + const_iterator begin() const { return m_handleList.begin(); } + const_iterator end() const { return m_handleList.end(); } void add(const Uid &uid) { QMT_CHECK(uid.isValid()); - _handle_list.append(Handle<T>(uid)); + m_handleList.append(Handle<T>(uid)); } void add(T *t) { QMT_CHECK(t); - _handle_list.append(Handle<T>(t)); + m_handleList.append(Handle<T>(t)); } - void insert(int before_index, const Uid &uid) + void insert(int beforeIndex, const Uid &uid) { - QMT_CHECK(before_index >= 0 && before_index <= _handle_list.size()); + QMT_CHECK(beforeIndex >= 0 && beforeIndex <= m_handleList.size()); QMT_CHECK(uid.isValid()); - _handle_list.insert(before_index, Handle<T>(uid)); + m_handleList.insert(beforeIndex, Handle<T>(uid)); } - void insert(int before_index, T *t) + void insert(int beforeIndex, T *t) { - QMT_CHECK(before_index >= 0 && before_index <= _handle_list.size()); + QMT_CHECK(beforeIndex >= 0 && beforeIndex <= m_handleList.size()); QMT_CHECK(t); - _handle_list.insert(before_index, Handle<T>(t)); + m_handleList.insert(beforeIndex, Handle<T>(t)); } void remove(int index) { QMT_CHECK(index >= 0 && index < size()); - if (_take_ownership) { - T *t = _handle_list.at(index).getTarget(); - _handle_list.removeAt(index); + if (m_takesOwnership) { + T *t = m_handleList.at(index).target(); + m_handleList.removeAt(index); delete t; } else { - _handle_list.removeAt(index); + m_handleList.removeAt(index); } } @@ -241,8 +215,8 @@ public: T * take(int index) { QMT_CHECK(index >= 0 && index < size()); - T *t = _handle_list.at(index).getTarget(); - _handle_list.removeAt(index); + T *t = m_handleList.at(index).target(); + m_handleList.removeAt(index); return t; } @@ -258,10 +232,8 @@ public: } private: - - type _handle_list; - - bool _take_ownership; + value_type m_handleList; + bool m_takesOwnership; }; template<typename T> @@ -273,6 +245,6 @@ bool operator==(const Handles<T> &lhs, const Handles<T> &rhs) template<typename T> bool operator!=(const Handles<T> &lhs, const Handles<T> &rhs) { return !(lhs == rhs); } -} +} // namespace qmt #endif // QMT_HANDLES_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.cpp b/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.cpp index 16abd4fa5b..7521234cce 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.cpp +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.cpp @@ -32,47 +32,47 @@ namespace qmt { -IOException::IOException(const QString &error_msg) - : Exception(error_msg) +IOException::IOException(const QString &errorMsg) + : Exception(errorMsg) { } -FileIOException::FileIOException(const QString &error_msg, const QString &file_name, int line_number) - : IOException(error_msg), - _file_name(file_name), - _line_number(line_number) +FileIOException::FileIOException(const QString &errorMsg, const QString &fileName, int lineNumber) + : IOException(errorMsg), + m_fileName(fileName), + m_lineNumber(lineNumber) { } -FileNotFoundException::FileNotFoundException(const QString &file_name) - : FileIOException(QStringLiteral("file not found"), file_name) +FileNotFoundException::FileNotFoundException(const QString &fileName) + : FileIOException(QStringLiteral("file not found"), fileName) { } -FileCreationException::FileCreationException(const QString &file_name) - : FileIOException(QStringLiteral("unable to create file"), file_name) +FileCreationException::FileCreationException(const QString &fileName) + : FileIOException(QStringLiteral("unable to create file"), fileName) { } -FileWriteError::FileWriteError(const QString &file_name, int line_number) - : FileIOException(QStringLiteral("writing to file failed"), file_name, line_number) +FileWriteError::FileWriteError(const QString &fileName, int lineNumber) + : FileIOException(QStringLiteral("writing to file failed"), fileName, lineNumber) { } -FileReadError::FileReadError(const QString &file_name, int line_number) - : FileIOException(QStringLiteral("reading from file failed"), file_name, line_number) +FileReadError::FileReadError(const QString &fileName, int lineNumber) + : FileIOException(QStringLiteral("reading from file failed"), fileName, lineNumber) { } -IllegalXmlFile::IllegalXmlFile(const QString &file_name, int line_number) - : FileIOException(QStringLiteral("illegal xml file"), file_name, line_number) +IllegalXmlFile::IllegalXmlFile(const QString &fileName, int lineNumber) + : FileIOException(QStringLiteral("illegal xml file"), fileName, lineNumber) { } -UnknownFileVersion::UnknownFileVersion(int version, const QString &file_name, int line_number) - : FileIOException(QString(QStringLiteral("unable to handle file version %1")).arg(version), file_name, line_number) +UnknownFileVersion::UnknownFileVersion(int version, const QString &fileName, int lineNumber) + : FileIOException(QString(QStringLiteral("unable to handle file version %1")).arg(version), fileName, lineNumber) { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.h b/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.h index 8957721601..b355dc9d01 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/ioexceptions.h @@ -33,73 +33,64 @@ #include "exceptions.h" - namespace qmt { -class IOException : - public Exception +class IOException : public Exception { public: - explicit IOException(const QString &error_msg); + explicit IOException(const QString &errorMsg); }; -class FileIOException : - public IOException +class FileIOException : public IOException { public: - explicit FileIOException(const QString &error_msg, const QString &file_name = QString::null, int line_number = -1); - - QString getFileName() const { return _file_name; } + explicit FileIOException(const QString &errorMsg, const QString &fileName = QString::null, + int lineNumber = -1); - int getLineNumber() const { return _line_number; } + QString fileName() const { return m_fileName; } + int lineNumber() const { return m_lineNumber; } private: - QString _file_name; - int _line_number; + QString m_fileName; + int m_lineNumber; }; -class FileNotFoundException : - public FileIOException +class FileNotFoundException : public FileIOException { public: - explicit FileNotFoundException(const QString &file_name); + explicit FileNotFoundException(const QString &fileName); }; -class FileCreationException : - public FileIOException +class FileCreationException : public FileIOException { public: - explicit FileCreationException(const QString &file_name); + explicit FileCreationException(const QString &fileName); }; -class FileWriteError : - public FileIOException +class FileWriteError : public FileIOException { public: - explicit FileWriteError(const QString &file_name, int line_number = -1); + explicit FileWriteError(const QString &fileName, int lineNumber = -1); }; -class FileReadError : - public FileIOException +class FileReadError : public FileIOException { public: - explicit FileReadError(const QString &file_name, int line_number = -1); + explicit FileReadError(const QString &fileName, int lineNumber = -1); }; -class IllegalXmlFile : - public FileIOException +class IllegalXmlFile : public FileIOException { public: - IllegalXmlFile(const QString &file_name, int line_number = -1); + IllegalXmlFile(const QString &fileName, int lineNumber = -1); }; -class UnknownFileVersion : - public FileIOException +class UnknownFileVersion : public FileIOException { public: - UnknownFileVersion(int version, const QString &file_name, int line_number = -1); + UnknownFileVersion(int version, const QString &fileName, int lineNumber = -1); }; -} +} // namespace qmt #endif // QMT_IOEXCEPTIONS_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.cpp b/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.cpp index 5c8a9c68c5..6ba28b306f 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.cpp +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.cpp @@ -38,17 +38,17 @@ namespace qmt { QCompressedDevice::QCompressedDevice(QObject *parent) : QIODevice(parent), - _target_device(0), - _bytes_in_buffer(0), - _index_in_buffer(0) + m_targetDevice(0), + m_bytesInBuffer(0), + m_indexInBuffer(0) { } -QCompressedDevice::QCompressedDevice(QIODevice *target_device, QObject *parent) +QCompressedDevice::QCompressedDevice(QIODevice *targetDevice, QObject *parent) : QIODevice(parent), - _target_device(target_device), - _bytes_in_buffer(0), - _index_in_buffer(0) + m_targetDevice(targetDevice), + m_bytesInBuffer(0), + m_indexInBuffer(0) { } @@ -57,9 +57,9 @@ QCompressedDevice::~QCompressedDevice() flush(); } -void QCompressedDevice::setTargetDevice(QIODevice *target_device) +void QCompressedDevice::setTargetDevice(QIODevice *targetDevice) { - _target_device = target_device; + m_targetDevice = targetDevice; } void QCompressedDevice::close() @@ -70,66 +70,61 @@ void QCompressedDevice::close() qint64 QCompressedDevice::readData(char *data, qint64 maxlen) { - QMT_CHECK(_target_device); - QMT_CHECK(_target_device->isOpen()); - QMT_CHECK(_target_device->openMode() == QIODevice::ReadOnly); + QMT_CHECK(m_targetDevice); + QMT_CHECK(m_targetDevice->isOpen()); + QMT_CHECK(m_targetDevice->openMode() == QIODevice::ReadOnly); - if (_bytes_in_buffer == 0) { - QByteArray compressed_buffer; - int compressed_len = 0; - if (_target_device->read((char *) &compressed_len, sizeof(int)) != sizeof(int)) { + if (m_bytesInBuffer == 0) { + QByteArray compressedBuffer; + int compressedLen = 0; + if (m_targetDevice->read(reinterpret_cast<char *>(&compressedLen), sizeof(int)) != sizeof(int)) return -1; - } - compressed_buffer.resize(compressed_len); - qint64 compressed_bytes = _target_device->read(compressed_buffer.data(), compressed_len); - _buffer = qUncompress((const uchar *) compressed_buffer.data(), compressed_bytes); - _bytes_in_buffer = _buffer.size(); - if (_bytes_in_buffer == 0) { + compressedBuffer.resize(compressedLen); + qint64 compressedBytes = m_targetDevice->read(compressedBuffer.data(), compressedLen); + m_buffer = qUncompress((const uchar *) compressedBuffer.data(), compressedBytes); + m_bytesInBuffer = m_buffer.size(); + if (m_bytesInBuffer == 0) return 0; - } - _index_in_buffer = 0; + m_indexInBuffer = 0; } - qint64 n = std::min(maxlen, _bytes_in_buffer); - memcpy(data, _buffer.data() + _index_in_buffer, n); - _bytes_in_buffer -= n; - _index_in_buffer += n; + qint64 n = std::min(maxlen, m_bytesInBuffer); + memcpy(data, m_buffer.data() + m_indexInBuffer, n); + m_bytesInBuffer -= n; + m_indexInBuffer += n; return n; } qint64 QCompressedDevice::writeData(const char *data, qint64 len) { - QMT_CHECK(_target_device); - QMT_CHECK(_target_device->isOpen()); - QMT_CHECK(_target_device->openMode() == QIODevice::WriteOnly); + QMT_CHECK(m_targetDevice); + QMT_CHECK(m_targetDevice->isOpen()); + QMT_CHECK(m_targetDevice->openMode() == QIODevice::WriteOnly); - _buffer.append(data, len); - if (_buffer.size() > 1024*1024) { - QByteArray compressed_buffer = qCompress(_buffer); - int compressed_len = (int) compressed_buffer.size(); - if (_target_device->write((const char *) &compressed_len, sizeof(int)) != sizeof(int)) { + m_buffer.append(data, len); + if (m_buffer.size() > 1024*1024) { + QByteArray compressedBuffer = qCompress(m_buffer); + int compressedLen = static_cast<int>(compressedBuffer.size()); + if (m_targetDevice->write(reinterpret_cast<const char *>(&compressedLen), sizeof(int)) != sizeof(int)) return -1; - } - if (_target_device->write(compressed_buffer.data(), compressed_len) != compressed_buffer.size()) { + if (m_targetDevice->write(compressedBuffer.data(), compressedLen) != compressedBuffer.size()) return -1; - } - _buffer.clear(); + m_buffer.clear(); } return len; } qint64 QCompressedDevice::flush() { - if (openMode() == QIODevice::WriteOnly && _buffer.size() > 0) { - QMT_CHECK(_target_device->isOpen()); - QMT_CHECK(_target_device->openMode() == QIODevice::WriteOnly); - QByteArray compressed_buffer = qCompress(_buffer); - int compressed_len = (int) compressed_buffer.size(); - if (_target_device->write((const char *) &compressed_len, sizeof(int)) != sizeof(int)) { + if (openMode() == QIODevice::WriteOnly && m_buffer.size() > 0) { + QMT_CHECK(m_targetDevice->isOpen()); + QMT_CHECK(m_targetDevice->openMode() == QIODevice::WriteOnly); + QByteArray compressedBuffer = qCompress(m_buffer); + int compressedLen = static_cast<int>(compressedBuffer.size()); + if (m_targetDevice->write(reinterpret_cast<const char *>(&compressedLen), sizeof(int)) != sizeof(int)) return -1; - } - return _target_device->write(compressed_buffer.data(), compressed_len); + return m_targetDevice->write(compressedBuffer.data(), compressedLen); } return 0; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.h b/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.h index b241e97911..e7b5258f6a 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/qcompressedfile.h @@ -36,51 +36,34 @@ namespace qmt { -class QCompressedDevice : - public QIODevice +class QCompressedDevice : public QIODevice { Q_OBJECT public: - explicit QCompressedDevice(QObject *parent = 0); - - explicit QCompressedDevice(QIODevice *target_device, QObject *parent = 0); - + explicit QCompressedDevice(QIODevice *targetDevice, QObject *parent = 0); ~QCompressedDevice(); -public: - - QIODevice *targetDevice() const { return _target_device; } - - void setTargetDevice(QIODevice *target_device); - -public: + QIODevice *targetDevice() const { return m_targetDevice; } + void setTargetDevice(QIODevice *targetDevice); void close(); protected: - qint64 readData(char *data, qint64 maxlen); - qint64 writeData(const char *data, qint64 len); public: - qint64 flush(); private: - - QIODevice *_target_device; - - QByteArray _buffer; - - qint64 _bytes_in_buffer; - - qint64 _index_in_buffer; - + QIODevice *m_targetDevice; + QByteArray m_buffer; + qint64 m_bytesInBuffer; + qint64 m_indexInBuffer; }; -} +} // namespace qmt #endif // QCOMPRESSEDDEVICE_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/qmtassert.h b/src/libs/3rdparty/modeling/qmt/infrastructure/qmtassert.h index d6353a2fea..1cf9b18d69 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/qmtassert.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/qmtassert.h @@ -1,10 +1,11 @@ #ifndef QMT_QMTASSERT_H #define QMT_QMTASSERT_H -// TODO implement with QTC_ASSERT when lib is translated into QtCreator style +#include "utils/qtcassert.h" -// implement with Q_ASSERT and Q_ASSERT_X locally during debugging but do not submit! -#define QMT_CHECK(condition) -#define QMT_CHECK_X(condition, where, what) +// TODO extend with parameter action +#define QMT_CHECK(condition) QTC_CHECK(condition) +// TODO implement logging of where and what +#define QMT_CHECK_X(condition, where, what) QTC_CHECK(condition) #endif // QMT_QMTASSERT_H diff --git a/src/libs/3rdparty/modeling/qmt/infrastructure/uid.h b/src/libs/3rdparty/modeling/qmt/infrastructure/uid.h index cbee85a531..86bf9f1528 100644 --- a/src/libs/3rdparty/modeling/qmt/infrastructure/uid.h +++ b/src/libs/3rdparty/modeling/qmt/infrastructure/uid.h @@ -37,36 +37,28 @@ #include <QUuid> #include <QMetaType> - namespace qmt { class QMT_EXPORT Uid { public: + static const Uid invalidUid() { return Uid(QUuid()); } - static const Uid getInvalidUid() { return Uid(QUuid()); } - -public: - Uid() : _uuid(QUuid::createUuid()) { } - - explicit Uid(const QUuid &uuid) : _uuid(uuid) { } - - bool isValid() const { return !_uuid.isNull(); } + Uid() : m_uuid(QUuid::createUuid()) { } + explicit Uid(const QUuid &uuid) : m_uuid(uuid) { } - QUuid get() const { return _uuid; } + bool isValid() const { return !m_uuid.isNull(); } + QUuid get() const { return m_uuid; } + void setUuid(const QUuid &uuid) { m_uuid = uuid; } - void setUuid(const QUuid &uuid) { _uuid = uuid; } + void clear() { m_uuid = QUuid(); } + void renew() { m_uuid = QUuid::createUuid(); } - void clear() { _uuid = QUuid(); } - - void renew() { _uuid = QUuid::createUuid(); } - - QString toString() const { return _uuid.toString(); } - - void fromString(const QString &s) { _uuid = QUuid(s); } + QString toString() const { return m_uuid.toString(); } + void fromString(const QString &s) { m_uuid = QUuid(s); } private: - QUuid _uuid; + QUuid m_uuid; }; inline uint qHash(const Uid &uid) @@ -97,7 +89,7 @@ inline QDataStream &operator>>(QDataStream &stream, Uid &uid) return stream; } -} +} // namespace qmt Q_DECLARE_METATYPE(qmt::Uid) diff --git a/src/libs/3rdparty/modeling/qmt/model/massociation.cpp b/src/libs/3rdparty/modeling/qmt/model/massociation.cpp index 2d82301cfb..d8cca9397e 100644 --- a/src/libs/3rdparty/modeling/qmt/model/massociation.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/massociation.cpp @@ -33,20 +33,19 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MAssociationEnd::MAssociationEnd() - : _kind(ASSOCIATION), - _navigable(false) + : m_kind(Association), + m_isNavigable(false) { } MAssociationEnd::MAssociationEnd(const MAssociationEnd &rhs) - : _name(rhs._name), - _cardinality(rhs._cardinality), - _kind(rhs._kind), - _navigable(rhs._navigable) + : m_name(rhs.m_name), + m_cardinality(rhs.m_cardinality), + m_kind(rhs.m_kind), + m_isNavigable(rhs.m_isNavigable) { } @@ -57,46 +56,45 @@ MAssociationEnd::~MAssociationEnd() MAssociationEnd &MAssociationEnd::operator =(const MAssociationEnd &rhs) { if (this != &rhs) { - _name = rhs._name; - _cardinality = rhs._cardinality; - _kind = rhs._kind; - _navigable = rhs._navigable; + m_name = rhs.m_name; + m_cardinality = rhs.m_cardinality; + m_kind = rhs.m_kind; + m_isNavigable = rhs.m_isNavigable; } return *this; } void MAssociationEnd::setName(const QString &name) { - _name = name; + m_name = name; } void MAssociationEnd::setCardinality(const QString &cardinality) { - _cardinality = cardinality; + m_cardinality = cardinality; } void MAssociationEnd::setKind(MAssociationEnd::Kind kind) { - _kind = kind; + m_kind = kind; } void MAssociationEnd::setNavigable(bool navigable) { - _navigable = navigable; + m_isNavigable = navigable; } bool operator==(const MAssociationEnd &lhs, const MAssociationEnd &rhs) { - return lhs.getName() == rhs.getName() - && lhs.getCardinality() == rhs.getCardinality() - && lhs.getKind() == rhs.getKind() + return lhs.name() == rhs.name() + && lhs.cardinality() == rhs.cardinality() + && lhs.kind() == rhs.kind() && lhs.isNavigable() == rhs.isNavigable(); } - MAssociation::MAssociation() : MRelation(), - _association_class_uid(Uid::getInvalidUid()) + m_associationClassUid(Uid::invalidUid()) { } @@ -104,19 +102,19 @@ MAssociation::~MAssociation() { } -void MAssociation::setA(const MAssociationEnd &end) +void MAssociation::setEndA(const MAssociationEnd &end) { - _a = end; + m_endA = end; } -void MAssociation::setB(const MAssociationEnd &end) +void MAssociation::setEndB(const MAssociationEnd &end) { - _b = end; + m_endB = end; } void MAssociation::setAssociationClassUid(const Uid &uid) { - _association_class_uid = uid; + m_associationClassUid = uid; } void MAssociation::accept(MVisitor *visitor) @@ -129,4 +127,4 @@ void MAssociation::accept(MConstVisitor *visitor) const visitor->visitMAssociation(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/massociation.h b/src/libs/3rdparty/modeling/qmt/model/massociation.h index 7c1b320dd7..a4fda880c9 100644 --- a/src/libs/3rdparty/modeling/qmt/model/massociation.h +++ b/src/libs/3rdparty/modeling/qmt/model/massociation.h @@ -36,106 +36,69 @@ #include <QString> - namespace qmt { class MClass; - class QMT_EXPORT MAssociationEnd { public: - enum Kind { - ASSOCIATION, - AGGREGATION, - COMPOSITION + Association, + Aggregation, + Composition }; -public: - MAssociationEnd(); - MAssociationEnd(const MAssociationEnd &rhs); - ~MAssociationEnd(); -public: - MAssociationEnd &operator=(const MAssociationEnd &rhs); -public: - - QString getName() const { return _name; } - + QString name() const { return m_name; } void setName(const QString &name); - - QString getCardinality() const { return _cardinality; } - + QString cardinality() const { return m_cardinality; } void setCardinality(const QString &cardinality); - - Kind getKind() const { return _kind; } - + Kind kind() const { return m_kind; } void setKind(Kind kind); - - bool isNavigable() const { return _navigable; } - + bool isNavigable() const { return m_isNavigable; } void setNavigable(bool navigable); private: - - QString _name; - - QString _cardinality; - - Kind _kind; - - bool _navigable; + QString m_name; + QString m_cardinality; + Kind m_kind; + bool m_isNavigable; }; bool operator==(const MAssociationEnd &lhs, const MAssociationEnd &rhs); +inline bool operator!=(const MAssociationEnd &lhs, const MAssociationEnd &rhs) +{ + return !(lhs == rhs); +} -inline bool operator!=(const MAssociationEnd &lhs, const MAssociationEnd &rhs) { return !(lhs == rhs); } - - -class QMT_EXPORT MAssociation : - public MRelation +class QMT_EXPORT MAssociation : public MRelation { public: - MAssociation(); - ~MAssociation(); -public: - - MAssociationEnd getA() const { return _a; } - - void setA(const MAssociationEnd &end); - - MAssociationEnd getB() const { return _b; } - - void setB(const MAssociationEnd &end); - - Uid getAssoicationClassUid() const { return _association_class_uid; } - + MAssociationEnd endA() const { return m_endA; } + void setEndA(const MAssociationEnd &end); + MAssociationEnd endB() const { return m_endB; } + void setEndB(const MAssociationEnd &end); + Uid assoicationClassUid() const { return m_associationClassUid; } void setAssociationClassUid(const Uid &uid); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - MAssociationEnd _a; - - MAssociationEnd _b; - - Uid _association_class_uid; + MAssociationEnd m_endA; + MAssociationEnd m_endB; + Uid m_associationClassUid; }; -} +} // namespace qmt #endif // QMT_MASSOCIATION_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.cpp b/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.cpp index 6b602d6f29..03dc768f3d 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.cpp @@ -33,7 +33,6 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MCanvasDiagram::MCanvasDiagram() @@ -54,5 +53,4 @@ void MCanvasDiagram::accept(MConstVisitor *visitor) const visitor->visitMCanvasDiagram(this); } -} - +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.h b/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.h index c7132ea527..2027ca9c8e 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.h +++ b/src/libs/3rdparty/modeling/qmt/model/mcanvasdiagram.h @@ -33,25 +33,18 @@ #include "mdiagram.h" - namespace qmt { -class QMT_EXPORT MCanvasDiagram : - public MDiagram +class QMT_EXPORT MCanvasDiagram : public MDiagram { public: MCanvasDiagram(); - ~MCanvasDiagram(); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; - }; -} +} // namespace qmt #endif // QMT_MCANVASDIAGRAM_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mclass.cpp b/src/libs/3rdparty/modeling/qmt/model/mclass.cpp index 2e54165c98..5c8b32ed64 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mclass.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mclass.cpp @@ -44,9 +44,9 @@ MClass::MClass() MClass::MClass(const MClass &rhs) : MObject(rhs), - _namespace(rhs._namespace), - _template_parameters(rhs._template_parameters), - _members(rhs._members) + m_umlNamespace(rhs.m_umlNamespace), + m_templateParameters(rhs.m_templateParameters), + m_members(rhs.m_members) { } @@ -58,44 +58,44 @@ MClass &MClass::operator=(const MClass &rhs) { if (this != &rhs) { MObject::operator =(rhs); - _namespace = rhs._namespace; - _template_parameters = rhs._template_parameters; - _members = rhs._members; + m_umlNamespace = rhs.m_umlNamespace; + m_templateParameters = rhs.m_templateParameters; + m_members = rhs.m_members; } return *this; } -void MClass::setNamespace(const QString &name_space) +void MClass::setUmlNamespace(const QString ¨Namespace) { - _namespace = name_space; + m_umlNamespace = umlNamespace; } -void MClass::setTemplateParameters(const QList<QString> &template_parameters) +void MClass::setTemplateParameters(const QList<QString> &templateParameters) { - _template_parameters = template_parameters; + m_templateParameters = templateParameters; } void MClass::setMembers(const QList<MClassMember> &members) { - _members = members; + m_members = members; } void MClass::addMember(const MClassMember &member) { - _members.append(member); + m_members.append(member); } -void MClass::insertMember(int before_index, const MClassMember &member) +void MClass::insertMember(int beforeIndex, const MClassMember &member) { - _members.insert(before_index, member); + m_members.insert(beforeIndex, member); } void MClass::removeMember(const Uid &uid) { QMT_CHECK(uid.isValid()); - for (int i = 0; i < _members.count(); ++i) { - if (_members.at(i).getUid() == uid) { - _members.removeAt(i); + for (int i = 0; i < m_members.count(); ++i) { + if (m_members.at(i).uid() == uid) { + m_members.removeAt(i); return; } } @@ -104,7 +104,7 @@ void MClass::removeMember(const Uid &uid) void MClass::removeMember(const MClassMember &member) { - removeMember(member.getUid()); + removeMember(member.uid()); } void MClass::accept(MVisitor *visitor) @@ -117,4 +117,4 @@ void MClass::accept(MConstVisitor *visitor) const visitor->visitMClass(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mclass.h b/src/libs/3rdparty/modeling/qmt/model/mclass.h index 605bec5a58..da7e55201e 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mclass.h +++ b/src/libs/3rdparty/modeling/qmt/model/mclass.h @@ -38,60 +38,36 @@ namespace qmt { class MInheritance; - -class QMT_EXPORT MClass : - public MObject +class QMT_EXPORT MClass : public MObject { public: - MClass(); - MClass(const MClass &rhs); - ~MClass(); -public: - MClass &operator=(const MClass &rhs); -public: - - QString getNamespace() const { return _namespace; } - - void setNamespace(const QString &name_space); - - QList<QString> getTemplateParameters() const { return _template_parameters; } - - void setTemplateParameters(const QList<QString> &template_parameters); - - QList<MClassMember> getMembers() const { return _members; } - + QString umlNamespace() const { return m_umlNamespace; } + void setUmlNamespace(const QString ¨Namespace); + QList<QString> templateParameters() const { return m_templateParameters; } + void setTemplateParameters(const QList<QString> &templateParameters); + QList<MClassMember> members() const { return m_members; } void setMembers(const QList<MClassMember> &members); void addMember(const MClassMember &member); - - void insertMember(int before_index, const MClassMember &member); - + void insertMember(int beforeIndex, const MClassMember &member); void removeMember(const Uid &uid); - void removeMember(const MClassMember &member); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - QString _namespace; - - QList<QString> _template_parameters; - - QList<MClassMember> _members; - + QString m_umlNamespace; + QList<QString> m_templateParameters; + QList<MClassMember> m_members; }; -} +} // namespace qmt #endif // QMT_MCLASS_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mclassmember.cpp b/src/libs/3rdparty/modeling/qmt/model/mclassmember.cpp index 870ce0e260..fcfeacdf59 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mclassmember.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mclassmember.cpp @@ -32,20 +32,20 @@ namespace qmt { -MClassMember::MClassMember(MemberType member_type) - : _visibility(VISIBILITY_UNDEFINED), - _member_type(member_type) +MClassMember::MClassMember(MemberType memberType) + : m_visibility(VisibilityUndefined), + m_memberType(memberType) { } MClassMember::MClassMember(const MClassMember &rhs) - : _uid(rhs._uid), - _stereotypes(rhs._stereotypes), - _group(rhs._group), - _declaration(rhs._declaration), - _visibility(rhs._visibility), - _member_type(rhs._member_type), - _properties(rhs._properties) + : m_uid(rhs.m_uid), + m_stereotypes(rhs.m_stereotypes), + m_group(rhs.m_group), + m_declaration(rhs.m_declaration), + m_visibility(rhs.m_visibility), + m_memberType(rhs.m_memberType), + m_properties(rhs.m_properties) { } @@ -56,60 +56,60 @@ MClassMember::~MClassMember() MClassMember &MClassMember::operator=(const MClassMember &rhs) { if (this != &rhs) { - _uid = rhs._uid; - _stereotypes = rhs._stereotypes; - _group = rhs._group; - _declaration = rhs._declaration; - _visibility = rhs._visibility; - _member_type = rhs._member_type; - _properties = rhs._properties; + m_uid = rhs.m_uid; + m_stereotypes = rhs.m_stereotypes; + m_group = rhs.m_group; + m_declaration = rhs.m_declaration; + m_visibility = rhs.m_visibility; + m_memberType = rhs.m_memberType; + m_properties = rhs.m_properties; } return *this; } void MClassMember::setUid(const Uid &uid) { - _uid = uid; + m_uid = uid; } void MClassMember::renewUid() { - _uid.renew(); + m_uid.renew(); } void MClassMember::setStereotypes(const QList<QString> &stereotypes) { - _stereotypes = stereotypes; + m_stereotypes = stereotypes; } void MClassMember::setGroup(const QString &group) { - _group = group; + m_group = group; } void MClassMember::setDeclaration(const QString &declaration) { - _declaration = declaration; + m_declaration = declaration; } void MClassMember::setVisibility(MClassMember::Visibility visibility) { - _visibility = visibility; + m_visibility = visibility; } -void MClassMember::setMemberType(MClassMember::MemberType member_type) +void MClassMember::setMemberType(MClassMember::MemberType memberType) { - _member_type = member_type; + m_memberType = memberType; } void MClassMember::setProperties(Properties properties) { - _properties = properties; + m_properties = properties; } bool operator==(const MClassMember &lhs, const MClassMember &rhs) { - return lhs.getUid() == rhs.getUid(); + return lhs.uid() == rhs.uid(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mclassmember.h b/src/libs/3rdparty/modeling/qmt/model/mclassmember.h index 78caade902..7e86c2c531 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mclassmember.h +++ b/src/libs/3rdparty/modeling/qmt/model/mclassmember.h @@ -41,101 +41,71 @@ namespace qmt { class QMT_EXPORT MClassMember { public: - enum Visibility { - VISIBILITY_UNDEFINED, - VISIBILITY_PUBLIC, - VISIBILITY_PROTECTED, - VISIBILITY_PRIVATE, - VISIBILITY_SIGNALS, - VISIBILITY_PRIVATE_SLOTS, - VISIBILITY_PROTECTED_SLOTS, - VISIBILITY_PUBLIC_SLOTS + VisibilityUndefined, + VisibilityPublic, + VisibilityProtected, + VisibilityPrivate, + VisibilitySignals, + VisibilityPrivateSlots, + VisibilityProtectedSlots, + VisibilityPublicSlots }; enum MemberType { - MEMBER_UNDEFINED, - MEMBER_ATTRIBUTE, - MEMBER_METHOD, + MemberUndefined, + MemberAttribute, + MemberMethod, }; enum Property { - PROPERTY_VIRTUAL = 0x1, - PROPERTY_ABSTRACT = 0x2, - PROPERTY_CONST = 0x4, - PROPERTY_OVERRIDE = 0x8, - PROPERTY_FINAL = 0x10, - PROPERTY_QSIGNAL = 0x100, - PROPERTY_QSLOT = 0x200, - PROPERTY_QINVOKABLE = 0x400, - PROPERTY_QPROPERTY = 0x800 + PropertyVirtual = 0x1, + PropertyAbstract = 0x2, + PropertyConst = 0x4, + PropertyOverride = 0x8, + PropertyFinal = 0x10, + PropertyQsignal = 0x100, + PropertyQslot = 0x200, + PropertyQinvokable = 0x400, + PropertyQproperty = 0x800 }; Q_DECLARE_FLAGS(Properties, Property) -public: - - MClassMember(MemberType member_type = MEMBER_UNDEFINED); - + MClassMember(MemberType memberType = MemberUndefined); MClassMember(const MClassMember &rhs); - ~MClassMember(); -public: - MClassMember &operator=(const MClassMember &rhs); -public: - - Uid getUid() const { return _uid; } - + Uid uid() const { return m_uid; } void setUid(const Uid &uid); - void renewUid(); - - QList<QString> getStereotypes() const { return _stereotypes; } - + QList<QString> stereotypes() const { return m_stereotypes; } void setStereotypes(const QList<QString> &stereotypes); - - QString getGroup() const { return _group; } - + QString group() const { return m_group; } void setGroup(const QString &group); - - QString getDeclaration() const { return _declaration; } - + QString declaration() const { return m_declaration; } void setDeclaration(const QString &declaration); - - Visibility getVisibility() const { return _visibility; } - + Visibility visibility() const { return m_visibility; } void setVisibility(Visibility visibility); - - MemberType getMemberType() const { return _member_type; } - - void setMemberType(MemberType member_type); - - Properties getProperties() const { return _properties; } - + MemberType memberType() const { return m_memberType; } + void setMemberType(MemberType memberType); + Properties properties() const { return m_properties; } void setProperties(Properties properties); private: - - Uid _uid; - - QList<QString> _stereotypes; - - QString _group; - - QString _declaration; - - Visibility _visibility; - - MemberType _member_type; - - Properties _properties; + Uid m_uid; + QList<QString> m_stereotypes; + QString m_group; + QString m_declaration; + Visibility m_visibility; + MemberType m_memberType; + Properties m_properties; }; bool operator==(const MClassMember &lhs, const MClassMember &rhs); -} +} // namespace qmt #endif // QMT_MCLASSMEMBER_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mcomponent.cpp b/src/libs/3rdparty/modeling/qmt/model/mcomponent.cpp index f3febe66a5..2d1ea93a32 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mcomponent.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mcomponent.cpp @@ -33,7 +33,6 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MComponent::MComponent() @@ -55,4 +54,4 @@ void MComponent::accept(MConstVisitor *visitor) const visitor->visitMComponent(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mcomponent.h b/src/libs/3rdparty/modeling/qmt/model/mcomponent.h index 7f7fc5a43c..306d42f032 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mcomponent.h +++ b/src/libs/3rdparty/modeling/qmt/model/mcomponent.h @@ -33,27 +33,18 @@ #include "mobject.h" - namespace qmt { -class QMT_EXPORT MComponent : - public MObject +class QMT_EXPORT MComponent : public MObject { public: - MComponent(); - ~MComponent(); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; - }; -} - +} // namespace qmt #endif // QMT_MCOMPONENT_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mconstvisitor.h b/src/libs/3rdparty/modeling/qmt/model/mconstvisitor.h index b72badcdb6..b0c572d370 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mconstvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model/mconstvisitor.h @@ -54,31 +54,19 @@ public: virtual ~MConstVisitor() { } virtual void visitMElement(const MElement *element) = 0; - virtual void visitMObject(const MObject *object) = 0; - virtual void visitMPackage(const MPackage *package) = 0; - virtual void visitMClass(const MClass *klass) = 0; - virtual void visitMComponent(const MComponent *component) = 0; - virtual void visitMDiagram(const MDiagram *diagram) = 0; - virtual void visitMCanvasDiagram(const MCanvasDiagram *diagram) = 0; - virtual void visitMItem(const MItem *item) = 0; - virtual void visitMRelation(const MRelation *relation) = 0; - virtual void visitMDependency(const MDependency *dependency) = 0; - virtual void visitMInheritance(const MInheritance *inheritance) = 0; - virtual void visitMAssociation(const MAssociation *association) = 0; - }; -} +} // namespace qmt #endif // QMT_MCONSTVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mdependency.cpp b/src/libs/3rdparty/modeling/qmt/model/mdependency.cpp index 3c89800acc..108c703b7b 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mdependency.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mdependency.cpp @@ -33,18 +33,17 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MDependency::MDependency() : MRelation(), - _direction(A_TO_B) + m_direction(AToB) { } MDependency::MDependency(const MDependency &rhs) : MRelation(rhs), - _direction(rhs._direction) + m_direction(rhs.m_direction) { } @@ -56,42 +55,40 @@ MDependency &MDependency::operator =(const MDependency &rhs) { if (this != &rhs) { MRelation::operator=(rhs); - _direction = rhs._direction; + m_direction = rhs.m_direction; } return *this; } void MDependency::setDirection(MDependency::Direction direction) { - _direction = direction; + m_direction = direction; } -Uid MDependency::getSource() const +Uid MDependency::source() const { - return _direction == B_TO_A ? getEndB() : getEndA(); + return m_direction == BToA ? endBUid() : endAUid(); } void MDependency::setSource(const Uid &source) { - if (_direction == B_TO_A) { - setEndB(source); - } else { - setEndA(source); - } + if (m_direction == BToA) + setEndBUid(source); + else + setEndAUid(source); } -Uid MDependency::getTarget() const +Uid MDependency::target() const { - return _direction == B_TO_A ? getEndA() : getEndB(); + return m_direction == BToA ? endAUid() : endBUid(); } void MDependency::setTarget(const Uid &target) { - if (_direction == B_TO_A) { - setEndA(target); - } else { - setEndB(target); - } + if (m_direction == BToA) + setEndAUid(target); + else + setEndBUid(target); } void MDependency::accept(MVisitor *visitor) @@ -104,4 +101,4 @@ void MDependency::accept(MConstVisitor *visitor) const visitor->visitMDependency(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mdependency.h b/src/libs/3rdparty/modeling/qmt/model/mdependency.h index d8e785b142..b15551ef33 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mdependency.h +++ b/src/libs/3rdparty/modeling/qmt/model/mdependency.h @@ -33,61 +33,39 @@ #include "mrelation.h" - namespace qmt { class MObject; - -class QMT_EXPORT MDependency : - public MRelation +class QMT_EXPORT MDependency : public MRelation { public: - enum Direction { - A_TO_B, - B_TO_A, - BIDIRECTIONAL + AToB, + BToA, + Bidirectional }; -public: - MDependency(); - MDependency(const MDependency &rhs); - ~MDependency(); -public: - MDependency &operator=(const MDependency &rhs); -public: - - Direction getDirection() const { return _direction; } - + Direction direction() const { return m_direction; } void setDirection(Direction direction); - - Uid getSource() const; - + Uid source() const; void setSource(const Uid &source); - - Uid getTarget() const; - + Uid target() const; void setTarget(const Uid &target); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - Direction _direction; - + Direction m_direction; }; -} +} // namespace qmt #endif // QMT_MDEPENDENCY_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mdiagram.cpp b/src/libs/3rdparty/modeling/qmt/model/mdiagram.cpp index f85cfba93c..f8bfdd2232 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mdiagram.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mdiagram.cpp @@ -34,27 +34,26 @@ #include "mconstvisitor.h" #include "qmt/diagram/delement.h" - namespace qmt { MDiagram::MDiagram() : MObject(), // modification date is set to null value for performance reasons - _last_modified() + m_lastModified() { } MDiagram::MDiagram(const MDiagram &rhs) : MObject(rhs), - _elements(), + m_elements(), // modification date is copied (instead of set to current time) to allow exact copies of the diagram - _last_modified(rhs._last_modified) + m_lastModified(rhs.m_lastModified) { } MDiagram::~MDiagram() { - qDeleteAll(_elements); + qDeleteAll(m_elements); } MDiagram &MDiagram::operator=(const MDiagram &rhs) @@ -63,7 +62,7 @@ MDiagram &MDiagram::operator=(const MDiagram &rhs) MObject::operator=(rhs); // no deep copy; list of elements remains unchanged // modification date is copied (instead of set to current time) to allow exact copies of the diagram - _last_modified = rhs._last_modified; + m_lastModified = rhs.m_lastModified; } return *this; } @@ -71,56 +70,55 @@ MDiagram &MDiagram::operator=(const MDiagram &rhs) DElement *MDiagram::findDiagramElement(const Uid &key) const { // PERFORM introduce map for better performance - foreach (DElement *element, _elements) { - if (element->getUid() == key) { + foreach (DElement *element, m_elements) { + if (element->uid() == key) return element; - } } return 0; } void MDiagram::setDiagramElements(const QList<DElement *> &elements) { - _elements = elements; + m_elements = elements; } void MDiagram::addDiagramElement(DElement *element) { QMT_CHECK(element); - _elements.append(element); + m_elements.append(element); } -void MDiagram::insertDiagramElement(int before_element, DElement *element) +void MDiagram::insertDiagramElement(int beforeElement, DElement *element) { - QMT_CHECK(before_element >= 0 && before_element <= _elements.size()); + QMT_CHECK(beforeElement >= 0 && beforeElement <= m_elements.size()); - _elements.insert(before_element, element); + m_elements.insert(beforeElement, element); } void MDiagram::removeDiagramElement(int index) { - QMT_CHECK(index >= 0 && index < _elements.size()); + QMT_CHECK(index >= 0 && index < m_elements.size()); - delete _elements.at(index); - _elements.removeAt(index); + delete m_elements.at(index); + m_elements.removeAt(index); } void MDiagram::removeDiagramElement(DElement *element) { QMT_CHECK(element); - removeDiagramElement(_elements.indexOf(element)); + removeDiagramElement(m_elements.indexOf(element)); } -void MDiagram::setLastModified(const QDateTime &last_modified) +void MDiagram::setLastModified(const QDateTime &lastModified) { - _last_modified = last_modified; + m_lastModified = lastModified; } void MDiagram::setLastModifiedToNow() { - _last_modified = QDateTime::currentDateTime(); + m_lastModified = QDateTime::currentDateTime(); } void MDiagram::accept(MVisitor *visitor) @@ -133,4 +131,4 @@ void MDiagram::accept(MConstVisitor *visitor) const visitor->visitMDiagram(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mdiagram.h b/src/libs/3rdparty/modeling/qmt/model/mdiagram.h index 85be110070..8667016319 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mdiagram.h +++ b/src/libs/3rdparty/modeling/qmt/model/mdiagram.h @@ -39,57 +39,36 @@ namespace qmt { class DElement; - -class QMT_EXPORT MDiagram : - public MObject +class QMT_EXPORT MDiagram : public MObject { public: MDiagram(); - MDiagram(const MDiagram &rhs); - ~MDiagram(); -public: - MDiagram &operator=(const MDiagram &rhs); -public: - - const QList<DElement *> &getDiagramElements() const { return _elements; } - + const QList<DElement *> &diagramElements() const { return m_elements; } DElement *findDiagramElement(const Uid &key) const; - void setDiagramElements(const QList<DElement *> &elements); void addDiagramElement(DElement *element); - - void insertDiagramElement(int before_element, DElement *element); - + void insertDiagramElement(int beforeElement, DElement *element); void removeDiagramElement(int index); - void removeDiagramElement(DElement *element); - QDateTime getLastModified() const { return _last_modified; } - - void setLastModified(const QDateTime &last_modified); - + QDateTime lastModified() const { return m_lastModified; } + void setLastModified(const QDateTime &lastModified); void setLastModifiedToNow(); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - QList<DElement *> _elements; - - QDateTime _last_modified; - + QList<DElement *> m_elements; + QDateTime m_lastModified; }; -} +} // namespace qmt #endif // QMT_MDIAGRAM_H diff --git a/src/libs/3rdparty/modeling/qmt/model/melement.cpp b/src/libs/3rdparty/modeling/qmt/model/melement.cpp index f1618961b0..82ad8b52c2 100644 --- a/src/libs/3rdparty/modeling/qmt/model/melement.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/melement.cpp @@ -33,15 +33,13 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { void MExpansion::assign(MElement *lhs, const MElement &rhs) { - if (lhs->_expansion) { - lhs->_expansion->destroy(lhs); - } - lhs->_expansion = clone(rhs); + if (lhs->m_expansion) + lhs->m_expansion->destroy(lhs); + lhs->m_expansion = clone(rhs); } void MExpansion::destroy(MElement *element) @@ -51,72 +49,68 @@ void MExpansion::destroy(MElement *element) delete this; } - MElement::MElement() - : _owner(0), - _expansion(0) + : m_owner(0), + m_expansion(0) { } MElement::MElement(const MElement &rhs) - : _uid(rhs._uid), - _owner(0), - _expansion(rhs._expansion ? rhs._expansion->clone(rhs) : 0), - _stereotypes(rhs._stereotypes) + : m_uid(rhs.m_uid), + m_owner(0), + m_expansion(rhs.m_expansion ? rhs.m_expansion->clone(rhs) : 0), + m_stereotypes(rhs.m_stereotypes) { } MElement::~MElement() { - if (_expansion) { - _expansion->destroy(this); - } + if (m_expansion) + m_expansion->destroy(this); } MElement &MElement::operator=(const MElement &rhs) { if (this != &rhs) { - _uid = rhs._uid; + m_uid = rhs.m_uid; // owner is intentionally left unchanged - if (rhs._expansion) { - rhs._expansion->assign(this, rhs); - } - _stereotypes = rhs._stereotypes; + if (rhs.m_expansion) + rhs.m_expansion->assign(this, rhs); + m_stereotypes = rhs.m_stereotypes; } return *this; } void MElement::setUid(const Uid &uid) { - _uid = uid; + m_uid = uid; } void MElement::renewUid() { - _uid.renew(); + m_uid.renew(); } void MElement::setOwner(MObject *owner) { - _owner = owner; + m_owner = owner; } void MElement::setExpansion(MExpansion *expansion) { - if (_expansion) { - _expansion->destroy(this); - } - _expansion = expansion; + if (m_expansion) + m_expansion->destroy(this); + m_expansion = expansion; } void MElement::setStereotypes(const QList<QString> &stereotypes) { - _stereotypes = stereotypes; + m_stereotypes = stereotypes; } void MElement::setFlags(const Flags &flags) { - _flags = flags; + m_flags = flags; } void MElement::accept(MVisitor *visitor) @@ -129,4 +123,4 @@ void MElement::accept(MConstVisitor *visitor) const visitor->visitMElement(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/melement.h b/src/libs/3rdparty/modeling/qmt/model/melement.h index 447390b85d..aba992c34f 100644 --- a/src/libs/3rdparty/modeling/qmt/model/melement.h +++ b/src/libs/3rdparty/modeling/qmt/model/melement.h @@ -36,7 +36,6 @@ #include <QList> #include <QString> - namespace qmt { class MElement; @@ -44,89 +43,58 @@ class MObject; class MVisitor; class MConstVisitor; - -class MExpansion { +class MExpansion +{ public: - virtual ~MExpansion() { } virtual MExpansion *clone(const MElement &rhs) const = 0; - virtual void assign(MElement *lhs, const MElement &rhs); - virtual void destroy(MElement *element); }; - class QMT_EXPORT MElement { friend class MExpansion; public: - enum Flag { - REVERSE_ENGINEERED = 0x01 + ReverseEngineered = 0x01 }; Q_DECLARE_FLAGS(Flags, Flag) -public: - MElement(); - MElement(const MElement &rhs); - virtual ~MElement(); -public: - MElement &operator=(const MElement &rhs); -public: - - Uid getUid() const { return _uid; } - + Uid uid() const { return m_uid; } void setUid(const Uid &uid); - void renewUid(); - - MObject *getOwner() const { return _owner; } - + MObject *owner() const { return m_owner; } void setOwner(MObject *owner); - - MExpansion *getExpansion() const { return _expansion; } - + MExpansion *expansion() const { return m_expansion; } void setExpansion(MExpansion *expansion); - - QList<QString> getStereotypes() const { return _stereotypes; } - + QList<QString> stereotypes() const { return m_stereotypes; } void setStereotypes(const QList<QString> &stereotypes); - - Flags getFlags() const { return _flags; } - + Flags flags() const { return m_flags; } void setFlags(const Flags &flags); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - Uid _uid; - - MObject *_owner; - - MExpansion *_expansion; - - QList<QString> _stereotypes; - - Flags _flags; + Uid m_uid; + MObject *m_owner; + MExpansion *m_expansion; + QList<QString> m_stereotypes; + Flags m_flags; }; Q_DECLARE_OPERATORS_FOR_FLAGS(MElement::Flags) -} +} // namespace qmt #endif // QMT_MELEMENT_H diff --git a/src/libs/3rdparty/modeling/qmt/model/minheritance.cpp b/src/libs/3rdparty/modeling/qmt/model/minheritance.cpp index f0a921c7d2..4ce16251bd 100644 --- a/src/libs/3rdparty/modeling/qmt/model/minheritance.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/minheritance.cpp @@ -34,7 +34,6 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MInheritance::MInheritance() @@ -53,30 +52,29 @@ MInheritance::~MInheritance() MInheritance MInheritance::operator =(const MInheritance &rhs) { - if (this != &rhs) { + if (this != &rhs) MRelation::operator=(rhs); - } return *this; } -Uid MInheritance::getDerived() const +Uid MInheritance::derived() const { - return getEndA(); + return endAUid(); } void MInheritance::setDerived(const Uid &derived) { - setEndA(derived); + setEndAUid(derived); } -Uid MInheritance::getBase() const +Uid MInheritance::base() const { - return getEndB(); + return endBUid(); } void MInheritance::setBase(const Uid &base) { - setEndB(base); + setEndBUid(base); } void MInheritance::accept(MVisitor *visitor) @@ -89,4 +87,4 @@ void MInheritance::accept(MConstVisitor *visitor) const visitor->visitMInheritance(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/minheritance.h b/src/libs/3rdparty/modeling/qmt/model/minheritance.h index 11e1eee46d..16aac0611f 100644 --- a/src/libs/3rdparty/modeling/qmt/model/minheritance.h +++ b/src/libs/3rdparty/modeling/qmt/model/minheritance.h @@ -34,45 +34,26 @@ #include "mrelation.h" #include "qmt/infrastructure/handle.h" - namespace qmt { -class MClass; - - -class QMT_EXPORT MInheritance : - public MRelation +class QMT_EXPORT MInheritance : public MRelation { public: - MInheritance(); - MInheritance(const MInheritance &rhs); - ~MInheritance(); -public: - MInheritance operator=(const MInheritance &rhs); -public: - - Uid getDerived() const; - + Uid derived() const; void setDerived(const Uid &derived); - - Uid getBase() const; - + Uid base() const; void setBase(const Uid &base); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; - }; -} +} // namespace qmt #endif // QMT_MINHERITANCE_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mitem.cpp b/src/libs/3rdparty/modeling/qmt/model/mitem.cpp index b5500da9bc..cdf18fecef 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mitem.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mitem.cpp @@ -33,13 +33,12 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MItem::MItem() : MObject(), - _variety_editable(true), - _shape_editable(false) + m_isVarietyEditable(true), + m_isShapeEditable(false) { } @@ -49,17 +48,17 @@ MItem::~MItem() void MItem::setVariety(const QString &variety) { - _variety = variety; + m_variety = variety; } -void MItem::setVarietyEditable(bool variety_editable) +void MItem::setVarietyEditable(bool varietyEditable) { - _variety_editable = variety_editable; + m_isVarietyEditable = varietyEditable; } -void MItem::setShapeEditable(bool shape_editable) +void MItem::setShapeEditable(bool shapeEditable) { - _shape_editable = shape_editable; + m_isShapeEditable = shapeEditable; } void MItem::accept(MVisitor *visitor) diff --git a/src/libs/3rdparty/modeling/qmt/model/mitem.h b/src/libs/3rdparty/modeling/qmt/model/mitem.h index 306c0e4376..c941df1f13 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mitem.h +++ b/src/libs/3rdparty/modeling/qmt/model/mitem.h @@ -33,46 +33,28 @@ #include "mobject.h" - namespace qmt { -class QMT_EXPORT MItem : - public MObject +class QMT_EXPORT MItem : public MObject { public: - MItem(); - ~MItem(); -public: - - QString getVariety() const { return _variety; } - + QString variety() const { return m_variety; } void setVariety(const QString &variety); - - bool isVarietyEditable() const { return _variety_editable; } - - void setVarietyEditable(bool variety_editable); - - bool isShapeEditable() const { return _shape_editable; } - - void setShapeEditable(bool shape_editable); - -public: + bool isVarietyEditable() const { return m_isVarietyEditable; } + void setVarietyEditable(bool varietyEditable); + bool isShapeEditable() const { return m_isShapeEditable; } + void setShapeEditable(bool shapeEditable); virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - QString _variety; - - bool _variety_editable; - - bool _shape_editable; - + QString m_variety; + bool m_isVarietyEditable; + bool m_isShapeEditable; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mobject.cpp b/src/libs/3rdparty/modeling/qmt/model/mobject.cpp index 64b982040a..cfa77a88d2 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mobject.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mobject.cpp @@ -35,21 +35,20 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MObject::MObject() : MElement(), - _children(true), - _relations(true) + m_children(true), + m_relations(true) { } MObject::MObject(const MObject &rhs) : MElement(rhs), - _name(rhs._name), - _children(true), - _relations(true) + m_name(rhs.m_name), + m_children(true), + m_relations(true) { } @@ -61,7 +60,7 @@ MObject &MObject::operator =(const MObject &rhs) { if (this != &rhs) { MElement::operator=(rhs); - _name = rhs._name; + m_name = rhs.m_name; // no deep copy; list of children remains unchanged } return *this; @@ -69,124 +68,120 @@ MObject &MObject::operator =(const MObject &rhs) void MObject::setName(const QString &name) { - _name = name; + m_name = name; } void MObject::setChildren(const Handles<MObject> &children) { - _children = children; + m_children = children; foreach (const Handle<MObject> &handle, children) { - if (handle.hasTarget()) { - handle.getTarget()->setOwner(this); - } + if (handle.hasTarget()) + handle.target()->setOwner(this); } } void MObject::addChild(const Uid &uid) { - _children.add(uid); + m_children.add(uid); } void MObject::addChild(MObject *child) { QMT_CHECK(child); - QMT_CHECK(child->getOwner() == 0); - _children.add(child); + QMT_CHECK(child->owner() == 0); + m_children.add(child); child->setOwner(this); } -void MObject::insertChild(int before_index, const Uid &uid) +void MObject::insertChild(int beforeIndex, const Uid &uid) { - _children.insert(before_index, uid); + m_children.insert(beforeIndex, uid); } -void MObject::insertChild(int before_index, MObject *child) +void MObject::insertChild(int beforeIndex, MObject *child) { QMT_CHECK(child); - QMT_CHECK(child->getOwner() == 0); - _children.insert(before_index, child); + QMT_CHECK(child->owner() == 0); + m_children.insert(beforeIndex, child); child->setOwner(this); } void MObject::removeChild(const Uid &uid) { - QMT_CHECK(_children.contains(uid)); - MObject *child = _children.find(uid); - if (child) { + QMT_CHECK(m_children.contains(uid)); + MObject *child = m_children.find(uid); + if (child) child->setOwner(0); - } - _children.remove(uid); + m_children.remove(uid); } void MObject::removeChild(MObject *child) { QMT_CHECK(child); - QMT_CHECK(_children.contains(child)); + QMT_CHECK(m_children.contains(child)); child->setOwner(0); - _children.remove(child); + m_children.remove(child); } void MObject::decontrolChild(const Uid &uid) { - QMT_CHECK(_children.contains(uid)); - MObject *child = _children.find(uid); - if (child) { + QMT_CHECK(m_children.contains(uid)); + MObject *child = m_children.find(uid); + if (child) child->setOwner(0); - } - _children.take(uid); + m_children.take(uid); } void MObject::decontrolChild(MObject *child) { QMT_CHECK(child); - QMT_CHECK(_children.contains(child)); + QMT_CHECK(m_children.contains(child)); child->setOwner(0); - _children.take(child); + m_children.take(child); } void MObject::setRelations(const Handles<MRelation> &relations) { - _relations = relations; + m_relations = relations; foreach (const Handle<MRelation> &handle, relations) { - if (handle.hasTarget()) { - handle.getTarget()->setOwner(this); - } + if (handle.hasTarget()) + handle.target()->setOwner(this); } } void MObject::addRelation(const Uid &uid) { - _relations.add(uid); + m_relations.add(uid); } void MObject::addRelation(MRelation *relation) { QMT_CHECK(relation); - QMT_CHECK(relation->getOwner() == 0); + QMT_CHECK(relation->owner() == 0); relation->setOwner(this); - _relations.add(relation); + m_relations.add(relation); } -void MObject::insertRelation(int before_index, MRelation *relation) +void MObject::insertRelation(int beforeIndex, MRelation *relation) { QMT_CHECK(relation); - QMT_CHECK(relation->getOwner() == 0); + QMT_CHECK(relation->owner() == 0); relation->setOwner(this); - _relations.insert(before_index, relation); + m_relations.insert(beforeIndex, relation); } void MObject::removeRelation(MRelation *relation) { QMT_CHECK(relation); relation->setOwner(0); - _relations.remove(relation); + m_relations.remove(relation); } void MObject::decontrolRelation(MRelation *relation) { QMT_CHECK(relation); relation->setOwner(0); - _relations.take(relation); + m_relations.take(relation); } void MObject::accept(MVisitor *visitor) @@ -199,4 +194,4 @@ void MObject::accept(MConstVisitor *visitor) const visitor->visitMObject(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mobject.h b/src/libs/3rdparty/modeling/qmt/model/mobject.h index 7a19986cf8..a0e756b440 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mobject.h +++ b/src/libs/3rdparty/modeling/qmt/model/mobject.h @@ -36,83 +36,50 @@ #include <QString> - namespace qmt { class MRelation; - -class QMT_EXPORT MObject : - public MElement +class QMT_EXPORT MObject : public MElement { public: - MObject(); - MObject(const MObject &rhs); - ~MObject(); -public: - MObject &operator=(const MObject &rhs); -public: - - QString getName() const { return _name; } - + QString name() const { return m_name; } void setName(const QString &name); - const Handles<MObject> &getChildren() const { return _children; } - + const Handles<MObject> &children() const { return m_children; } void setChildren(const Handles<MObject> &children); - void addChild(const Uid &uid); - void addChild(MObject *child); - - void insertChild(int before_index, const Uid &uid); - - void insertChild(int before_index, MObject *child); - + void insertChild(int beforeIndex, const Uid &uid); + void insertChild(int beforeIndex, MObject *child); void removeChild(const Uid &uid); - void removeChild(MObject *child); - void decontrolChild(const Uid &uid); - void decontrolChild(MObject *child); - const Handles<MRelation> &getRelations() const { return _relations; } - + const Handles<MRelation> &relations() const { return m_relations; } void setRelations(const Handles<MRelation> &relations); - void addRelation(const Uid &uid); - void addRelation(MRelation *relation); - - void insertRelation(int before_index, MRelation *relation); - + void insertRelation(int beforeIndex, MRelation *relation); void removeRelation(MRelation *relation); - void decontrolRelation(MRelation *relation); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - QString _name; - - Handles<MObject> _children; - - Handles<MRelation> _relations; - + QString m_name; + Handles<MObject> m_children; + Handles<MRelation> m_relations; }; -} +} // namespace qmt #endif // QMT_MOBJECT_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mpackage.cpp b/src/libs/3rdparty/modeling/qmt/model/mpackage.cpp index 22a53c6fc5..029aeeedd9 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mpackage.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mpackage.cpp @@ -33,7 +33,6 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MPackage::MPackage() @@ -55,4 +54,4 @@ void MPackage::accept(MConstVisitor *visitor) const visitor->visitMPackage(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mpackage.h b/src/libs/3rdparty/modeling/qmt/model/mpackage.h index 0893c5508b..601833e4dc 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mpackage.h +++ b/src/libs/3rdparty/modeling/qmt/model/mpackage.h @@ -34,31 +34,18 @@ #include "mobject.h" #include "qmt/infrastructure/handles.h" - namespace qmt { -class MAssociation; - - -class QMT_EXPORT MPackage : - public MObject +class QMT_EXPORT MPackage : public MObject { public: - MPackage(); - ~MPackage(); -public: - virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; - -private: - }; -} +} // namespace qmt #endif // QMT_MPACKAGE_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mrelation.cpp b/src/libs/3rdparty/modeling/qmt/model/mrelation.cpp index 79dca16ef9..cfdb3f28e5 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mrelation.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/mrelation.cpp @@ -33,21 +33,20 @@ #include "mvisitor.h" #include "mconstvisitor.h" - namespace qmt { MRelation::MRelation() : MElement(), - _end_a_uid(Uid::getInvalidUid()), - _end_b_uid(Uid::getInvalidUid()) + m_endAUid(Uid::invalidUid()), + m_endBUid(Uid::invalidUid()) { } MRelation::MRelation(const MRelation &rhs) : MElement(rhs), - _name(rhs._name), - _end_a_uid(rhs._end_a_uid), - _end_b_uid(rhs._end_b_uid) + m_name(rhs.m_name), + m_endAUid(rhs.m_endAUid), + m_endBUid(rhs.m_endBUid) { } @@ -58,27 +57,27 @@ MRelation::~MRelation() MRelation &MRelation::operator =(const MRelation &rhs) { if (this != &rhs) { - MElement::operator =(rhs); - _name = rhs._name; - _end_a_uid = rhs._end_a_uid; - _end_b_uid = rhs._end_b_uid; + MElement::operator=(rhs); + m_name = rhs.m_name; + m_endAUid = rhs.m_endAUid; + m_endBUid = rhs.m_endBUid; } return *this; } void MRelation::setName(const QString &name) { - _name = name; + m_name = name; } -void MRelation::setEndA(const Uid &uid) +void MRelation::setEndAUid(const Uid &uid) { - _end_a_uid = uid; + m_endAUid = uid; } -void MRelation::setEndB(const Uid &uid) +void MRelation::setEndBUid(const Uid &uid) { - _end_b_uid = uid; + m_endBUid = uid; } void MRelation::accept(MVisitor *visitor) @@ -91,4 +90,4 @@ void MRelation::accept(MConstVisitor *visitor) const visitor->visitMRelation(this); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/mrelation.h b/src/libs/3rdparty/modeling/qmt/model/mrelation.h index 95ec6ed3e9..a105fa46b3 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mrelation.h +++ b/src/libs/3rdparty/modeling/qmt/model/mrelation.h @@ -39,53 +39,31 @@ namespace qmt { class MObject; - -class QMT_EXPORT MRelation : - public MElement +class QMT_EXPORT MRelation : public MElement { public: - MRelation(); - MRelation(const MRelation &rhs); - ~MRelation(); -public: - MRelation &operator=(const MRelation &rhs); -public: - - QString getName() const { return _name; } - + QString name() const { return m_name; } void setName(const QString &name); - - Uid getEndA() const { return _end_a_uid; } - - void setEndA(const Uid &uid); - - Uid getEndB() const { return _end_b_uid; } - - void setEndB(const Uid &uid); - -public: + Uid endAUid() const { return m_endAUid; } + void setEndAUid(const Uid &uid); + Uid endBUid() const { return m_endBUid; } + void setEndBUid(const Uid &uid); virtual void accept(MVisitor *visitor); - virtual void accept(MConstVisitor *visitor) const; private: - - QString _name; - - Uid _end_a_uid; - - Uid _end_b_uid; - + QString m_name; + Uid m_endAUid; + Uid m_endBUid; }; -} - +} // namespace qmt #endif // QMT_MRELATION_H diff --git a/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.cpp b/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.cpp index ed565a2a6c..0344093533 100644 --- a/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.cpp +++ b/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.cpp @@ -36,14 +36,14 @@ namespace qmt { MSourceExpansion::MSourceExpansion() : MExpansion(), - _transient(false) + m_isTransient(false) { } MSourceExpansion::MSourceExpansion(const MSourceExpansion &rhs) : MExpansion(rhs), - _source_id(rhs._source_id), - _transient(rhs._transient) + m_sourceId(rhs.m_sourceId), + m_isTransient(rhs.m_isTransient) { } @@ -54,28 +54,28 @@ MSourceExpansion::~MSourceExpansion() MSourceExpansion &MSourceExpansion::operator=(const MSourceExpansion &rhs) { if (this != &rhs) { - _source_id = rhs._source_id; - _transient = rhs._transient; + m_sourceId = rhs.m_sourceId; + m_isTransient = rhs.m_isTransient; } return *this; } MSourceExpansion *MSourceExpansion::clone(const MElement &rhs) const { - MSourceExpansion *right_expansion = dynamic_cast<MSourceExpansion *>(rhs.getExpansion()); - QMT_CHECK(right_expansion); - MSourceExpansion *expansion = new MSourceExpansion(*right_expansion); + MSourceExpansion *rightExpansion = dynamic_cast<MSourceExpansion *>(rhs.expansion()); + QMT_CHECK(rightExpansion); + MSourceExpansion *expansion = new MSourceExpansion(*rightExpansion); return expansion; } -void MSourceExpansion::setSourceId(const QString &source_id) +void MSourceExpansion::setSourceId(const QString &sourceId) { - _source_id = source_id; + m_sourceId = sourceId; } void MSourceExpansion::setTransient(bool transient) { - _transient = transient; + m_isTransient = transient; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.h b/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.h index c66ab1ce44..2f89bac010 100644 --- a/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.h +++ b/src/libs/3rdparty/modeling/qmt/model/msourceexpansion.h @@ -35,40 +35,27 @@ namespace qmt { -class QMT_EXPORT MSourceExpansion : - public MExpansion +class QMT_EXPORT MSourceExpansion : public MExpansion { public: - MSourceExpansion(); - MSourceExpansion(const MSourceExpansion &rhs); - ~MSourceExpansion(); MSourceExpansion &operator=(const MSourceExpansion &rhs); -public: - MSourceExpansion *clone(const MElement &rhs) const; -public: - - QString getSourceId() const { return _source_id; } - - void setSourceId(const QString &source_id); - - bool isTransient() const { return _transient; } - + QString sourceId() const { return m_sourceId; } + void setSourceId(const QString &sourceId); + bool isTransient() const { return m_isTransient; } void setTransient(bool transient); private: - - QString _source_id; - - bool _transient; + QString m_sourceId; + bool m_isTransient; }; -} +} // namespace qmt #endif // QMT_MSOURCEEXPANSION_H diff --git a/src/libs/3rdparty/modeling/qmt/model/mvisitor.h b/src/libs/3rdparty/modeling/qmt/model/mvisitor.h index 171d2d9e03..7bde915773 100644 --- a/src/libs/3rdparty/modeling/qmt/model/mvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model/mvisitor.h @@ -54,31 +54,19 @@ public: virtual ~MVisitor() { } virtual void visitMElement(MElement *element) = 0; - virtual void visitMObject(MObject *object) = 0; - virtual void visitMPackage(MPackage *package) = 0; - virtual void visitMClass(MClass *klass) = 0; - virtual void visitMComponent(MComponent *component) = 0; - virtual void visitMDiagram(MDiagram *diagram) = 0; - virtual void visitMCanvasDiagram(MCanvasDiagram *diagram) = 0; - virtual void visitMItem(MItem *item) = 0; - virtual void visitMRelation(MRelation *relation) = 0; - virtual void visitMDependency(MDependency *dependency) = 0; - virtual void visitMInheritance(MInheritance *inheritance) = 0; - virtual void visitMAssociation(MAssociation *association) = 0; - }; -} +} // namespace qmt #endif // QMT_MVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.cpp b/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.cpp index 633db3888b..1529f25996 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.cpp @@ -53,11 +53,10 @@ void MChildrenVisitor::visitMElement(MElement *element) void MChildrenVisitor::visitMObject(MObject *object) { - foreach (const Handle<MObject> &handle, object->getChildren()) { - MObject *child = handle.getTarget(); - if (child) { + foreach (const Handle<MObject> &handle, object->children()) { + MObject *child = handle.target(); + if (child) child->accept(this); - } } visitMElement(object); } @@ -112,4 +111,4 @@ void MChildrenVisitor::visitMAssociation(MAssociation *association) visitMRelation(association); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.h b/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.h index 1cc97cf8bd..8500af941e 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mchildrenvisitor.h @@ -36,38 +36,25 @@ namespace qmt { -class QMT_EXPORT MChildrenVisitor : - public MVisitor +class QMT_EXPORT MChildrenVisitor : public MVisitor { public: MChildrenVisitor(); void visitMElement(MElement *element); - void visitMObject(MObject *object); - void visitMPackage(MPackage *package); - void visitMClass(MClass *klass); - void visitMComponent(MComponent *component); - void visitMDiagram(MDiagram *diagram); - void visitMCanvasDiagram(MCanvasDiagram *diagram); - void visitMItem(MItem *item); - void visitMRelation(MRelation *relation); - void visitMDependency(MDependency *dependency); - void visitMInheritance(MInheritance *inheritance); - void visitMAssociation(MAssociation *association); - }; -} +} // namespace qmt #endif // QMT_MCHILDRENVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.cpp b/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.cpp index e8156b8ec3..e62c30b13a 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.cpp @@ -46,238 +46,220 @@ #include "qmt/diagram/delement.h" #include "qmt/diagram_controller/dclonevisitor.h" - namespace qmt { MCloneVisitor::MCloneVisitor() - : _cloned(0) + : m_cloned(0) { } void MCloneVisitor::visitMElement(const MElement *element) { Q_UNUSED(element); - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); } void MCloneVisitor::visitMObject(const MObject *object) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitMElement(object); } void MCloneVisitor::visitMPackage(const MPackage *package) { - if (!_cloned) { - _cloned = new MPackage(*package); - } + if (!m_cloned) + m_cloned = new MPackage(*package); visitMObject(package); } void MCloneVisitor::visitMClass(const MClass *klass) { - if (!_cloned) { - _cloned = new MClass(*klass); - } + if (!m_cloned) + m_cloned = new MClass(*klass); visitMObject(klass); } void MCloneVisitor::visitMComponent(const MComponent *component) { - if (!_cloned) { - _cloned = new MComponent(*component); - } + if (!m_cloned) + m_cloned = new MComponent(*component); visitMObject(component); } void MCloneVisitor::visitMDiagram(const MDiagram *diagram) { - QMT_CHECK(_cloned); - MDiagram *cloned = dynamic_cast<MDiagram *>(_cloned); + QMT_CHECK(m_cloned); + MDiagram *cloned = dynamic_cast<MDiagram *>(m_cloned); QMT_CHECK(cloned); - foreach (const DElement *element, diagram->getDiagramElements()) { + foreach (const DElement *element, diagram->diagramElements()) { DCloneDeepVisitor visitor; element->accept(&visitor); - DElement *cloned_element = visitor.getCloned(); - cloned->addDiagramElement(cloned_element); + DElement *clonedElement = visitor.cloned(); + cloned->addDiagramElement(clonedElement); } visitMObject(diagram); } void MCloneVisitor::visitMCanvasDiagram(const MCanvasDiagram *diagram) { - if (!_cloned) { - _cloned = new MCanvasDiagram(*diagram); - } + if (!m_cloned) + m_cloned = new MCanvasDiagram(*diagram); visitMDiagram(diagram); } void MCloneVisitor::visitMItem(const MItem *item) { - if (!_cloned) { - _cloned = new MItem(*item); - } + if (!m_cloned) + m_cloned = new MItem(*item); visitMObject(item); } void MCloneVisitor::visitMRelation(const MRelation *relation) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitMElement(relation); } void MCloneVisitor::visitMDependency(const MDependency *dependency) { - if (!_cloned) { - _cloned = new MDependency(*dependency); - } + if (!m_cloned) + m_cloned = new MDependency(*dependency); visitMRelation(dependency); } void MCloneVisitor::visitMInheritance(const MInheritance *inheritance) { - if (!_cloned) { - _cloned = new MInheritance(*inheritance); - } + if (!m_cloned) + m_cloned = new MInheritance(*inheritance); visitMRelation(inheritance); } void MCloneVisitor::visitMAssociation(const MAssociation *association) { - if (!_cloned) { - _cloned = new MAssociation(*association); - } + if (!m_cloned) + m_cloned = new MAssociation(*association); visitMRelation(association); } - MCloneDeepVisitor::MCloneDeepVisitor() - : _cloned(0) + : m_cloned(0) { } void MCloneDeepVisitor::visitMElement(const MElement *element) { Q_UNUSED(element); - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); } void MCloneDeepVisitor::visitMObject(const MObject *object) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitMElement(object); - MObject *cloned = dynamic_cast<MObject *>(_cloned); + MObject *cloned = dynamic_cast<MObject *>(m_cloned); QMT_CHECK(cloned); - foreach (const Handle<MObject> &handle, object->getChildren()) { + foreach (const Handle<MObject> &handle, object->children()) { if (handle.hasTarget()) { MCloneDeepVisitor visitor; - handle.getTarget()->accept(&visitor); - MObject *cloned_child = dynamic_cast<MObject *>(visitor.getCloned()); - QMT_CHECK(cloned_child); - cloned->addChild(cloned_child); + handle.target()->accept(&visitor); + MObject *clonedChild = dynamic_cast<MObject *>(visitor.cloned()); + QMT_CHECK(clonedChild); + cloned->addChild(clonedChild); } else { - cloned->addChild(handle.getUid()); + cloned->addChild(handle.uid()); } } - foreach (const Handle<MRelation> &handle, object->getRelations()) { + foreach (const Handle<MRelation> &handle, object->relations()) { if (handle.hasTarget()) { MCloneDeepVisitor visitor; - handle.getTarget()->accept(&visitor); - MRelation *cloned_relation = dynamic_cast<MRelation *>(visitor.getCloned()); - QMT_CHECK(cloned_relation); - cloned->addRelation(cloned_relation); + handle.target()->accept(&visitor); + MRelation *clonedRelation = dynamic_cast<MRelation *>(visitor.cloned()); + QMT_CHECK(clonedRelation); + cloned->addRelation(clonedRelation); } else { - cloned->addRelation(handle.getUid()); + cloned->addRelation(handle.uid()); } } } void MCloneDeepVisitor::visitMPackage(const MPackage *package) { - if (!_cloned) { - _cloned = new MPackage(*package); - } + if (!m_cloned) + m_cloned = new MPackage(*package); visitMObject(package); } void MCloneDeepVisitor::visitMClass(const MClass *klass) { - if (!_cloned) { - _cloned = new MClass(*klass); - } + if (!m_cloned) + m_cloned = new MClass(*klass); visitMObject(klass); } void MCloneDeepVisitor::visitMComponent(const MComponent *component) { - if (!_cloned) { - _cloned = new MComponent(*component); - } + if (!m_cloned) + m_cloned = new MComponent(*component); visitMObject(component); } void MCloneDeepVisitor::visitMDiagram(const MDiagram *diagram) { - QMT_CHECK(_cloned); - MDiagram *cloned = dynamic_cast<MDiagram *>(_cloned); + QMT_CHECK(m_cloned); + MDiagram *cloned = dynamic_cast<MDiagram *>(m_cloned); QMT_CHECK(cloned); - foreach (const DElement *element, diagram->getDiagramElements()) { + foreach (const DElement *element, diagram->diagramElements()) { DCloneDeepVisitor visitor; element->accept(&visitor); - DElement *cloned_element = visitor.getCloned(); - cloned->addDiagramElement(cloned_element); + DElement *clonedElement = visitor.cloned(); + cloned->addDiagramElement(clonedElement); } visitMObject(diagram); } void MCloneDeepVisitor::visitMCanvasDiagram(const MCanvasDiagram *diagram) { - if (!_cloned) { - _cloned = new MCanvasDiagram(*diagram); - } + if (!m_cloned) + m_cloned = new MCanvasDiagram(*diagram); visitMDiagram(diagram); } void MCloneDeepVisitor::visitMItem(const MItem *item) { - if (!_cloned) { - _cloned = new MItem(*item); - } + if (!m_cloned) + m_cloned = new MItem(*item); visitMObject(item); } void MCloneDeepVisitor::visitMRelation(const MRelation *relation) { - QMT_CHECK(_cloned); + QMT_CHECK(m_cloned); visitMElement(relation); - MRelation *cloned = dynamic_cast<MRelation *>(_cloned); + MRelation *cloned = dynamic_cast<MRelation *>(m_cloned); QMT_CHECK(cloned); - cloned->setEndA(relation->getEndA()); - cloned->setEndB(relation->getEndB()); + cloned->setEndAUid(relation->endAUid()); + cloned->setEndBUid(relation->endBUid()); } void MCloneDeepVisitor::visitMDependency(const MDependency *dependency) { - if (!_cloned) { - _cloned = new MDependency(*dependency); - } + if (!m_cloned) + m_cloned = new MDependency(*dependency); visitMRelation(dependency); } void MCloneDeepVisitor::visitMInheritance(const MInheritance *inheritance) { - if (!_cloned) { - _cloned = new MInheritance(*inheritance); - } + if (!m_cloned) + m_cloned = new MInheritance(*inheritance); visitMRelation(inheritance); } void MCloneDeepVisitor::visitMAssociation(const MAssociation *association) { - if (!_cloned) { - _cloned = new MAssociation(*association); - } + if (!m_cloned) + m_cloned = new MAssociation(*association); visitMRelation(association); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.h b/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.h index a5db965421..b222a56e71 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mclonevisitor.h @@ -38,79 +38,54 @@ namespace qmt { -class QMT_EXPORT MCloneVisitor : - public MConstVisitor +class QMT_EXPORT MCloneVisitor : public MConstVisitor { public: MCloneVisitor(); - MElement *getCloned() const { return _cloned; } + MElement *cloned() const { return m_cloned; } void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); private: - MElement *_cloned; + MElement *m_cloned; }; -class QMT_EXPORT MCloneDeepVisitor : - public MConstVisitor +class QMT_EXPORT MCloneDeepVisitor : public MConstVisitor { public: MCloneDeepVisitor(); - MElement *getCloned() const { return _cloned; } + MElement *cloned() const { return m_cloned; } void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); private: - MElement *_cloned; + MElement *m_cloned; }; -} - +} // namespace qmt #endif // QMT_CLONEVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mcontainer.h b/src/libs/3rdparty/modeling/qmt/model_controller/mcontainer.h index b140b7d9f2..4cc07a89b5 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mcontainer.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mcontainer.h @@ -34,14 +34,12 @@ #include "qmt/controller/container.h" #include "qmt/model/melement.h" - namespace qmt { -class QMT_EXPORT MContainer : - public Container<MElement> +class QMT_EXPORT MContainer : public Container<MElement> { }; -} +} // namespace qmt #endif // QMT_MCONTAINER_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.cpp b/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.cpp index 5ca129b805..28a03bf89b 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.cpp @@ -40,28 +40,27 @@ #include "qmt/model/minheritance.h" #include "qmt/model/massociation.h" - namespace qmt { // TODO may flat assignment visitor use operator=() ? MFlatAssignmentVisitor::MFlatAssignmentVisitor(MElement *target) - : _target(target) + : m_target(target) { - QMT_CHECK(_target); + QMT_CHECK(m_target); } void MFlatAssignmentVisitor::visitMElement(const MElement *element) { - _target->setStereotypes(element->getStereotypes()); + m_target->setStereotypes(element->stereotypes()); } void MFlatAssignmentVisitor::visitMObject(const MObject *object) { visitMElement(object); - MObject *target_object = dynamic_cast<MObject *>(_target); - QMT_CHECK(target_object); - target_object->setName(object->getName()); + MObject *targetObject = dynamic_cast<MObject *>(m_target); + QMT_CHECK(targetObject); + targetObject->setName(object->name()); } void MFlatAssignmentVisitor::visitMPackage(const MPackage *package) @@ -72,11 +71,11 @@ void MFlatAssignmentVisitor::visitMPackage(const MPackage *package) void MFlatAssignmentVisitor::visitMClass(const MClass *klass) { visitMObject(klass); - MClass *target_class = dynamic_cast<MClass *>(_target); - QMT_CHECK(target_class); - target_class->setNamespace(klass->getNamespace()); - target_class->setTemplateParameters(klass->getTemplateParameters()); - target_class->setMembers(klass->getMembers()); + MClass *targetClass = dynamic_cast<MClass *>(m_target); + QMT_CHECK(targetClass); + targetClass->setUmlNamespace(klass->umlNamespace()); + targetClass->setTemplateParameters(klass->templateParameters()); + targetClass->setMembers(klass->members()); } void MFlatAssignmentVisitor::visitMComponent(const MComponent *component) @@ -97,27 +96,27 @@ void MFlatAssignmentVisitor::visitMCanvasDiagram(const MCanvasDiagram *diagram) void MFlatAssignmentVisitor::visitMItem(const MItem *item) { visitMObject(item); - MItem *target_item = dynamic_cast<MItem *>(_target); - QMT_CHECK(target_item); - target_item->setVarietyEditable(item->isVarietyEditable()); - target_item->setVariety(item->getVariety()); - target_item->setShapeEditable(item->isShapeEditable()); + MItem *targetItem = dynamic_cast<MItem *>(m_target); + QMT_CHECK(targetItem); + targetItem->setVarietyEditable(item->isVarietyEditable()); + targetItem->setVariety(item->variety()); + targetItem->setShapeEditable(item->isShapeEditable()); } void MFlatAssignmentVisitor::visitMRelation(const MRelation *relation) { visitMElement(relation); - MRelation *target_relation = dynamic_cast<MRelation *>(_target); - QMT_CHECK(target_relation); - target_relation->setName(relation->getName()); + MRelation *targetRelation = dynamic_cast<MRelation *>(m_target); + QMT_CHECK(targetRelation); + targetRelation->setName(relation->name()); } void MFlatAssignmentVisitor::visitMDependency(const MDependency *dependency) { visitMRelation(dependency); - MDependency *target_dependency = dynamic_cast<MDependency *>(_target); - QMT_CHECK(target_dependency); - target_dependency->setDirection(dependency->getDirection()); + MDependency *targetDependency = dynamic_cast<MDependency *>(m_target); + QMT_CHECK(targetDependency); + targetDependency->setDirection(dependency->direction()); } void MFlatAssignmentVisitor::visitMInheritance(const MInheritance *inheritance) @@ -128,10 +127,10 @@ void MFlatAssignmentVisitor::visitMInheritance(const MInheritance *inheritance) void MFlatAssignmentVisitor::visitMAssociation(const MAssociation *association) { visitMRelation(association); - MAssociation *target_association = dynamic_cast<MAssociation *>(_target); - QMT_CHECK(target_association); - target_association->setA(association->getA()); - target_association->setB(association->getB()); + MAssociation *targetAssociation = dynamic_cast<MAssociation *>(m_target); + QMT_CHECK(targetAssociation); + targetAssociation->setEndA(association->endA()); + targetAssociation->setEndB(association->endB()); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.h b/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.h index dbaa6a7984..6be996a927 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mflatassignmentvisitor.h @@ -34,49 +34,32 @@ #include "qmt/model/mconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class MAssociationEnd; - -class QMT_EXPORT MFlatAssignmentVisitor : - public MConstVisitor +class QMT_EXPORT MFlatAssignmentVisitor : public MConstVisitor { public: - MFlatAssignmentVisitor(MElement *target); void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); private: - - MElement *_target; + MElement *m_target; }; - -} +} // namespace qmt #endif // QMT_MFLATASSIGNMENTVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.cpp b/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.cpp index 7ecdabc4d5..7743329220 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.cpp @@ -47,53 +47,51 @@ namespace qmt { -struct ModelController::Clone { +class ModelController::Clone +{ +public: Clone(); - ElementType _element_type; - Uid _element_key; - Uid _owner_key; - int _index_of_element; - MElement *_cloned_element; + ElementType m_elementType; + Uid m_elementKey; + Uid m_ownerKey; + int m_indexOfElement; + MElement *m_clonedElement; }; ModelController::Clone::Clone() - : _element_type(TYPE_UNKNOWN), - _index_of_element(-1), - _cloned_element(0) + : m_elementType(TypeUnknown), + m_indexOfElement(-1), + m_clonedElement(0) { } - -class ModelController::UpdateObjectCommand : - public UndoCommand +class ModelController::UpdateObjectCommand : public UndoCommand { public: - UpdateObjectCommand(ModelController *model_controller, MObject *object) + UpdateObjectCommand(ModelController *modelController, MObject *object) : UndoCommand(tr("Change Object")), - _model_controller(model_controller), - _object(0) + m_modelController(modelController), + m_object(0) { MCloneVisitor visitor; object->accept(&visitor); - _object = dynamic_cast<MObject *>(visitor.getCloned()); - QMT_CHECK(_object); + m_object = dynamic_cast<MObject *>(visitor.cloned()); + QMT_CHECK(m_object); } ~UpdateObjectCommand() { - delete _object; + delete m_object; } bool mergeWith(const UndoCommand *other) { - const UpdateObjectCommand *update_command = dynamic_cast<const UpdateObjectCommand *>(other); - if (!update_command) { + const UpdateObjectCommand *updateCommand = dynamic_cast<const UpdateObjectCommand *>(other); + if (!updateCommand) return false; - } - if (_object->getUid() != update_command->_object->getUid()) { + if (m_object->uid() != updateCommand->m_object->uid()) return false; - } // the last update is a complete update of all changes... return true; } @@ -115,66 +113,60 @@ public: private: void assign() { - MObject *object = _model_controller->findObject<MObject>(_object->getUid()); + MObject *object = m_modelController->findObject<MObject>(m_object->uid()); QMT_CHECK(object); int row = 0; - MObject *parent = object->getOwner(); + MObject *parent = object->owner(); if (!parent) { - QMT_CHECK(object == _model_controller->_root_package); + QMT_CHECK(object == m_modelController->m_rootPackage); } else { - row = object->getOwner()->getChildren().indexOf(object); + row = object->owner()->children().indexOf(object); } - emit _model_controller->beginUpdateObject(row, parent); - MCloneVisitor clone_visitor; - object->accept(&clone_visitor); - MObject *new_object = dynamic_cast<MObject *>(clone_visitor.getCloned()); - QMT_CHECK(new_object); - MFlatAssignmentVisitor assign_visitor(object); - _object->accept(&assign_visitor); - delete _object; - _object = new_object; - emit _model_controller->endUpdateObject(row, parent); - emit _model_controller->modified(); - _model_controller->verifyModelIntegrity(); - } - -private: - - ModelController *_model_controller; - - MObject *_object; + emit m_modelController->beginUpdateObject(row, parent); + MCloneVisitor cloneVisitor; + object->accept(&cloneVisitor); + MObject *newObject = dynamic_cast<MObject *>(cloneVisitor.cloned()); + QMT_CHECK(newObject); + MFlatAssignmentVisitor assignVisitor(object); + m_object->accept(&assignVisitor); + delete m_object; + m_object = newObject; + emit m_modelController->endUpdateObject(row, parent); + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); + } + + ModelController *m_modelController; + MObject *m_object; }; - class ModelController::UpdateRelationCommand : public UndoCommand { public: - UpdateRelationCommand(ModelController *model_controller, MRelation *relation) + UpdateRelationCommand(ModelController *modelController, MRelation *relation) : UndoCommand(tr("Change Relation")), - _model_controller(model_controller), - _relation(0) + m_modelController(modelController), + m_relation(0) { MCloneVisitor visitor; relation->accept(&visitor); - _relation = dynamic_cast<MRelation *>(visitor.getCloned()); - QMT_CHECK(_relation); + m_relation = dynamic_cast<MRelation *>(visitor.cloned()); + QMT_CHECK(m_relation); } ~UpdateRelationCommand() { - delete _relation; + delete m_relation; } bool mergeWith(const UndoCommand *other) { - const UpdateRelationCommand *update_command = dynamic_cast<const UpdateRelationCommand *>(other); - if (!update_command) { + const UpdateRelationCommand *updateCommand = dynamic_cast<const UpdateRelationCommand *>(other); + if (!updateCommand) return false; - } - if (_relation->getUid() != update_command->_relation->getUid()) { + if (m_relation->uid() != updateCommand->m_relation->uid()) return false; - } // the last update is a complete update of all changes... return true; } @@ -196,93 +188,87 @@ public: private: void assign() { - MRelation *relation = _model_controller->findRelation<MRelation>(_relation->getUid()); + MRelation *relation = m_modelController->findRelation<MRelation>(m_relation->uid()); QMT_CHECK(relation); - MObject *owner = relation->getOwner(); + MObject *owner = relation->owner(); QMT_CHECK(owner); - int row = owner->getRelations().indexOf(relation); - emit _model_controller->beginUpdateRelation(row, owner); - MCloneVisitor clone_visitor; - relation->accept(&clone_visitor); - MRelation *new_relation = dynamic_cast<MRelation *>(clone_visitor.getCloned()); - QMT_CHECK(new_relation); - MFlatAssignmentVisitor assign_visitor(relation); - _relation->accept(&assign_visitor); - delete _relation; - _relation = new_relation; - emit _model_controller->endUpdateRelation(row, owner); - emit _model_controller->modified(); - _model_controller->verifyModelIntegrity(); - } - -private: - - ModelController *_model_controller; - - MRelation *_relation; + int row = owner->relations().indexOf(relation); + emit m_modelController->beginUpdateRelation(row, owner); + MCloneVisitor cloneVisitor; + relation->accept(&cloneVisitor); + MRelation *newRelation = dynamic_cast<MRelation *>(cloneVisitor.cloned()); + QMT_CHECK(newRelation); + MFlatAssignmentVisitor assignVisitor(relation); + m_relation->accept(&assignVisitor); + delete m_relation; + m_relation = newRelation; + emit m_modelController->endUpdateRelation(row, owner); + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); + } + + ModelController *m_modelController; + MRelation *m_relation; }; - -class ModelController::AddElementsCommand : - public UndoCommand +class ModelController::AddElementsCommand : public UndoCommand { public: - AddElementsCommand(ModelController *model_controller, const QString &command_label) - : UndoCommand(command_label), - _model_controller(model_controller) + AddElementsCommand(ModelController *modelController, const QString &commandLabel) + : UndoCommand(commandLabel), + m_modelController(modelController) { } ~AddElementsCommand() { - foreach (const Clone &clone, _cloned_elements) { - delete clone._cloned_element; - } + foreach (const Clone &clone, m_clonedElements) + delete clone.m_clonedElement; } - void add(ElementType elements_type, const Uid &object_key, const Uid &owner_key) + void add(ElementType elementsType, const Uid &objectKey, const Uid &ownerKey) { Clone clone; - clone._element_type = elements_type; - clone._element_key = object_key; - clone._owner_key = owner_key; - clone._index_of_element = -1; - _cloned_elements.append(clone); + clone.m_elementType = elementsType; + clone.m_elementKey = objectKey; + clone.m_ownerKey = ownerKey; + clone.m_indexOfElement = -1; + m_clonedElements.append(clone); } void redo() { if (canRedo()) { bool inserted = false; - for (int i = _cloned_elements.count() - 1; i >= 0; --i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(clone._cloned_element); - QMT_CHECK(clone._cloned_element->getUid() == clone._element_key); - MObject *owner = _model_controller->findObject<MObject>(clone._owner_key); + for (int i = m_clonedElements.count() - 1; i >= 0; --i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(clone.m_clonedElement); + QMT_CHECK(clone.m_clonedElement->uid() == clone.m_elementKey); + MObject *owner = m_modelController->findObject<MObject>(clone.m_ownerKey); QMT_CHECK(owner); - QMT_CHECK(clone._index_of_element >= 0); - switch (clone._element_type) { - case TYPE_OBJECT: + QMT_CHECK(clone.m_indexOfElement >= 0); + switch (clone.m_elementType) { + case TypeObject: { - emit _model_controller->beginInsertObject(clone._index_of_element, owner); - MObject *object = dynamic_cast<MObject *>(clone._cloned_element); + emit m_modelController->beginInsertObject(clone.m_indexOfElement, owner); + MObject *object = dynamic_cast<MObject *>(clone.m_clonedElement); QMT_CHECK(object); - _model_controller->mapObject(object); - owner->insertChild(clone._index_of_element, object); - clone._cloned_element = 0; - emit _model_controller->endInsertObject(clone._index_of_element, owner); + m_modelController->mapObject(object); + owner->insertChild(clone.m_indexOfElement, object); + clone.m_clonedElement = 0; + emit m_modelController->endInsertObject(clone.m_indexOfElement, owner); inserted = true; break; } - case TYPE_RELATION: + case TypeRelation: { - emit _model_controller->beginInsertRelation(clone._index_of_element, owner); - MRelation *relation = dynamic_cast<MRelation *>(clone._cloned_element); + emit m_modelController->beginInsertRelation(clone.m_indexOfElement, owner); + MRelation *relation = dynamic_cast<MRelation *>(clone.m_clonedElement); QMT_CHECK(relation); - _model_controller->mapRelation(relation); - owner->insertRelation(clone._index_of_element, relation); - clone._cloned_element = 0; - emit _model_controller->endInsertRelation(clone._index_of_element, owner); + m_modelController->mapRelation(relation); + owner->insertRelation(clone.m_indexOfElement, relation); + clone.m_clonedElement = 0; + emit m_modelController->endInsertRelation(clone.m_indexOfElement, owner); inserted = true; break; } @@ -291,10 +277,9 @@ public: break; } } - if (inserted) { - emit _model_controller->modified(); - } - _model_controller->verifyModelIntegrity(); + if (inserted) + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); UndoCommand::redo(); } } @@ -302,41 +287,41 @@ public: void undo() { bool removed = false; - for (int i = 0; i < _cloned_elements.count(); ++i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(!clone._cloned_element); - MObject *owner = _model_controller->findObject<MObject>(clone._owner_key); + for (int i = 0; i < m_clonedElements.count(); ++i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(!clone.m_clonedElement); + MObject *owner = m_modelController->findObject<MObject>(clone.m_ownerKey); QMT_CHECK(owner); - switch (clone._element_type) { - case TYPE_OBJECT: + switch (clone.m_elementType) { + case TypeObject: { - MObject *object = _model_controller->findObject<MObject>(clone._element_key); + MObject *object = m_modelController->findObject<MObject>(clone.m_elementKey); QMT_CHECK(object); - clone._index_of_element = owner->getChildren().indexOf(object); - QMT_CHECK(clone._index_of_element >= 0); - emit _model_controller->beginRemoveObject(clone._index_of_element, owner); + clone.m_indexOfElement = owner->children().indexOf(object); + QMT_CHECK(clone.m_indexOfElement >= 0); + emit m_modelController->beginRemoveObject(clone.m_indexOfElement, owner); MCloneDeepVisitor visitor; object->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - _model_controller->unmapObject(object); + clone.m_clonedElement = visitor.cloned(); + m_modelController->unmapObject(object); owner->removeChild(object); - emit _model_controller->endRemoveObject(clone._index_of_element, owner); + emit m_modelController->endRemoveObject(clone.m_indexOfElement, owner); removed = true; break; } - case TYPE_RELATION: + case TypeRelation: { - MRelation *relation = _model_controller->findRelation<MRelation>(clone._element_key); + MRelation *relation = m_modelController->findRelation<MRelation>(clone.m_elementKey); QMT_CHECK(relation); - clone._index_of_element = owner->getRelations().indexOf(relation); - QMT_CHECK(clone._index_of_element >= 0); - emit _model_controller->beginRemoveRelation(clone._index_of_element, owner); + clone.m_indexOfElement = owner->relations().indexOf(relation); + QMT_CHECK(clone.m_indexOfElement >= 0); + emit m_modelController->beginRemoveRelation(clone.m_indexOfElement, owner); MCloneDeepVisitor visitor; relation->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - _model_controller->unmapRelation(relation); + clone.m_clonedElement = visitor.cloned(); + m_modelController->unmapRelation(relation); owner->removeRelation(relation); - emit _model_controller->endRemoveRelation(clone._index_of_element, owner); + emit m_modelController->endRemoveRelation(clone.m_indexOfElement, owner); removed = true; break; } @@ -345,101 +330,95 @@ public: break; } } - if (removed) { - emit _model_controller->modified(); - } - _model_controller->verifyModelIntegrity(); + if (removed) + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); UndoCommand::undo(); } private: - - ModelController *_model_controller; - - QList<Clone> _cloned_elements; + ModelController *m_modelController; + QList<Clone> m_clonedElements; }; - -class ModelController::RemoveElementsCommand : - public UndoCommand +class ModelController::RemoveElementsCommand : public UndoCommand { public: - RemoveElementsCommand(ModelController *model_controller, const QString &command_label) - : UndoCommand(command_label), - _model_controller(model_controller) + RemoveElementsCommand(ModelController *modelController, const QString &commandLabel) + : UndoCommand(commandLabel), + m_modelController(modelController) { } ~RemoveElementsCommand() { - foreach (const Clone &clone, _cloned_elements) { - delete clone._cloned_element; - } + foreach (const Clone &clone, m_clonedElements) + delete clone.m_clonedElement; } void add(MElement *element, MObject *owner) { - struct Clone clone; + ModelController::Clone clone; - clone._element_key = element->getUid(); - clone._owner_key = owner->getUid(); + clone.m_elementKey = element->uid(); + clone.m_ownerKey = owner->uid(); if (MObject *object = dynamic_cast<MObject *>(element)) { - clone._element_type = TYPE_OBJECT; - clone._index_of_element = owner->getChildren().indexOf(object); - QMT_CHECK(clone._index_of_element >= 0); + clone.m_elementType = TypeObject; + clone.m_indexOfElement = owner->children().indexOf(object); + QMT_CHECK(clone.m_indexOfElement >= 0); } else if (MRelation *relation = dynamic_cast<MRelation *>(element)) { - clone._element_type = TYPE_RELATION; - clone._index_of_element = owner->getRelations().indexOf(relation); - QMT_CHECK(clone._index_of_element >= 0); + clone.m_elementType = TypeRelation; + clone.m_indexOfElement = owner->relations().indexOf(relation); + QMT_CHECK(clone.m_indexOfElement >= 0); } else { QMT_CHECK(false); } MCloneDeepVisitor visitor; element->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - QMT_CHECK(clone._cloned_element); - _cloned_elements.append(clone); + clone.m_clonedElement = visitor.cloned(); + QMT_CHECK(clone.m_clonedElement); + m_clonedElements.append(clone); } void redo() { if (canRedo()) { bool removed = false; - for (int i = 0; i < _cloned_elements.count(); ++i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(!clone._cloned_element); - MObject *owner = _model_controller->findObject<MObject>(clone._owner_key); + for (int i = 0; i < m_clonedElements.count(); ++i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(!clone.m_clonedElement); + MObject *owner = m_modelController->findObject<MObject>(clone.m_ownerKey); QMT_CHECK(owner); - switch (clone._element_type) { - case TYPE_OBJECT: + switch (clone.m_elementType) { + case TypeObject: { - MObject *object = _model_controller->findObject<MObject>(clone._element_key); + MObject *object = m_modelController->findObject<MObject>(clone.m_elementKey); QMT_CHECK(object); - clone._index_of_element = owner->getChildren().indexOf(object); - QMT_CHECK(clone._index_of_element >= 0); - emit _model_controller->beginRemoveObject(clone._index_of_element, owner); + clone.m_indexOfElement = owner->children().indexOf(object); + QMT_CHECK(clone.m_indexOfElement >= 0); + emit m_modelController->beginRemoveObject(clone.m_indexOfElement, owner); MCloneDeepVisitor visitor; object->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - _model_controller->unmapObject(object); + clone.m_clonedElement = visitor.cloned(); + m_modelController->unmapObject(object); owner->removeChild(object); - emit _model_controller->endRemoveObject(clone._index_of_element, owner); + emit m_modelController->endRemoveObject(clone.m_indexOfElement, owner); removed = true; break; } - case TYPE_RELATION: + case TypeRelation: { - MRelation *relation = _model_controller->findRelation<MRelation>(clone._element_key); + MRelation *relation = m_modelController->findRelation<MRelation>(clone.m_elementKey); QMT_CHECK(relation); - clone._index_of_element = owner->getRelations().indexOf(relation); - QMT_CHECK(clone._index_of_element >= 0); - emit _model_controller->beginRemoveRelation(clone._index_of_element, owner); + clone.m_indexOfElement = owner->relations().indexOf(relation); + QMT_CHECK(clone.m_indexOfElement >= 0); + emit m_modelController->beginRemoveRelation(clone.m_indexOfElement, owner); MCloneDeepVisitor visitor; relation->accept(&visitor); - clone._cloned_element = visitor.getCloned(); - _model_controller->unmapRelation(relation); + clone.m_clonedElement = visitor.cloned(); + m_modelController->unmapRelation(relation); owner->removeRelation(relation); - emit _model_controller->endRemoveRelation(clone._index_of_element, owner); + emit m_modelController->endRemoveRelation(clone.m_indexOfElement, owner); removed = true; break; } @@ -448,10 +427,9 @@ public: break; } } - if (removed) { - emit _model_controller->modified(); - } - _model_controller->verifyModelIntegrity(); + if (removed) + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); UndoCommand::redo(); } } @@ -459,34 +437,34 @@ public: void undo() { bool inserted = false; - for (int i = _cloned_elements.count() - 1; i >= 0; --i) { - Clone &clone = _cloned_elements[i]; - QMT_CHECK(clone._cloned_element); - MObject *owner = _model_controller->findObject<MObject>(clone._owner_key); + for (int i = m_clonedElements.count() - 1; i >= 0; --i) { + Clone &clone = m_clonedElements[i]; + QMT_CHECK(clone.m_clonedElement); + MObject *owner = m_modelController->findObject<MObject>(clone.m_ownerKey); QMT_CHECK(owner); - QMT_CHECK(clone._index_of_element >= 0); - switch (clone._element_type) { - case TYPE_OBJECT: + QMT_CHECK(clone.m_indexOfElement >= 0); + switch (clone.m_elementType) { + case TypeObject: { - emit _model_controller->beginInsertObject(clone._index_of_element, owner); - MObject *object = dynamic_cast<MObject *>(clone._cloned_element); + emit m_modelController->beginInsertObject(clone.m_indexOfElement, owner); + MObject *object = dynamic_cast<MObject *>(clone.m_clonedElement); QMT_CHECK(object); - _model_controller->mapObject(object); - owner->insertChild(clone._index_of_element, object); - clone._cloned_element = 0; - emit _model_controller->endInsertObject(clone._index_of_element, owner); + m_modelController->mapObject(object); + owner->insertChild(clone.m_indexOfElement, object); + clone.m_clonedElement = 0; + emit m_modelController->endInsertObject(clone.m_indexOfElement, owner); inserted = true; break; } - case TYPE_RELATION: + case TypeRelation: { - emit _model_controller->beginInsertRelation(clone._index_of_element, owner); - MRelation *relation = dynamic_cast<MRelation *>(clone._cloned_element); + emit m_modelController->beginInsertRelation(clone.m_indexOfElement, owner); + MRelation *relation = dynamic_cast<MRelation *>(clone.m_clonedElement); QMT_CHECK(relation); - _model_controller->mapRelation(relation); - owner->insertRelation(clone._index_of_element, relation); - clone._cloned_element = 0; - emit _model_controller->endInsertRelation(clone._index_of_element, owner); + m_modelController->mapRelation(relation); + owner->insertRelation(clone.m_indexOfElement, relation); + clone.m_clonedElement = 0; + emit m_modelController->endInsertRelation(clone.m_indexOfElement, owner); inserted = true; break; } @@ -495,31 +473,26 @@ public: break; } } - if (inserted) { - emit _model_controller->modified(); - } - _model_controller->verifyModelIntegrity(); + if (inserted) + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); UndoCommand::undo(); } private: - - ModelController *_model_controller; - - QList<Clone> _cloned_elements; + ModelController *m_modelController; + QList<Clone> m_clonedElements; }; - -class ModelController::MoveObjectCommand : - public UndoCommand +class ModelController::MoveObjectCommand : public UndoCommand { public: - MoveObjectCommand(ModelController *model_controller, MObject *object) + MoveObjectCommand(ModelController *modelController, MObject *object) : UndoCommand(tr("Move Object")), - _model_controller(model_controller), - _object_key(object->getUid()), - _owner_key(object->getOwner()->getUid()), - _index_of_element(object->getOwner()->getChildren().indexOf(object)) + m_modelController(modelController), + m_objectKey(object->uid()), + m_ownerKey(object->owner()->uid()), + m_indexOfElement(object->owner()->children().indexOf(object)) { } @@ -542,48 +515,39 @@ public: } private: - void swap() { - MObject *object = _model_controller->findObject(_object_key); + MObject *object = m_modelController->findObject(m_objectKey); QMT_CHECK(object); - MObject *former_owner = object->getOwner(); - int former_row = former_owner->getChildren().indexOf(object); - emit _model_controller->beginMoveObject(former_row, former_owner); - former_owner->decontrolChild(object); - MObject *new_owner = _model_controller->findObject(_owner_key); - new_owner->insertChild(_index_of_element, object); - int new_row = _index_of_element; - _owner_key = former_owner->getUid(); - _index_of_element = former_row; - emit _model_controller->endMoveObject(new_row, new_owner); - emit _model_controller->modified(); - _model_controller->verifyModelIntegrity(); - } - -private: - - ModelController *_model_controller; - - Uid _object_key; - - Uid _owner_key; - - int _index_of_element; - + MObject *formerOwner = object->owner(); + int formerRow = formerOwner->children().indexOf(object); + emit m_modelController->beginMoveObject(formerRow, formerOwner); + formerOwner->decontrolChild(object); + MObject *newOwner = m_modelController->findObject(m_ownerKey); + newOwner->insertChild(m_indexOfElement, object); + int newRow = m_indexOfElement; + m_ownerKey = formerOwner->uid(); + m_indexOfElement = formerRow; + emit m_modelController->endMoveObject(newRow, newOwner); + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); + } + + ModelController *m_modelController; + Uid m_objectKey; + Uid m_ownerKey; + int m_indexOfElement; }; - -class ModelController::MoveRelationCommand : - public UndoCommand +class ModelController::MoveRelationCommand : public UndoCommand { public: - MoveRelationCommand(ModelController *model_controller, MRelation *relation) + MoveRelationCommand(ModelController *modelController, MRelation *relation) : UndoCommand(tr("Move Relation")), - _model_controller(model_controller), - _relation_key(relation->getUid()), - _owner_key(relation->getOwner()->getUid()), - _index_of_element(relation->getOwner()->getRelations().indexOf(relation)) + m_modelController(modelController), + m_relationKey(relation->uid()), + m_ownerKey(relation->owner()->uid()), + m_indexOfElement(relation->owner()->relations().indexOf(relation)) { } @@ -606,136 +570,124 @@ public: } private: - void swap() { - MRelation *relation = _model_controller->findRelation(_relation_key); + MRelation *relation = m_modelController->findRelation(m_relationKey); QMT_CHECK(relation); - MObject *former_owner = relation->getOwner(); - int former_row = former_owner->getRelations().indexOf(relation); - emit _model_controller->beginMoveRelation(former_row, former_owner); - former_owner->decontrolRelation(relation); - MObject *new_owner = _model_controller->findObject(_owner_key); - new_owner->insertRelation(_index_of_element, relation); - int new_row = _index_of_element; - _owner_key = former_owner->getUid(); - _index_of_element = former_row; - emit _model_controller->endMoveRelation(new_row, new_owner); - emit _model_controller->modified(); - _model_controller->verifyModelIntegrity(); - } - -private: - - ModelController *_model_controller; - - Uid _relation_key; - - Uid _owner_key; - - int _index_of_element; - + MObject *formerOwner = relation->owner(); + int formerRow = formerOwner->relations().indexOf(relation); + emit m_modelController->beginMoveRelation(formerRow, formerOwner); + formerOwner->decontrolRelation(relation); + MObject *newOwner = m_modelController->findObject(m_ownerKey); + newOwner->insertRelation(m_indexOfElement, relation); + int newRow = m_indexOfElement; + m_ownerKey = formerOwner->uid(); + m_indexOfElement = formerRow; + emit m_modelController->endMoveRelation(newRow, newOwner); + emit m_modelController->modified(); + m_modelController->verifyModelIntegrity(); + } + + ModelController *m_modelController; + Uid m_relationKey; + Uid m_ownerKey; + int m_indexOfElement; }; - ModelController::ModelController(QObject *parent) : QObject(parent), - _root_package(0), - _undo_controller(0), - _resetting_model(false) + m_rootPackage(0), + m_undoController(0), + m_isResettingModel(false) { } ModelController::~ModelController() { - delete _root_package; + delete m_rootPackage; } -void ModelController::setRootPackage(MPackage *root_package) +void ModelController::setRootPackage(MPackage *rootPackage) { startResetModel(); - unmapObject(_root_package); - _root_package = root_package; - mapObject(_root_package); + unmapObject(m_rootPackage); + m_rootPackage = rootPackage; + mapObject(m_rootPackage); finishResetModel(false); } -void ModelController::setUndoController(UndoController *undo_controller) +void ModelController::setUndoController(UndoController *undoController) { - _undo_controller = undo_controller; + m_undoController = undoController; } -Uid ModelController::getOwnerKey(const MElement *element) const +Uid ModelController::ownerKey(const MElement *element) const { QMT_CHECK(element); - MObject *owner = element->getOwner(); - if (!owner) { + MObject *owner = element->owner(); + if (!owner) return Uid(); - } - return owner->getUid(); + return owner->uid(); } MElement *ModelController::findElement(const Uid &key) { - if (MObject *object = findObject(key)) { + if (MObject *object = findObject(key)) return object; - } else if (MRelation *relation = findRelation(key)) { + else if (MRelation *relation = findRelation(key)) return relation; - } return 0; } void ModelController::startResetModel() { - QMT_CHECK(!_resetting_model); - _resetting_model = true; + QMT_CHECK(!m_isResettingModel); + m_isResettingModel = true; emit beginResetModel(); - QMT_CHECK(_resetting_model); + QMT_CHECK(m_isResettingModel); } void ModelController::finishResetModel(bool modified) { - QMT_CHECK(_resetting_model); + QMT_CHECK(m_isResettingModel); emit endResetModel(); - if (modified) { + if (modified) emit this->modified(); - } - QMT_CHECK(_resetting_model); - _resetting_model = false; + QMT_CHECK(m_isResettingModel); + m_isResettingModel = false; } -MObject *ModelController::getObject(int row, const MObject *owner) const +MObject *ModelController::object(int row, const MObject *owner) const { if (!owner) { QMT_CHECK(row == 0); - return _root_package; + return m_rootPackage; } - QMT_CHECK(row >= 0 && row < owner->getChildren().size()); - return owner->getChildren().at(row); + QMT_CHECK(row >= 0 && row < owner->children().size()); + return owner->children().at(row); } MObject *ModelController::findObject(const Uid &key) const { - return _objects_map.value(key); + return m_objectsMap.value(key); } -void ModelController::addObject(MPackage *parent_package, MObject *object) +void ModelController::addObject(MPackage *parentPackage, MObject *object) { - QMT_CHECK(parent_package); + QMT_CHECK(parentPackage); QMT_CHECK(object); - int row = parent_package->getChildren().size(); - if (!_resetting_model) { - emit beginInsertObject(row, parent_package); - } + int row = parentPackage->children().size(); + if (!m_isResettingModel) + emit beginInsertObject(row, parentPackage); mapObject(object); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, tr("Add Object")); - _undo_controller->push(undo_command); - undo_command->add(TYPE_OBJECT, object->getUid(), parent_package->getUid()); - } - parent_package->addChild(object); - if (!_resetting_model) { - emit endInsertObject(row, parent_package); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, tr("Add Object")); + m_undoController->push(undoCommand); + undoCommand->add(TypeObject, object->uid(), parentPackage->uid()); + } + parentPackage->addChild(object); + if (!m_isResettingModel) { + emit endInsertObject(row, parentPackage); emit modified(); } verifyModelIntegrity(); @@ -744,31 +696,28 @@ void ModelController::addObject(MPackage *parent_package, MObject *object) void ModelController::removeObject(MObject *object) { QMT_CHECK(object); - if (_undo_controller) { - _undo_controller->beginMergeSequence(tr("Delete Object")); - } + if (m_undoController) + m_undoController->beginMergeSequence(tr("Delete Object")); removeRelatedRelations(object); // remove object - QMT_CHECK(object->getOwner()); - int row = object->getOwner()->getChildren().indexOf(object); - MObject *owner = object->getOwner(); - if (!_resetting_model) { + QMT_CHECK(object->owner()); + int row = object->owner()->children().indexOf(object); + MObject *owner = object->owner(); + if (!m_isResettingModel) emit beginRemoveObject(row, owner); - } - if (_undo_controller) { - RemoveElementsCommand *undo_command = new RemoveElementsCommand(this, tr("Delete Object")); - _undo_controller->push(undo_command); - undo_command->add(object, object->getOwner()); + if (m_undoController) { + RemoveElementsCommand *undoCommand = new RemoveElementsCommand(this, tr("Delete Object")); + m_undoController->push(undoCommand); + undoCommand->add(object, object->owner()); } unmapObject(object); owner->removeChild(object); - if (!_resetting_model) { + if (!m_isResettingModel) { emit endRemoveObject(row, owner); emit modified(); } - if (_undo_controller) { - _undo_controller->endMergeSequence(); - } + if (m_undoController) + m_undoController->endMergeSequence(); verifyModelIntegrity(); } @@ -776,21 +725,18 @@ void ModelController::startUpdateObject(MObject *object) { QMT_CHECK(object); int row = 0; - MObject *parent = object->getOwner(); + MObject *parent = object->owner(); if (!parent) { - QMT_CHECK(object == _root_package); + QMT_CHECK(object == m_rootPackage); } else { - row = parent->getChildren().indexOf(object); + row = parent->children().indexOf(object); } - if (MPackage *package = dynamic_cast<MPackage *>(object)) { - _old_package_name = package->getName(); - } - if (!_resetting_model) { + if (MPackage *package = dynamic_cast<MPackage *>(object)) + m_oldPackageName = package->name(); + if (!m_isResettingModel) emit beginUpdateObject(row, parent); - } - if (_undo_controller) { - _undo_controller->push(new UpdateObjectCommand(this, object)); - } + if (m_undoController) + m_undoController->push(new UpdateObjectCommand(this, object)); } void ModelController::finishUpdateObject(MObject *object, bool cancelled) @@ -798,23 +744,21 @@ void ModelController::finishUpdateObject(MObject *object, bool cancelled) QMT_CHECK(object); int row = 0; - MObject *parent = object->getOwner(); + MObject *parent = object->owner(); if (!parent) { - QMT_CHECK(object == _root_package); + QMT_CHECK(object == m_rootPackage); } else { - row = parent->getChildren().indexOf(object); + row = parent->children().indexOf(object); } - if (!_resetting_model) { + if (!m_isResettingModel) { emit endUpdateObject(row, parent); if (!cancelled) { QList<MRelation *> relations = findRelationsOfObject(object); - foreach (MRelation *relation, relations) { + foreach (MRelation *relation, relations) emit relationEndChanged(relation, object); - } if (MPackage *package = dynamic_cast<MPackage *>(object)) { - if (_old_package_name != package->getName()) { - emit packageNameChanged(package, _old_package_name); - } + if (m_oldPackageName != package->name()) + emit packageNameChanged(package, m_oldPackageName); } emit modified(); } @@ -822,29 +766,28 @@ void ModelController::finishUpdateObject(MObject *object, bool cancelled) verifyModelIntegrity(); } -void ModelController::moveObject(MPackage *new_owner, MObject *object) +void ModelController::moveObject(MPackage *newOwner, MObject *object) { - QMT_CHECK(new_owner); + QMT_CHECK(newOwner); QMT_CHECK(object); - QMT_CHECK(object != _root_package); - - if (new_owner != object->getOwner()) { - int former_row = 0; - MObject *former_owner = object->getOwner(); - QMT_CHECK(former_owner); - former_row = former_owner->getChildren().indexOf(object); - if (!_resetting_model) { - emit beginMoveObject(former_row, former_owner); + QMT_CHECK(object != m_rootPackage); + + if (newOwner != object->owner()) { + int formerRow = 0; + MObject *formerOwner = object->owner(); + QMT_CHECK(formerOwner); + formerRow = formerOwner->children().indexOf(object); + if (!m_isResettingModel) + emit beginMoveObject(formerRow, formerOwner); + if (m_undoController) { + MoveObjectCommand *undoCommand = new MoveObjectCommand(this, object); + m_undoController->push(undoCommand); } - if (_undo_controller) { - MoveObjectCommand *undo_command = new MoveObjectCommand(this, object); - _undo_controller->push(undo_command); - } - former_owner->decontrolChild(object); - new_owner->addChild(object); - int row = new_owner->getChildren().indexOf(object); - if (!_resetting_model) { - emit endMoveObject(row, new_owner); + formerOwner->decontrolChild(object); + newOwner->addChild(object); + int row = newOwner->children().indexOf(object); + if (!m_isResettingModel) { + emit endMoveObject(row, newOwner); emit modified(); } } @@ -853,28 +796,27 @@ void ModelController::moveObject(MPackage *new_owner, MObject *object) MRelation *ModelController::findRelation(const Uid &key) const { - return _relations_map.value(key); + return m_relationsMap.value(key); } void ModelController::addRelation(MObject *owner, MRelation *relation) { QMT_CHECK(owner); QMT_CHECK(relation); - QMT_CHECK(findObject(relation->getEndA())); - QMT_CHECK(findObject(relation->getEndB())); + QMT_CHECK(findObject(relation->endAUid())); + QMT_CHECK(findObject(relation->endBUid())); - int row = owner->getRelations().size(); - if (!_resetting_model) { + int row = owner->relations().size(); + if (!m_isResettingModel) emit beginInsertRelation(row, owner); - } mapRelation(relation); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, tr("Add Relation")); - _undo_controller->push(undo_command); - undo_command->add(TYPE_RELATION, relation->getUid(), owner->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, tr("Add Relation")); + m_undoController->push(undoCommand); + undoCommand->add(TypeRelation, relation->uid(), owner->uid()); } owner->addRelation(relation); - if (!_resetting_model) { + if (!m_isResettingModel) { emit endInsertRelation(row, owner); emit modified(); } @@ -884,20 +826,19 @@ void ModelController::addRelation(MObject *owner, MRelation *relation) void ModelController::removeRelation(MRelation *relation) { QMT_CHECK(relation); - MObject *owner = relation->getOwner(); + MObject *owner = relation->owner(); QMT_CHECK(owner); - int row = owner->getRelations().indexOf(relation); - if (!_resetting_model) { + int row = owner->relations().indexOf(relation); + if (!m_isResettingModel) emit beginRemoveRelation(row, owner); - } - if (_undo_controller) { - RemoveElementsCommand *undo_command = new RemoveElementsCommand(this, tr("Delete Relation")); - _undo_controller->push(undo_command); - undo_command->add(relation, owner); + if (m_undoController) { + RemoveElementsCommand *undoCommand = new RemoveElementsCommand(this, tr("Delete Relation")); + m_undoController->push(undoCommand); + undoCommand->add(relation, owner); } unmapRelation(relation); owner->removeRelation(relation); - if (!_resetting_model) { + if (!m_isResettingModel) { emit endRemoveRelation(row, owner); emit modified(); } @@ -907,54 +848,50 @@ void ModelController::removeRelation(MRelation *relation) void ModelController::startUpdateRelation(MRelation *relation) { QMT_CHECK(relation); - MObject *owner = relation->getOwner(); + MObject *owner = relation->owner(); QMT_CHECK(owner); - if (!_resetting_model) { - emit beginUpdateRelation(owner->getRelations().indexOf(relation), owner); - } - if (_undo_controller) { - _undo_controller->push(new UpdateRelationCommand(this, relation)); - } + if (!m_isResettingModel) + emit beginUpdateRelation(owner->relations().indexOf(relation), owner); + if (m_undoController) + m_undoController->push(new UpdateRelationCommand(this, relation)); } void ModelController::finishUpdateRelation(MRelation *relation, bool cancelled) { QMT_CHECK(relation); - QMT_CHECK(findObject(relation->getEndA())); - QMT_CHECK(findObject(relation->getEndB())); - MObject *owner = relation->getOwner(); + QMT_CHECK(findObject(relation->endAUid())); + QMT_CHECK(findObject(relation->endBUid())); + MObject *owner = relation->owner(); QMT_CHECK(owner); - if (!_resetting_model) { - emit endUpdateRelation(owner->getRelations().indexOf(relation), owner); - if (!cancelled) { + if (!m_isResettingModel) { + emit endUpdateRelation(owner->relations().indexOf(relation), owner); + if (!cancelled) emit modified(); - } } verifyModelIntegrity(); } -void ModelController::moveRelation(MObject *new_owner, MRelation *relation) +void ModelController::moveRelation(MObject *newOwner, MRelation *relation) { - QMT_CHECK(new_owner); + QMT_CHECK(newOwner); QMT_CHECK(relation); - if (new_owner != relation->getOwner()) { - int former_row = 0; - MObject *former_owner = relation->getOwner(); - QMT_CHECK(former_owner); - former_row = former_owner->getRelations().indexOf(relation); - if (!_resetting_model) { - emit beginMoveRelation(former_row, former_owner); + if (newOwner != relation->owner()) { + int formerRow = 0; + MObject *formerOwner = relation->owner(); + QMT_CHECK(formerOwner); + formerRow = formerOwner->relations().indexOf(relation); + if (!m_isResettingModel) + emit beginMoveRelation(formerRow, formerOwner); + if (m_undoController) { + MoveRelationCommand *undoCommand = new MoveRelationCommand(this, relation); + m_undoController->push(undoCommand); } - if (_undo_controller) { - MoveRelationCommand *undo_command = new MoveRelationCommand(this, relation); - _undo_controller->push(undo_command); - } - former_owner->decontrolRelation(relation); - new_owner->addRelation(relation); - int row = new_owner->getRelations().indexOf(relation); - if (!_resetting_model) { - emit endMoveRelation(row, new_owner); + formerOwner->decontrolRelation(relation); + newOwner->addRelation(relation); + int row = newOwner->relations().indexOf(relation); + if (!m_isResettingModel) { + emit endMoveRelation(row, newOwner); emit modified(); } } @@ -964,132 +901,125 @@ void ModelController::moveRelation(MObject *new_owner, MRelation *relation) QList<MRelation *> ModelController::findRelationsOfObject(const MObject *object) const { QMT_CHECK(object); - return _object_relations_map.values(object->getUid()); + return m_objectRelationsMap.values(object->uid()); } -MContainer ModelController::cutElements(const MSelection &model_selection) +MContainer ModelController::cutElements(const MSelection &modelSelection) { - // PERFORM avoid duplicate call of simplify(model_selection) - MContainer copied_elements = copyElements(model_selection); - deleteElements(model_selection, tr("Cut")); - return copied_elements; + // PERFORM avoid duplicate call of simplify(modelSelection) + MContainer copiedElements = copyElements(modelSelection); + deleteElements(modelSelection, tr("Cut")); + return copiedElements; } -MContainer ModelController::copyElements(const MSelection &model_selection) +MContainer ModelController::copyElements(const MSelection &modelSelection) { - MReferences simplified_selection = simplify(model_selection); - MContainer copied_elements; - foreach (MElement *element, simplified_selection.getElements()) { + MReferences simplifiedSelection = simplify(modelSelection); + MContainer copiedElements; + foreach (MElement *element, simplifiedSelection.elements()) { MCloneDeepVisitor visitor; element->accept(&visitor); - MElement *cloned_element = visitor.getCloned(); - copied_elements.submit(cloned_element); + MElement *clonedElement = visitor.cloned(); + copiedElements.submit(clonedElement); } - return copied_elements; + return copiedElements; } -void ModelController::pasteElements(MObject *owner, const MContainer &model_container) +void ModelController::pasteElements(MObject *owner, const MContainer &modelContainer) { // clone all elements and renew their keys - QHash<Uid, Uid> renewed_keys; - QList<MElement *> cloned_elements; - foreach (MElement *element, model_container.getElements()) { + QHash<Uid, Uid> renewedKeys; + QList<MElement *> clonedElements; + foreach (MElement *element, modelContainer.elements()) { MCloneDeepVisitor visitor; element->accept(&visitor); - MElement *cloned_element = visitor.getCloned(); - renewElementKey(cloned_element, &renewed_keys); - cloned_elements.append(cloned_element); + MElement *clonedElement = visitor.cloned(); + renewElementKey(clonedElement, &renewedKeys); + clonedElements.append(clonedElement); } // fix all keys referencing between pasting elements - foreach (MElement *cloned_element, cloned_elements) { - updateRelationKeys(cloned_element, renewed_keys); - } - if (_undo_controller) { - _undo_controller->beginMergeSequence(tr("Paste")); - } + foreach (MElement *clonedElement, clonedElements) + updateRelationKeys(clonedElement, renewedKeys); + if (m_undoController) + m_undoController->beginMergeSequence(tr("Paste")); // insert all elements bool added = false; - foreach (MElement *cloned_element, cloned_elements) { - if (MObject *object = dynamic_cast<MObject *>(cloned_element)) { - MObject *object_owner = owner; - if (!dynamic_cast<MPackage*>(owner)) { - object_owner = owner->getOwner(); - } - QMT_CHECK(dynamic_cast<MPackage*>(object_owner)); - int row = object_owner->getChildren().size(); - emit beginInsertObject(row, object_owner); + foreach (MElement *clonedElement, clonedElements) { + if (MObject *object = dynamic_cast<MObject *>(clonedElement)) { + MObject *objectOwner = owner; + if (!dynamic_cast<MPackage*>(owner)) + objectOwner = owner->owner(); + QMT_CHECK(dynamic_cast<MPackage*>(objectOwner)); + int row = objectOwner->children().size(); + emit beginInsertObject(row, objectOwner); mapObject(object); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, tr("Paste")); - _undo_controller->push(undo_command); - undo_command->add(TYPE_OBJECT, object->getUid(), object_owner->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, tr("Paste")); + m_undoController->push(undoCommand); + undoCommand->add(TypeObject, object->uid(), objectOwner->uid()); } - object_owner->insertChild(row, object); - emit endInsertObject(row, object_owner); + objectOwner->insertChild(row, object); + emit endInsertObject(row, objectOwner); added = true; - } else if (MRelation *relation = dynamic_cast<MRelation *>(cloned_element)) { - int row = owner->getRelations().size(); + } else if (MRelation *relation = dynamic_cast<MRelation *>(clonedElement)) { + int row = owner->relations().size(); emit beginInsertRelation(row, owner); mapRelation(relation); - if (_undo_controller) { - AddElementsCommand *undo_command = new AddElementsCommand(this, tr("Paste")); - _undo_controller->push(undo_command); - undo_command->add(TYPE_RELATION, relation->getUid(), owner->getUid()); + if (m_undoController) { + AddElementsCommand *undoCommand = new AddElementsCommand(this, tr("Paste")); + m_undoController->push(undoCommand); + undoCommand->add(TypeRelation, relation->uid(), owner->uid()); } owner->addRelation(relation); emit endInsertRelation(row, owner); added = true; } } - if (added) { + if (added) emit modified(); - } verifyModelIntegrity(); - if (_undo_controller) { - _undo_controller->endMergeSequence(); - } + if (m_undoController) + m_undoController->endMergeSequence(); } -void ModelController::deleteElements(const MSelection &model_selection) +void ModelController::deleteElements(const MSelection &modelSelection) { - deleteElements(model_selection, tr("Delete")); + deleteElements(modelSelection, tr("Delete")); } -void ModelController::deleteElements(const MSelection &model_selection, const QString &command_label) +void ModelController::deleteElements(const MSelection &modelSelection, const QString &commandLabel) { - MReferences simplified_selection = simplify(model_selection); - if (simplified_selection.getElements().isEmpty()) { + MReferences simplifiedSelection = simplify(modelSelection); + if (simplifiedSelection.elements().isEmpty()) return; - } - if (_undo_controller) { - _undo_controller->beginMergeSequence(command_label); - } + if (m_undoController) + m_undoController->beginMergeSequence(commandLabel); bool removed = false; - foreach (MElement *element, simplified_selection.getElements()) { + foreach (MElement *element, simplifiedSelection.elements()) { // element may have been deleted indirectly by predecessor element in loop - if ((element = findElement(element->getUid()))) { + if ((element = findElement(element->uid()))) { if (MObject *object = dynamic_cast<MObject *>(element)) { removeRelatedRelations(object); - MObject *owner = object->getOwner(); - int row = owner->getChildren().indexOf(object); + MObject *owner = object->owner(); + int row = owner->children().indexOf(object); emit beginRemoveObject(row, owner); - if (_undo_controller) { - RemoveElementsCommand *cut_command = new RemoveElementsCommand(this, command_label); - _undo_controller->push(cut_command); - cut_command->add(element, owner); + if (m_undoController) { + RemoveElementsCommand *cutCommand = new RemoveElementsCommand(this, commandLabel); + m_undoController->push(cutCommand); + cutCommand->add(element, owner); } unmapObject(object); owner->removeChild(object); emit endRemoveObject(row, owner); removed = true; } else if (MRelation *relation = dynamic_cast<MRelation *>(element)) { - MObject *owner = relation->getOwner(); - int row = owner->getRelations().indexOf(relation); + MObject *owner = relation->owner(); + int row = owner->relations().indexOf(relation); emit beginRemoveRelation(row, owner); - if (_undo_controller) { - RemoveElementsCommand *cut_command = new RemoveElementsCommand(this, command_label); - _undo_controller->push(cut_command); - cut_command->add(element, owner); + if (m_undoController) { + RemoveElementsCommand *cutCommand = new RemoveElementsCommand(this, commandLabel); + m_undoController->push(cutCommand); + cutCommand->add(element, owner); } unmapRelation(relation); owner->removeRelation(relation); @@ -1100,114 +1030,101 @@ void ModelController::deleteElements(const MSelection &model_selection, const QS } } } - if (removed) { + if (removed) emit modified(); - } verifyModelIntegrity(); - if (_undo_controller) { - _undo_controller->endMergeSequence(); - } + if (m_undoController) + m_undoController->endMergeSequence(); } void ModelController::removeRelatedRelations(MObject *object) { - foreach (MRelation *relation, _object_relations_map.values(object->getUid())) { + foreach (MRelation *relation, m_objectRelationsMap.values(object->uid())) removeRelation(relation); - } - QMT_CHECK(_object_relations_map.values(object->getUid()).isEmpty()); + QMT_CHECK(m_objectRelationsMap.values(object->uid()).isEmpty()); } -void ModelController::renewElementKey(MElement *element, QHash<Uid, Uid> *renewed_keys) +void ModelController::renewElementKey(MElement *element, QHash<Uid, Uid> *renewedKeys) { if (element) { - MElement *other_element = findObject(element->getUid()); - if (other_element) { - QMT_CHECK(other_element != element); + MElement *otherElement = findObject(element->uid()); + if (otherElement) { + QMT_CHECK(otherElement != element); } - if (_objects_map.contains(element->getUid()) || _relations_map.contains(element->getUid())) { - Uid old_key = element->getUid(); + if (m_objectsMap.contains(element->uid()) || m_relationsMap.contains(element->uid())) { + Uid oldKey = element->uid(); element->renewUid(); - Uid new_key = element->getUid(); - renewed_keys->insert(old_key, new_key); + Uid newKey = element->uid(); + renewedKeys->insert(oldKey, newKey); } MObject *object = dynamic_cast<MObject *>(element); if (object) { - foreach (const Handle<MObject> &child, object->getChildren()) { - renewElementKey(child.getTarget(), renewed_keys); - } - foreach (const Handle<MRelation> &relation, object->getRelations()) { - renewElementKey(relation.getTarget(), renewed_keys); - } + foreach (const Handle<MObject> &child, object->children()) + renewElementKey(child.target(), renewedKeys); + foreach (const Handle<MRelation> &relation, object->relations()) + renewElementKey(relation.target(), renewedKeys); } } } -void ModelController::updateRelationKeys(MElement *element, const QHash<Uid, Uid> &renewed_keys) +void ModelController::updateRelationKeys(MElement *element, const QHash<Uid, Uid> &renewedKeys) { if (MObject *object = dynamic_cast<MObject *>(element)) { - foreach (const Handle<MRelation> &handle, object->getRelations()) { - updateRelationEndKeys(handle.getTarget(), renewed_keys); - } - foreach (const Handle<MObject> &child, object->getChildren()) { - updateRelationKeys(child.getTarget(), renewed_keys); - } + foreach (const Handle<MRelation> &handle, object->relations()) + updateRelationEndKeys(handle.target(), renewedKeys); + foreach (const Handle<MObject> &child, object->children()) + updateRelationKeys(child.target(), renewedKeys); } else if (MRelation *relation = dynamic_cast<MRelation *>(element)) { - updateRelationEndKeys(relation, renewed_keys); + updateRelationEndKeys(relation, renewedKeys); } } -void ModelController::updateRelationEndKeys(MRelation *relation, const QHash<Uid, Uid> &renewed_keys) +void ModelController::updateRelationEndKeys(MRelation *relation, const QHash<Uid, Uid> &renewedKeys) { if (relation) { - Uid new_end_a_key = renewed_keys.value(relation->getEndA(), Uid::getInvalidUid()); - if (new_end_a_key.isValid()) { - relation->setEndA(new_end_a_key); - } - Uid new_end_b_key = renewed_keys.value(relation->getEndB(), Uid::getInvalidUid()); - if (new_end_b_key.isValid()) { - relation->setEndB(new_end_b_key); - } + Uid newEndAKey = renewedKeys.value(relation->endAUid(), Uid::invalidUid()); + if (newEndAKey.isValid()) + relation->setEndAUid(newEndAKey); + Uid newEndBKey = renewedKeys.value(relation->endBUid(), Uid::invalidUid()); + if (newEndBKey.isValid()) + relation->setEndBUid(newEndBKey); } } void ModelController::mapObject(MObject *object) { if (object) { - QMT_CHECK(!_objects_map.contains(object->getUid())); - _objects_map.insert(object->getUid(), object); - foreach (const Handle<MObject> &child, object->getChildren()) { - mapObject(child.getTarget()); - } - foreach (const Handle<MRelation> &relation, object->getRelations()) { - mapRelation(relation.getTarget()); - } + QMT_CHECK(!m_objectsMap.contains(object->uid())); + m_objectsMap.insert(object->uid(), object); + foreach (const Handle<MObject> &child, object->children()) + mapObject(child.target()); + foreach (const Handle<MRelation> &relation, object->relations()) + mapRelation(relation.target()); } } void ModelController::unmapObject(MObject *object) { if (object) { - QMT_CHECK(_objects_map.contains(object->getUid())); - foreach (const Handle<MRelation> &relation, object->getRelations()) { - unmapRelation(relation.getTarget()); - } - foreach (const Handle<MObject> &child, object->getChildren()) { - unmapObject(child.getTarget()); - } - _objects_map.remove(object->getUid()); + QMT_CHECK(m_objectsMap.contains(object->uid())); + foreach (const Handle<MRelation> &relation, object->relations()) + unmapRelation(relation.target()); + foreach (const Handle<MObject> &child, object->children()) + unmapObject(child.target()); + m_objectsMap.remove(object->uid()); } } void ModelController::mapRelation(MRelation *relation) { if (relation) { - QMT_CHECK(!_relations_map.contains(relation->getUid())); - _relations_map.insert(relation->getUid(), relation); - QMT_CHECK(!_object_relations_map.contains(relation->getEndA(), relation)); - _object_relations_map.insert(relation->getEndA(), relation); - if (relation->getEndA() != relation->getEndB()) { - QMT_CHECK(!_object_relations_map.contains(relation->getEndB(), relation)); - _object_relations_map.insert(relation->getEndB(), relation); + QMT_CHECK(!m_relationsMap.contains(relation->uid())); + m_relationsMap.insert(relation->uid(), relation); + QMT_CHECK(!m_objectRelationsMap.contains(relation->endAUid(), relation)); + m_objectRelationsMap.insert(relation->endAUid(), relation); + if (relation->endAUid() != relation->endBUid()) { + QMT_CHECK(!m_objectRelationsMap.contains(relation->endBUid(), relation)); + m_objectRelationsMap.insert(relation->endBUid(), relation); } } } @@ -1215,111 +1132,100 @@ void ModelController::mapRelation(MRelation *relation) void ModelController::unmapRelation(MRelation *relation) { if (relation) { - QMT_CHECK(_relations_map.contains(relation->getUid())); - _relations_map.remove(relation->getUid()); - QMT_CHECK(_object_relations_map.contains(relation->getEndA(), relation)); - _object_relations_map.remove(relation->getEndA(), relation); - if (relation->getEndA() != relation->getEndB()) { - QMT_CHECK(_object_relations_map.contains(relation->getEndB(), relation)); - _object_relations_map.remove(relation->getEndB(), relation); + QMT_CHECK(m_relationsMap.contains(relation->uid())); + m_relationsMap.remove(relation->uid()); + QMT_CHECK(m_objectRelationsMap.contains(relation->endAUid(), relation)); + m_objectRelationsMap.remove(relation->endAUid(), relation); + if (relation->endAUid() != relation->endBUid()) { + QMT_CHECK(m_objectRelationsMap.contains(relation->endBUid(), relation)); + m_objectRelationsMap.remove(relation->endBUid(), relation); } } } -MReferences ModelController::simplify(const MSelection &model_selection) +MReferences ModelController::simplify(const MSelection &modelSelection) { - // PERFORM improve performance by using a set of Uid build from model_selection + // PERFORM improve performance by using a set of Uid build from modelSelection MReferences references; - foreach (const MSelection::Index &index, model_selection.getIndices()) { - MElement *element = findElement(index.getElementKey()); + foreach (const MSelection::Index &index, modelSelection.indices()) { + MElement *element = findElement(index.elementKey()); QMT_CHECK(element); - // if any (grand-)parent of element is in model_selection then ignore element + // if any (grand-)parent of element is in modelSelection then ignore element bool ignore = false; - MObject *owner = element->getOwner(); + MObject *owner = element->owner(); while (owner) { - Uid owner_key = owner->getUid(); - foreach (const MSelection::Index &index, model_selection.getIndices()) { - if (index.getElementKey() == owner_key) { + Uid ownerKey = owner->uid(); + foreach (const MSelection::Index &index, modelSelection.indices()) { + if (index.elementKey() == ownerKey) { ignore = true; break; } } - if (ignore) { + if (ignore) break; - } - owner = owner->getOwner(); + owner = owner->owner(); } - if (!ignore) { + if (!ignore) references.append(element); - } } return references; } void ModelController::verifyModelIntegrity() const { -#if 0 -#ifndef QT_NO_DEBUG - QMT_CHECK(_root_package); - - QHash<Uid, const MObject *> objects_map; - QHash<Uid, const MRelation *> relations_map; - QMultiHash<Uid, MRelation *> object_relations_map; - verifyModelIntegrity(_root_package, &objects_map, &relations_map, &object_relations_map); - - QMT_CHECK(objects_map.size() == _objects_map.size()); - foreach (const MObject *object, _objects_map) { - QMT_CHECK(object); - QMT_CHECK(_objects_map.contains(object->getUid())); - QMT_CHECK(objects_map.contains(object->getUid())); - } - QMT_CHECK(relations_map.size() == _relations_map.size()); - foreach (const MRelation *relation, _relations_map) { - QMT_CHECK(relation); - QMT_CHECK(_relations_map.contains(relation->getUid())); - QMT_CHECK(relations_map.contains(relation->getUid())); - } - QMT_CHECK(object_relations_map.size() == _object_relations_map.size()); - for (QMultiHash<Uid, MRelation *>::const_iterator it = _object_relations_map.cbegin(); it != _object_relations_map.cend(); ++it) { - QMT_CHECK(object_relations_map.contains(it.key(), it.value())); + static const bool debugModelIntegrity = false; + if (debugModelIntegrity) { + QMT_CHECK(m_rootPackage); + + QHash<Uid, const MObject *> objectsMap; + QHash<Uid, const MRelation *> relationsMap; + QMultiHash<Uid, MRelation *> objectRelationsMap; + verifyModelIntegrity(m_rootPackage, &objectsMap, &relationsMap, &objectRelationsMap); + + QMT_CHECK(objectsMap.size() == m_objectsMap.size()); + foreach (const MObject *object, m_objectsMap) { + QMT_CHECK(object); + QMT_CHECK(m_objectsMap.contains(object->uid())); + QMT_CHECK(objectsMap.contains(object->uid())); + } + QMT_CHECK(relationsMap.size() == m_relationsMap.size()); + foreach (const MRelation *relation, m_relationsMap) { + QMT_CHECK(relation); + QMT_CHECK(m_relationsMap.contains(relation->uid())); + QMT_CHECK(relationsMap.contains(relation->uid())); + } + QMT_CHECK(objectRelationsMap.size() == m_objectRelationsMap.size()); + for (QMultiHash<Uid, MRelation *>::const_iterator it = m_objectRelationsMap.cbegin(); it != m_objectRelationsMap.cend(); ++it) { + QMT_CHECK(objectRelationsMap.contains(it.key(), it.value())); + } } -#endif -#endif } -void ModelController::verifyModelIntegrity(const MObject *object, QHash<Uid, const MObject *> *objects_map, - QHash<Uid, const MRelation *> *relations_map, - QMultiHash<Uid, MRelation *> *object_relations_map) const +void ModelController::verifyModelIntegrity(const MObject *object, QHash<Uid, const MObject *> *objectsMap, + QHash<Uid, const MRelation *> *relationsMap, + QMultiHash<Uid, MRelation *> *objectRelationsMap) const { -#ifndef QT_NO_DEBUG QMT_CHECK(object); - QMT_CHECK(!objects_map->contains(object->getUid())); - objects_map->insert(object->getUid(), object); - foreach (const Handle<MRelation> &handle, object->getRelations()) { - MRelation *relation = handle.getTarget(); + QMT_CHECK(!objectsMap->contains(object->uid())); + objectsMap->insert(object->uid(), object); + foreach (const Handle<MRelation> &handle, object->relations()) { + MRelation *relation = handle.target(); if (relation) { - QMT_CHECK(!relations_map->contains(relation->getUid())); - relations_map->insert(relation->getUid(), relation); - QMT_CHECK(findObject(relation->getEndA())); - QMT_CHECK(findObject(relation->getEndB())); - QMT_CHECK(!object_relations_map->contains(relation->getEndA(), relation)); - object_relations_map->insert(relation->getEndA(), relation); - QMT_CHECK(!object_relations_map->contains(relation->getEndB(), relation)); - object_relations_map->insert(relation->getEndB(), relation); + QMT_CHECK(!relationsMap->contains(relation->uid())); + relationsMap->insert(relation->uid(), relation); + QMT_CHECK(findObject(relation->endAUid())); + QMT_CHECK(findObject(relation->endBUid())); + QMT_CHECK(!objectRelationsMap->contains(relation->endAUid(), relation)); + objectRelationsMap->insert(relation->endAUid(), relation); + QMT_CHECK(!objectRelationsMap->contains(relation->endBUid(), relation)); + objectRelationsMap->insert(relation->endBUid(), relation); } } - foreach (const Handle<MObject> &handle, object->getChildren()) { - MObject *child_object = handle.getTarget(); - if (child_object) { - verifyModelIntegrity(child_object, objects_map, relations_map, object_relations_map); - } + foreach (const Handle<MObject> &handle, object->children()) { + MObject *childObject = handle.target(); + if (childObject) + verifyModelIntegrity(childObject, objectsMap, relationsMap, objectRelationsMap); } -#else - Q_UNUSED(object); - Q_UNUSED(objects_map); - Q_UNUSED(relations_map); - Q_UNUSED(object_relations_map); -#endif } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.h b/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.h index 765d2cb9ce..47ad32864b 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/modelcontroller.h @@ -37,33 +37,28 @@ #include <QHash> #include <QMultiHash> - namespace qmt { class UndoController; - class MElement; - class MObject; class MPackage; class MDiagram; - class MRelation; - class MSelection; class MContainer; class MReferences; - -class QMT_EXPORT ModelController : - public QObject +class QMT_EXPORT ModelController : public QObject { Q_OBJECT - enum ElementType { TYPE_UNKNOWN, TYPE_OBJECT, TYPE_RELATION }; - - struct Clone; + enum ElementType { + TypeUnknown, + TypeObject, + TypeRelation }; + class Clone; class UpdateObjectCommand; class UpdateRelationCommand; class AddElementsCommand; @@ -72,184 +67,105 @@ class QMT_EXPORT ModelController : class MoveRelationCommand; public: - explicit ModelController(QObject *parent = 0); - ~ModelController(); signals: - void beginResetModel(); - void endResetModel(); - void beginUpdateObject(int row, const MObject *owner); - void endUpdateObject(int row, const MObject *owner); - void beginInsertObject(int row, const MObject *owner); - void endInsertObject(int row, const MObject *owner); - void beginRemoveObject(int row, const MObject *owner); - void endRemoveObject(int row, const MObject *owner); - - void beginMoveObject(int former_row, const MObject *former_owner); - - void endMoveObject(int new_row, const MObject *new_owner); - + void beginMoveObject(int formerRow, const MObject *formerOwner); + void endMoveObject(int newRow, const MObject *newOwner); void beginUpdateRelation(int row, const MObject *owner); - void endUpdateRelation(int row, const MObject *owner); - void beginInsertRelation(int row, const MObject *owner); - void endInsertRelation(int row, const MObject *owner); - void beginRemoveRelation(int row, const MObject *owner); - void endRemoveRelation(int row, const MObject *owner); - - void beginMoveRelation(int former_row, const MObject *former_owner); - - void endMoveRelation(int new_row, const MObject *new_owner); - - void packageNameChanged(MPackage *package, const QString &old_package_name); - - void relationEndChanged(MRelation *relation, MObject *end_object); - + void beginMoveRelation(int formerRow, const MObject *formerOwner); + void endMoveRelation(int newRow, const MObject *newOwner); + void packageNameChanged(MPackage *package, const QString &oldPackageName); + void relationEndChanged(MRelation *relation, MObject *endObject); void modified(); public: + MPackage *rootPackage() const { return m_rootPackage; } + void setRootPackage(MPackage *rootPackage); + UndoController *undoController() const { return m_undoController; } + void setUndoController(UndoController *undoController); - MPackage *getRootPackage() const { return _root_package; } - - void setRootPackage(MPackage *root_package); - - UndoController *getUndoController() const { return _undo_controller; } - - void setUndoController(UndoController *undo_controller); - -public: - - Uid getOwnerKey(const MElement *element) const; - + Uid ownerKey(const MElement *element) const; MElement *findElement(const Uid &key); - template<class T> T *findElement(const Uid &key) { return dynamic_cast<T *>(findElement(key)); } -public: - void startResetModel(); - void finishResetModel(bool modified); -public: - - MObject *getObject(int row, const MObject *owner) const; - + MObject *object(int row, const MObject *owner) const; MObject *findObject(const Uid &key) const; - template<class T> T *findObject(const Uid &key) const { return dynamic_cast<T *>(findObject(key)); } - - void addObject(MPackage *parent_package, MObject *object); - + void addObject(MPackage *parentPackage, MObject *object); void removeObject(MObject *object); - void startUpdateObject(MObject *object); - void finishUpdateObject(MObject *object, bool cancelled); - - void moveObject(MPackage *new_owner, MObject *object); - -public: + void moveObject(MPackage *newOwner, MObject *object); MRelation *findRelation(const Uid &key) const; - template<class T> T *findRelation(const Uid &key) const { return dynamic_cast<T *>(findRelation(key)); } - void addRelation(MObject *owner, MRelation *relation); - void removeRelation(MRelation *relation); - void startUpdateRelation(MRelation *relation); - void finishUpdateRelation(MRelation *relation, bool cancelled); - - void moveRelation(MObject *new_owner, MRelation *relation); - -public: + void moveRelation(MObject *newOwner, MRelation *relation); QList<MRelation *> findRelationsOfObject(const MObject *object) const; -public: - - MContainer cutElements(const MSelection &model_selection); - - MContainer copyElements(const MSelection &model_selection); - - void pasteElements(MObject *owner, const MContainer &model_container); - - void deleteElements(const MSelection &model_selection); + MContainer cutElements(const MSelection &modelSelection); + MContainer copyElements(const MSelection &modelSelection); + void pasteElements(MObject *owner, const MContainer &modelContainer); + void deleteElements(const MSelection &modelSelection); private: - - void deleteElements(const MSelection &model_selection, const QString &command_label); - + void deleteElements(const MSelection &modelSelection, const QString &commandLabel); void removeRelatedRelations(MObject *object); public: - void unloadPackage(MPackage *package); - void loadPackage(MPackage *package); private: - - void renewElementKey(MElement *element, QHash<Uid, Uid> *renewed_keys); - - void updateRelationKeys(MElement *element, const QHash<Uid, Uid> &renewed_keys); - - void updateRelationEndKeys(MRelation *relation, const QHash<Uid, Uid> &renewed_keys); - + void renewElementKey(MElement *element, QHash<Uid, Uid> *renewedKeys); + void updateRelationKeys(MElement *element, const QHash<Uid, Uid> &renewedKeys); + void updateRelationEndKeys(MRelation *relation, const QHash<Uid, Uid> &renewedKeys); void mapObject(MObject *object); - void unmapObject(MObject *object); - void mapRelation(MRelation *relation); - void unmapRelation(MRelation *relation); - MReferences simplify(const MSelection &model_selection); + MReferences simplify(const MSelection &modelSelection); void verifyModelIntegrity() const; - - void verifyModelIntegrity(const MObject *object, QHash<Uid, const MObject *> *objects_map, QHash<Uid, - const MRelation *> *relations_map, - QMultiHash<Uid, MRelation *> *object_relations_map) const; - -private: - - MPackage *_root_package; - - UndoController *_undo_controller; - - QHash<Uid, MObject *> _objects_map; - - QHash<Uid, MRelation *> _relations_map; - - QMultiHash<Uid, MRelation *> _object_relations_map; - - bool _resetting_model; - - QString _old_package_name; - + void verifyModelIntegrity(const MObject *object, QHash<Uid, const MObject *> *objectsMap, + QHash<Uid, const MRelation *> *relationsMap, + QMultiHash<Uid, MRelation *> *objectRelationsMap) const; + + MPackage *m_rootPackage; + UndoController *m_undoController; + QHash<Uid, MObject *> m_objectsMap; + QHash<Uid, MRelation *> m_relationsMap; + QMultiHash<Uid, MRelation *> m_objectRelationsMap; + bool m_isResettingModel; + QString m_oldPackageName; }; -} +} // namespace qmt #endif // QMT_MODELCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mreferences.h b/src/libs/3rdparty/modeling/qmt/model_controller/mreferences.h index 8cf2d932c1..3af9550063 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mreferences.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mreferences.h @@ -34,17 +34,14 @@ #include "qmt/controller/references.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class MElement; - -class QMT_EXPORT MReferences : - public References<MElement> +class QMT_EXPORT MReferences : public References<MElement> { }; -} +} // namespace qmt #endif // QMT_MREFERENCES_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mselection.h b/src/libs/3rdparty/modeling/qmt/model_controller/mselection.h index 40f4b17623..24e5fd3844 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mselection.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mselection.h @@ -33,14 +33,12 @@ #include "qmt/controller/selection.h" - namespace qmt { -class QMT_EXPORT MSelection : - public Selection +class QMT_EXPORT MSelection : public Selection { }; -} +} // namespace qmt #endif // QMT_MSELECTION_H diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.cpp b/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.cpp index 6a52cbf404..7f27c045a1 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.cpp @@ -43,12 +43,10 @@ #include "qmt/model/mdependency.h" #include "qmt/model/minheritance.h" -#include <qglobal.h> - +#include <QtGlobal> namespace qmt { - MVoidVisitor::MVoidVisitor() { } @@ -113,9 +111,6 @@ void MVoidVisitor::visitMAssociation(MAssociation *association) visitMRelation(association); } - - - MVoidConstVisitor::MVoidConstVisitor() { } @@ -180,4 +175,4 @@ void MVoidConstVisitor::visitMAssociation(const MAssociation *association) visitMRelation(association); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.h b/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.h index 6882d1cce6..12d4d840d4 100644 --- a/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/model_controller/mvoidvisitor.h @@ -35,73 +35,46 @@ #include "qmt/model/mconstvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { -class QMT_EXPORT MVoidVisitor : - public MVisitor +class QMT_EXPORT MVoidVisitor : public MVisitor { public: MVoidVisitor(); void visitMElement(MElement *element); - void visitMObject(MObject *object); - void visitMPackage(MPackage *package); - void visitMClass(MClass *klass); - void visitMComponent(MComponent *component); - void visitMDiagram(MDiagram *diagram); - void visitMCanvasDiagram(MCanvasDiagram *diagram); - void visitMItem(MItem *item); - void visitMRelation(MRelation *relation); - void visitMDependency(MDependency *dependency); - void visitMInheritance(MInheritance *inheritance); - void visitMAssociation(MAssociation *association); - }; -class QMT_EXPORT MVoidConstVisitor : - public MConstVisitor +class QMT_EXPORT MVoidConstVisitor : public MConstVisitor { public: MVoidConstVisitor(); void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); - }; -} +} // namespace qmt #endif // QMT_MVOIDVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/modeltreeviewinterface.h b/src/libs/3rdparty/modeling/qmt/model_ui/modeltreeviewinterface.h index 5e88674996..50c99ee836 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/modeltreeviewinterface.h +++ b/src/libs/3rdparty/modeling/qmt/model_ui/modeltreeviewinterface.h @@ -37,19 +37,17 @@ QT_BEGIN_NAMESPACE class QModelIndex; QT_END_NAMESPACE - namespace qmt { -class ModelTreeViewInterface { +class ModelTreeViewInterface +{ public: - virtual ~ModelTreeViewInterface() { } - virtual QModelIndex getCurrentSourceModelIndex() const = 0; - - virtual QList<QModelIndex> getSelectedSourceModelIndexes() const = 0; + virtual QModelIndex currentSourceModelIndex() const = 0; + virtual QList<QModelIndex> selectedSourceModelIndexes() const = 0; }; -} +} // namespace qmt #endif // QMT_MODELTREEVIEWINTERFACE_H diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.cpp b/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.cpp index 0a16b4b3b5..5f3a66d7bc 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.cpp @@ -32,7 +32,6 @@ #include "treemodel.h" - namespace qmt { SortedTreeModel::SortedTreeModel(QObject *parent) @@ -41,32 +40,33 @@ SortedTreeModel::SortedTreeModel(QObject *parent) setDynamicSortFilter(false); setSortCaseSensitivity(Qt::CaseInsensitive); - _delayed_sort_timer.setSingleShot(true); - connect(&_delayed_sort_timer, SIGNAL(timeout()), this, SLOT(onDelayedSortTimeout())); + m_delayedSortTimer.setSingleShot(true); + connect(&m_delayedSortTimer, SIGNAL(timeout()), this, SLOT(onDelayedSortTimeout())); - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(onTreeModelRowsInserted(QModelIndex,int,int))); - connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(onDataChanged(QModelIndex,QModelIndex,QVector<int>))); + connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(onTreeModelRowsInserted(QModelIndex,int,int))); + connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), + this, SLOT(onDataChanged(QModelIndex,QModelIndex,QVector<int>))); } SortedTreeModel::~SortedTreeModel() { - } -void SortedTreeModel::setTreeModel(TreeModel *tree_model) +void SortedTreeModel::setTreeModel(TreeModel *treeModel) { - _tree_model = tree_model; - setSourceModel(tree_model); + m_treeModel = treeModel; + setSourceModel(treeModel); startDelayedSortTimer(); } bool SortedTreeModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { - TreeModel::ItemType left_item_type = (TreeModel::ItemType) sourceModel()->data(left, TreeModel::ROLE_ITEM_TYPE).toInt(); - TreeModel::ItemType right_item_type = (TreeModel::ItemType) sourceModel()->data(right, TreeModel::ROLE_ITEM_TYPE).toInt(); - if (left_item_type < right_item_type) { + TreeModel::ItemType leftItemType = TreeModel::ItemType(sourceModel()->data(left, TreeModel::RoleItemType).toInt()); + TreeModel::ItemType rightItemType = TreeModel::ItemType(sourceModel()->data(right, TreeModel::RoleItemType).toInt()); + if (leftItemType < rightItemType) { return true; - } else if (left_item_type > right_item_type) { + } else if (leftItemType > rightItemType) { return false; } else { QVariant l = sourceModel()->data(left); @@ -103,7 +103,7 @@ void SortedTreeModel::onDelayedSortTimeout() void SortedTreeModel::startDelayedSortTimer() { - _delayed_sort_timer.start(1000); + m_delayedSortTimer.start(1000); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.h b/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.h index 8c70db1dc0..af55bbf0b0 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.h +++ b/src/libs/3rdparty/modeling/qmt/model_ui/sortedtreemodel.h @@ -36,51 +36,36 @@ #include <QTimer> - namespace qmt { class TreeModel; - -class QMT_EXPORT SortedTreeModel : - public QSortFilterProxyModel +class QMT_EXPORT SortedTreeModel : public QSortFilterProxyModel { Q_OBJECT public: explicit SortedTreeModel(QObject *parent = 0); - ~SortedTreeModel(); -public: - - TreeModel *getTreeModel() const { return _tree_model; } - - void setTreeModel(TreeModel *tree_model); + TreeModel *treeModel() const { return m_treeModel; } + void setTreeModel(TreeModel *treeModel); protected: - bool lessThan(const QModelIndex &left, const QModelIndex &right) const; private slots: - void onTreeModelRowsInserted(const QModelIndex &parent, int start, int end); - void onDataChanged(const QModelIndex &, const QModelIndex &, const QVector<int> &); - void onDelayedSortTimeout(); private: - void startDelayedSortTimer(); -private: - - TreeModel *_tree_model; - - QTimer _delayed_sort_timer; + TreeModel *m_treeModel; + QTimer m_delayedSortTimer; }; -} +} // namespace qmt #endif // QMT_SORTEDTREEMODEL_H diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.cpp b/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.cpp index 49dc402d63..58102bfaba 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.cpp @@ -32,7 +32,6 @@ #include <QStringList> - namespace qmt { StereotypesController::StereotypesController(QObject *parent) : @@ -40,15 +39,13 @@ StereotypesController::StereotypesController(QObject *parent) : { } - bool StereotypesController::isParsable(const QString &stereotypes) { QStringList list = stereotypes.split(QLatin1Char(',')); foreach (const QString &part, list) { QString stereotype = part.trimmed(); - if (stereotype.length() == 0) { + if (stereotype.length() == 0) return false; - } } return true; } @@ -58,9 +55,8 @@ QString StereotypesController::toString(const QList<QString> &stereotypes) QString s; bool first = true; foreach (const QString &stereotype, stereotypes) { - if (!first) { + if (!first) s += QStringLiteral(", "); - } s += stereotype; first = false; } @@ -73,11 +69,10 @@ QList<QString> StereotypesController::fromString(const QString &stereotypes) QStringList list = stereotypes.split(QLatin1Char(',')); foreach (const QString &part, list) { QString stereotype = part.trimmed(); - if (stereotype.length() > 0) { + if (stereotype.length() > 0) result.append(stereotype); - } } return result; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.h b/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.h index 4868216680..97a978547c 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.h +++ b/src/libs/3rdparty/modeling/qmt/model_ui/stereotypescontroller.h @@ -37,11 +37,9 @@ #include <QList> #include <QString> - namespace qmt { -class QMT_EXPORT StereotypesController : - public QObject +class QMT_EXPORT StereotypesController : public QObject { Q_OBJECT @@ -49,21 +47,14 @@ public: explicit StereotypesController(QObject *parent = 0); signals: - void parseError(const QString &stereotypes); public: - bool isParsable(const QString &stereotypes); - QString toString(const QList<QString> &stereotypes); - QList<QString> fromString(const QString &stereotypes); - -public slots: - }; -} +} // namespace qmt #endif // QMT_STEREOTYPESCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.cpp b/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.cpp index 6c435a7642..916ee92581 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.cpp @@ -53,13 +53,10 @@ #include "qmt/style/stylecontroller.h" #include <QStandardItem> -#include <QDebug> - namespace qmt { -class TreeModel::ModelItem : - public QStandardItem +class TreeModel::ModelItem : public QStandardItem { public: ModelItem(const QIcon &icon, const QString &text) @@ -67,32 +64,24 @@ public: { } - QList<QString> getStereotypes() const { return _stereotypes; } - - void setStereotypes(const QList<QString> &stereotypes) { _stereotypes = stereotypes; } + QList<QString> stereotypes() const { return m_stereotypes; } + void setStereotypes(const QList<QString> &stereotypes) { m_stereotypes = stereotypes; } private: - - QList<QString> _stereotypes; + QList<QString> m_stereotypes; }; - -class TreeModel::ItemFactory : - public MConstVisitor +class TreeModel::ItemFactory : public MConstVisitor { public: - ItemFactory(TreeModel *tree_model) - : _tree_model(tree_model), - _item(0) + ItemFactory(TreeModel *treeModel) + : m_treeModel(treeModel), + m_item(0) { - QMT_CHECK(_tree_model); + QMT_CHECK(m_treeModel); } -public: - - ModelItem *getProduct() const { return _item; } - -public: + ModelItem *product() const { return m_item; } void visitMElement(const MElement *element) { @@ -103,127 +92,124 @@ public: void visitMObject(const MObject *object) { Q_UNUSED(object); - QMT_CHECK(_item); - _item->setEditable(false); + QMT_CHECK(m_item); + m_item->setEditable(false); } void visitMPackage(const MPackage *package) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); static QIcon icon(QStringLiteral(":/modelinglib/48x48/package.png")); - _item = new ModelItem(icon, _tree_model->createObjectLabel(package)); - _item->setData(TreeModel::PACKAGE, TreeModel::ROLE_ITEM_TYPE); + m_item = new ModelItem(icon, m_treeModel->createObjectLabel(package)); + m_item->setData(TreeModel::Package, TreeModel::RoleItemType); visitMObject(package); } void visitMClass(const MClass *klass) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_CLASS, StyleEngine::TYPE_CLASS, klass->getStereotypes(), QStringLiteral(":/modelinglib/48x48/class.png")); - _item = new ModelItem(icon, _tree_model->createObjectLabel(klass)); - _item->setData(TreeModel::ELEMENT, TreeModel::ROLE_ITEM_TYPE); - _item->setStereotypes(klass->getStereotypes()); + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementClass, StyleEngine::TypeClass, klass->stereotypes(), + QStringLiteral(":/modelinglib/48x48/class.png")); + m_item = new ModelItem(icon, m_treeModel->createObjectLabel(klass)); + m_item->setData(TreeModel::Element, TreeModel::RoleItemType); + m_item->setStereotypes(klass->stereotypes()); visitMObject(klass); } void visitMComponent(const MComponent *component) { - QMT_CHECK(!_item); - - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_COMPONENT, StyleEngine::TYPE_COMPONENT, component->getStereotypes(), QStringLiteral(":/modelinglib/48x48/component.png")); - _item = new ModelItem(icon, _tree_model->createObjectLabel(component)); - _item->setData(TreeModel::ELEMENT, TreeModel::ROLE_ITEM_TYPE); - _item->setStereotypes(component->getStereotypes()); + QMT_CHECK(!m_item); + + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementComponent, StyleEngine::TypeComponent, + component->stereotypes(), + QStringLiteral(":/modelinglib/48x48/component.png")); + m_item = new ModelItem(icon, m_treeModel->createObjectLabel(component)); + m_item->setData(TreeModel::Element, TreeModel::RoleItemType); + m_item->setStereotypes(component->stereotypes()); visitMObject(component); } void visitMDiagram(const MDiagram *diagram) { visitMObject(diagram); - _item->setData(TreeModel::DIAGRAM, TreeModel::ROLE_ITEM_TYPE); + m_item->setData(TreeModel::Diagram, TreeModel::RoleItemType); } void visitMCanvasDiagram(const MCanvasDiagram *diagram) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); static QIcon icon(QStringLiteral(":/modelinglib/48x48/canvas-diagram.png")); - _item = new ModelItem(icon, _tree_model->createObjectLabel(diagram)); + m_item = new ModelItem(icon, m_treeModel->createObjectLabel(diagram)); visitMDiagram(diagram); } void visitMItem(const MItem *item) { - QMT_CHECK(!_item); - - QList<QString> stereotypes = item->getStereotypes() << item->getVariety(); - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_ITEM, StyleEngine::TYPE_ITEM, stereotypes, QStringLiteral(":/modelinglib/48x48/item.png")); - _item = new ModelItem(icon, _tree_model->createObjectLabel(item)); - _item->setData(TreeModel::ELEMENT, TreeModel::ROLE_ITEM_TYPE); - _item->setStereotypes(stereotypes); + QMT_CHECK(!m_item); + + QList<QString> stereotypes = item->stereotypes() << item->variety(); + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementItem, StyleEngine::TypeItem, stereotypes, + QStringLiteral(":/modelinglib/48x48/item.png")); + m_item = new ModelItem(icon, m_treeModel->createObjectLabel(item)); + m_item->setData(TreeModel::Element, TreeModel::RoleItemType); + m_item->setStereotypes(stereotypes); visitMObject(item); } void visitMRelation(const MRelation *relation) { Q_UNUSED(relation); - QMT_CHECK(_item); - _item->setEditable(false); - _item->setData(TreeModel::RELATION, TreeModel::ROLE_ITEM_TYPE); + QMT_CHECK(m_item); + m_item->setEditable(false); + m_item->setData(TreeModel::Relation, TreeModel::RoleItemType); } void visitMDependency(const MDependency *dependency) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); static QIcon icon(QStringLiteral(":/modelinglib/48x48/dependency.png")); - _item = new ModelItem(icon, _tree_model->createRelationLabel(dependency)); + m_item = new ModelItem(icon, m_treeModel->createRelationLabel(dependency)); visitMRelation(dependency); } void visitMInheritance(const MInheritance *inheritance) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); static QIcon icon(QStringLiteral(":/modelinglib/48x48/inheritance.png")); - _item = new ModelItem(icon, _tree_model->createRelationLabel(inheritance)); + m_item = new ModelItem(icon, m_treeModel->createRelationLabel(inheritance)); visitMRelation(inheritance); } void visitMAssociation(const MAssociation *association) { - QMT_CHECK(!_item); + QMT_CHECK(!m_item); static QIcon icon(QStringLiteral(":/modelinglib/48x48/association.png")); - _item = new ModelItem(icon, _tree_model->createRelationLabel(association)); + m_item = new ModelItem(icon, m_treeModel->createRelationLabel(association)); visitMRelation(association); } private: - - TreeModel *_tree_model; - - ModelItem *_item; + TreeModel *m_treeModel; + ModelItem *m_item; }; - - -class TreeModel::ItemUpdater : - public MConstVisitor +class TreeModel::ItemUpdater : public MConstVisitor { public: - ItemUpdater(TreeModel *tree_model, ModelItem *item) - : _tree_model(tree_model), - _item(item) + ItemUpdater(TreeModel *treeModel, ModelItem *item) + : m_treeModel(treeModel), + m_item(item) { - QMT_CHECK(_tree_model); - QMT_CHECK(_item); + QMT_CHECK(m_treeModel); + QMT_CHECK(m_item); } -public: - void visitMElement(const MElement *element) { Q_UNUSED(element); @@ -242,20 +228,23 @@ public: void visitMClass(const MClass *klass) { - if (klass->getStereotypes() != _item->getStereotypes()) { - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_CLASS, StyleEngine::TYPE_CLASS, klass->getStereotypes(), QStringLiteral(":/modelinglib/48x48/class.png")); - _item->setIcon(icon); - _item->setStereotypes(klass->getStereotypes()); + if (klass->stereotypes() != m_item->stereotypes()) { + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementClass, StyleEngine::TypeClass, + klass->stereotypes(), QStringLiteral(":/modelinglib/48x48/class.png")); + m_item->setIcon(icon); + m_item->setStereotypes(klass->stereotypes()); } visitMObject(klass); } void visitMComponent(const MComponent *component) { - if (component->getStereotypes() != _item->getStereotypes()) { - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_COMPONENT, StyleEngine::TYPE_COMPONENT, component->getStereotypes(), QStringLiteral(":/modelinglib/48x48/component.png")); - _item->setIcon(icon); - _item->setStereotypes(component->getStereotypes()); + if (component->stereotypes() != m_item->stereotypes()) { + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementComponent, StyleEngine::TypeComponent, + component->stereotypes(), + QStringLiteral(":/modelinglib/48x48/component.png")); + m_item->setIcon(icon); + m_item->setStereotypes(component->stereotypes()); } visitMObject(component); } @@ -272,11 +261,12 @@ public: void visitMItem(const MItem *item) { - QList<QString> stereotypes = item->getStereotypes() << item->getVariety(); - if (stereotypes != _item->getStereotypes()) { - QIcon icon = _tree_model->createIcon(StereotypeIcon::ELEMENT_ITEM, StyleEngine::TYPE_ITEM, stereotypes, QStringLiteral(":/modelinglib/48x48/item.png")); - _item->setIcon(icon); - _item->setStereotypes(stereotypes); + QList<QString> stereotypes = item->stereotypes() << item->variety(); + if (stereotypes != m_item->stereotypes()) { + QIcon icon = m_treeModel->createIcon(StereotypeIcon::ElementItem, StyleEngine::TypeItem, stereotypes, + QStringLiteral(":/modelinglib/48x48/item.png")); + m_item->setIcon(icon); + m_item->setStereotypes(stereotypes); } visitMObject(item); } @@ -302,98 +292,107 @@ public: } private: - void updateObjectLabel(const MObject *object); - void updateRelationLabel(const MRelation *relation); -private: - - TreeModel *_tree_model; - - ModelItem *_item; + TreeModel *m_treeModel; + ModelItem *m_item; }; void TreeModel::ItemUpdater::updateObjectLabel(const MObject *object) { - QString label = _tree_model->createObjectLabel(object); - if (_item->text() != label) { - _item->setText(label); - } + QString label = m_treeModel->createObjectLabel(object); + if (m_item->text() != label) + m_item->setText(label); } void TreeModel::ItemUpdater::updateRelationLabel(const MRelation *relation) { - QString label = _tree_model->createRelationLabel(relation); - if (_item->text() != label) { - _item->setText(label); - } + QString label = m_treeModel->createRelationLabel(relation); + if (m_item->text() != label) + m_item->setText(label); } - TreeModel::TreeModel(QObject *parent) : QStandardItemModel(parent), - _model_controller(0), - _stereotype_controller(0), - _style_controller(0), - _root_item(0), - _busy(NOT_BUSY) + m_modelController(0), + m_stereotypeController(0), + m_styleController(0), + m_rootItem(0), + m_busyState(NotBusy) { - connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(onModelDataChanged(QModelIndex,QModelIndex))); + connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(onModelDataChanged(QModelIndex,QModelIndex))); } TreeModel::~TreeModel() { - QMT_CHECK(_busy == NOT_BUSY); + QMT_CHECK(m_busyState == NotBusy); disconnect(); clear(); } -void TreeModel::setModelController(ModelController *model_controller) -{ - if (_model_controller != model_controller) { - if (_model_controller) { - disconnect(_model_controller, 0, this, 0); - } - _model_controller = model_controller; - if (_model_controller) { - connect(_model_controller, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); - connect(_model_controller, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); - - connect(_model_controller, SIGNAL(beginInsertObject(int,const MObject*)), this, SLOT(onBeginInsertObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endInsertObject(int,const MObject*)), this, SLOT(onEndInsertObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginUpdateObject(int,const MObject*)), this, SLOT(onBeginUpdateObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endUpdateObject(int,const MObject*)), this, SLOT(onEndUpdateObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginRemoveObject(int,const MObject*)), this, SLOT(onBeginRemoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endRemoveObject(int,const MObject*)), this, SLOT(onEndRemoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginMoveObject(int,const MObject*)), this, SLOT(onBeginMoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endMoveObject(int,const MObject*)), this, SLOT(onEndMoveObject(int,const MObject*))); - - connect(_model_controller, SIGNAL(beginInsertRelation(int,const MObject*)), this, SLOT(onBeginInsertRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endInsertRelation(int,const MObject*)), this, SLOT(onEndInsertRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginUpdateRelation(int,const MObject*)), this, SLOT(onBeginUpdateRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endUpdateRelation(int,const MObject*)), this, SLOT(onEndUpdateRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginRemoveRelation(int,const MObject*)), this, SLOT(onBeginRemoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endRemoveRelation(int,const MObject*)), this, SLOT(onEndRemoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginMoveRelation(int,const MObject*)), this, SLOT(onBeginMoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endMoveRelation(int,const MObject*)), this, SLOT(onEndMoveRelation(int,const MObject*))); - - connect(_model_controller, SIGNAL(relationEndChanged(MRelation*,MObject*)), this, SLOT(onRelationEndChanged(MRelation*,MObject*))); +void TreeModel::setModelController(ModelController *modelController) +{ + if (m_modelController != modelController) { + if (m_modelController) + disconnect(m_modelController, 0, this, 0); + m_modelController = modelController; + if (m_modelController) { + connect(m_modelController, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); + connect(m_modelController, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); + + connect(m_modelController, SIGNAL(beginInsertObject(int,const MObject*)), + this, SLOT(onBeginInsertObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endInsertObject(int,const MObject*)), + this, SLOT(onEndInsertObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginUpdateObject(int,const MObject*)), + this, SLOT(onBeginUpdateObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endUpdateObject(int,const MObject*)), + this, SLOT(onEndUpdateObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginRemoveObject(int,const MObject*)), + this, SLOT(onBeginRemoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endRemoveObject(int,const MObject*)), + this, SLOT(onEndRemoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginMoveObject(int,const MObject*)), + this, SLOT(onBeginMoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endMoveObject(int,const MObject*)), + this, SLOT(onEndMoveObject(int,const MObject*))); + + connect(m_modelController, SIGNAL(beginInsertRelation(int,const MObject*)), + this, SLOT(onBeginInsertRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endInsertRelation(int,const MObject*)), + this, SLOT(onEndInsertRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginUpdateRelation(int,const MObject*)), + this, SLOT(onBeginUpdateRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endUpdateRelation(int,const MObject*)), + this, SLOT(onEndUpdateRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginRemoveRelation(int,const MObject*)), + this, SLOT(onBeginRemoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endRemoveRelation(int,const MObject*)), + this, SLOT(onEndRemoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginMoveRelation(int,const MObject*)), + this, SLOT(onBeginMoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endMoveRelation(int,const MObject*)), + this, SLOT(onEndMoveRelation(int,const MObject*))); + + connect(m_modelController, SIGNAL(relationEndChanged(MRelation*,MObject*)), + this, SLOT(onRelationEndChanged(MRelation*,MObject*))); } } } -void TreeModel::setStereotypeController(StereotypeController *stereotype_controller) +void TreeModel::setStereotypeController(StereotypeController *stereotypeController) { - _stereotype_controller = stereotype_controller; + m_stereotypeController = stereotypeController; } -void TreeModel::setStyleController(StyleController *style_controller) +void TreeModel::setStyleController(StyleController *styleController) { - _style_controller = style_controller; + m_styleController = styleController; } -MElement *TreeModel::getElement(const QModelIndex &index) const +MElement *TreeModel::element(const QModelIndex &index) const { QMT_CHECK(index.isValid()); @@ -401,24 +400,24 @@ MElement *TreeModel::getElement(const QModelIndex &index) const QStandardItem *item = itemFromIndex(index); if (item) { if (item->parent()) { - ModelItem *parent_model_item = dynamic_cast<ModelItem *>(item->parent()); - QMT_CHECK(parent_model_item); - const MObject *parent_object = _item_to_object_map.value(parent_model_item); - QMT_CHECK(parent_object); - if (parent_object) { - if (index.row() >= 0 && index.row() < parent_object->getChildren().size()) { - element = parent_object->getChildren().at(index.row()); + ModelItem *parentModelItem = dynamic_cast<ModelItem *>(item->parent()); + QMT_CHECK(parentModelItem); + const MObject *parentObject = m_itemToObjectMap.value(parentModelItem); + QMT_CHECK(parentObject); + if (parentObject) { + if (index.row() >= 0 && index.row() < parentObject->children().size()) { + element = parentObject->children().at(index.row()); QMT_CHECK(element); - } else if (index.row() >= parent_object->getChildren().size() - && index.row() < parent_object->getChildren().size() + parent_object->getRelations().size()) { - element = parent_object->getRelations().at(index.row() - parent_object->getChildren().size()); + } else if (index.row() >= parentObject->children().size() + && index.row() < parentObject->children().size() + parentObject->relations().size()) { + element = parentObject->relations().at(index.row() - parentObject->children().size()); QMT_CHECK(element); } else { QMT_CHECK(false); } } } else if (index.row() == 0) { - element = _model_controller->getRootPackage(); + element = m_modelController->rootPackage(); } else { QMT_CHECK(false); } @@ -426,43 +425,42 @@ MElement *TreeModel::getElement(const QModelIndex &index) const return element; } -QModelIndex TreeModel::getIndex(const MElement *element) const +QModelIndex TreeModel::indexOf(const MElement *element) const { if (const MObject *object = dynamic_cast<const MObject *>(element)) { - if (!object->getOwner()) { - QMT_CHECK(element == _model_controller->getRootPackage()); - return index(0, 0); + if (!object->owner()) { + QMT_CHECK(element == m_modelController->rootPackage()); + return QStandardItemModel::index(0, 0); } - MObject *parent_object = object->getOwner(); - ModelItem *item = _object_to_item_map.value(parent_object); + MObject *parentObject = object->owner(); + ModelItem *item = m_objectToItemMap.value(parentObject); if (!item) { QMT_CHECK(false); return QModelIndex(); } - QModelIndex parent_index = indexFromItem(item); - int row = parent_object->getChildren().indexOf(object); - return index(row, 0, parent_index); + QModelIndex parentIndex = indexFromItem(item); + int row = parentObject->children().indexOf(object); + return QStandardItemModel::index(row, 0, parentIndex); } else if (const MRelation *relation = dynamic_cast<const MRelation *>(element)) { - QMT_CHECK(relation->getOwner()); - MObject *owner = relation->getOwner(); - ModelItem *item = _object_to_item_map.value(owner); + QMT_CHECK(relation->owner()); + MObject *owner = relation->owner(); + ModelItem *item = m_objectToItemMap.value(owner); if (!item) { QMT_CHECK(false); return QModelIndex(); } - QModelIndex parent_index = indexFromItem(item); - int row = owner->getChildren().size() + owner->getRelations().indexOf(relation); - return index(row, 0, parent_index); + QModelIndex parentIndex = indexFromItem(item); + int row = owner->children().size() + owner->relations().indexOf(relation); + return QStandardItemModel::index(row, 0, parentIndex); } return QModelIndex(); } -QIcon TreeModel::getIcon(const QModelIndex &index) const +QIcon TreeModel::icon(const QModelIndex &index) const { QStandardItem *item = itemFromIndex(index); - if (item) { + if (item) return item->icon(); - } return QIcon(); } @@ -478,249 +476,246 @@ QStringList TreeModel::mimeTypes() const void TreeModel::onBeginResetModel() { - QMT_CHECK(_busy == NOT_BUSY); - _busy = RESET_MODEL; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = ResetModel; QStandardItemModel::beginResetModel(); } void TreeModel::onEndResetModel() { - QMT_CHECK(_busy == RESET_MODEL); + QMT_CHECK(m_busyState == ResetModel); clear(); - MPackage *root_package = _model_controller->getRootPackage(); - if (_model_controller && root_package) { - _root_item = createItem(root_package); - appendRow(_root_item); - createChildren(root_package, _root_item); + MPackage *rootPackage = m_modelController->rootPackage(); + if (m_modelController && rootPackage) { + m_rootItem = createItem(rootPackage); + appendRow(m_rootItem); + createChildren(rootPackage, m_rootItem); QStandardItemModel::endResetModel(); } - _busy = NOT_BUSY; + m_busyState = NotBusy; } void TreeModel::onBeginUpdateObject(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == NOT_BUSY); - _busy = UPDATE_ELEMENT; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = UpdateElement; } void TreeModel::onEndUpdateObject(int row, const MObject *parent) { - QMT_CHECK(_busy == UPDATE_ELEMENT); - QModelIndex parent_index; + QMT_CHECK(m_busyState == UpdateElement); + QModelIndex parentIndex; if (parent) { - QMT_CHECK(_object_to_item_map.contains(parent)); - ModelItem *parent_item = _object_to_item_map.value(parent); - QMT_CHECK(parent_item); - parent_index = indexFromItem(parent_item); + QMT_CHECK(m_objectToItemMap.contains(parent)); + ModelItem *parentItem = m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + parentIndex = indexFromItem(parentItem); } // reflect updated element in standard item - QModelIndex element_index = this->index(row, 0, parent_index); - MElement *element = getElement(element_index); + QModelIndex elementIndex = this->QStandardItemModel::index(row, 0, parentIndex); + MElement *element = TreeModel::element(elementIndex); if (element) { MObject *object = dynamic_cast<MObject *>(element); if (object) { - ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(element_index)); + ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(elementIndex)); QMT_CHECK(item); ItemUpdater visitor(this, item); element->accept(&visitor); } } - _busy = NOT_BUSY; - emit dataChanged(this->index(row, 0, parent_index), this->index(row, 0, parent_index)); + m_busyState = NotBusy; + emit dataChanged(QStandardItemModel::index(row, 0, parentIndex), QStandardItemModel::index(row, 0, parentIndex)); } void TreeModel::onBeginInsertObject(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == NOT_BUSY); - _busy = INSERT_ELEMENT; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = InsertElement; } void TreeModel::onEndInsertObject(int row, const MObject *parent) { - QMT_CHECK(_busy == INSERT_ELEMENT); - ModelItem *parent_item =_object_to_item_map.value(parent); - QMT_CHECK(parent_item); - MObject *object = parent->getChildren().at(row); + QMT_CHECK(m_busyState == InsertElement); + ModelItem *parentItem =m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + MObject *object = parent->children().at(row); ModelItem *item = createItem(object); - parent_item->insertRow(row, item); + parentItem->insertRow(row, item); createChildren(object, item); - _busy = NOT_BUSY; + m_busyState = NotBusy; } void TreeModel::onBeginRemoveObject(int row, const MObject *parent) { - QMT_CHECK(_busy == NOT_BUSY); - _busy = REMOVE_ELEMENT; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = RemoveElement; QMT_CHECK(parent); - MObject *object = parent->getChildren().at(row); - if (object) { + MObject *object = parent->children().at(row); + if (object) removeObjectFromItemMap(object); - } - ModelItem *parent_item = _object_to_item_map.value(parent); - QMT_CHECK(parent_item); - parent_item->removeRow(row); + ModelItem *parentItem = m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + parentItem->removeRow(row); } void TreeModel::onEndRemoveObject(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == REMOVE_ELEMENT); - _busy = NOT_BUSY; + QMT_CHECK(m_busyState == RemoveElement); + m_busyState = NotBusy; } -void TreeModel::onBeginMoveObject(int former_row, const MObject *former_owner) +void TreeModel::onBeginMoveObject(int formerRow, const MObject *formerOwner) { - QMT_CHECK(_busy == NOT_BUSY); - _busy = MOVE_ELEMENT; - QMT_CHECK(former_owner); - MObject *object = former_owner->getChildren().at(former_row); - if (object) { + QMT_CHECK(m_busyState == NotBusy); + m_busyState = MoveElement; + QMT_CHECK(formerOwner); + MObject *object = formerOwner->children().at(formerRow); + if (object) removeObjectFromItemMap(object); - } - ModelItem *parent_item = _object_to_item_map.value(former_owner); - QMT_CHECK(parent_item); - parent_item->removeRow(former_row); + ModelItem *parentItem = m_objectToItemMap.value(formerOwner); + QMT_CHECK(parentItem); + parentItem->removeRow(formerRow); } void TreeModel::onEndMoveObject(int row, const MObject *owner) { - QMT_CHECK(_busy == MOVE_ELEMENT); - ModelItem *parent_item =_object_to_item_map.value(owner); - QMT_CHECK(parent_item); - MObject *object = owner->getChildren().at(row); + QMT_CHECK(m_busyState == MoveElement); + ModelItem *parentItem =m_objectToItemMap.value(owner); + QMT_CHECK(parentItem); + MObject *object = owner->children().at(row); ModelItem *item = createItem(object); - parent_item->insertRow(row, item); + parentItem->insertRow(row, item); createChildren(object, item); - _busy = NOT_BUSY; + m_busyState = NotBusy; } void TreeModel::onBeginUpdateRelation(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == NOT_BUSY); - _busy = UPDATE_RELATION; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = UpdateRelation; } void TreeModel::onEndUpdateRelation(int row, const MObject *parent) { QMT_CHECK(parent); - QMT_CHECK(_busy == UPDATE_RELATION); + QMT_CHECK(m_busyState == UpdateRelation); - QMT_CHECK(_object_to_item_map.contains(parent)); - ModelItem *parent_item = _object_to_item_map.value(parent); - QMT_CHECK(parent_item); - QModelIndex parent_index = indexFromItem(parent_item); + QMT_CHECK(m_objectToItemMap.contains(parent)); + ModelItem *parentItem = m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + QModelIndex parentIndex = indexFromItem(parentItem); // reflect updated relation in standard item - row += parent->getChildren().size(); - QModelIndex element_index = this->index(row, 0, parent_index); - MElement *element = getElement(element_index); + row += parent->children().size(); + QModelIndex elementIndex = QStandardItemModel::index(row, 0, parentIndex); + MElement *element = TreeModel::element(elementIndex); if (element) { MRelation *relation = dynamic_cast<MRelation *>(element); if (relation) { - ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(element_index)); + ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(elementIndex)); QMT_CHECK(item); ItemUpdater visitor(this, item); element->accept(&visitor); } } - _busy = NOT_BUSY; - emit dataChanged(this->index(row, 0, parent_index), this->index(row, 0, parent_index)); + m_busyState = NotBusy; + emit dataChanged(QStandardItemModel::index(row, 0, parentIndex), QStandardItemModel::index(row, 0, parentIndex)); } void TreeModel::onBeginInsertRelation(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == NOT_BUSY); - _busy = INSERT_RELATION; + QMT_CHECK(m_busyState == NotBusy); + m_busyState = InsertRelation; } void TreeModel::onEndInsertRelation(int row, const MObject *parent) { QMT_CHECK(parent); - QMT_CHECK(_busy == INSERT_RELATION); - ModelItem *parent_item =_object_to_item_map.value(parent); - QMT_CHECK(parent_item); - MRelation *relation = parent->getRelations().at(row); + QMT_CHECK(m_busyState == InsertRelation); + ModelItem *parentItem =m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + MRelation *relation = parent->relations().at(row); ModelItem *item = createItem(relation); - parent_item->insertRow(parent->getChildren().size() + row, item); - _busy = NOT_BUSY; + parentItem->insertRow(parent->children().size() + row, item); + m_busyState = NotBusy; } void TreeModel::onBeginRemoveRelation(int row, const MObject *parent) { QMT_CHECK(parent); - QMT_CHECK(_busy == NOT_BUSY); - _busy = REMOVE_RELATION; - QMT_CHECK(parent->getRelations().at(row)); - ModelItem *parent_item = _object_to_item_map.value(parent); - QMT_CHECK(parent_item); - parent_item->removeRow(parent->getChildren().size() + row); + QMT_CHECK(m_busyState == NotBusy); + m_busyState = RemoveRelation; + QMT_CHECK(parent->relations().at(row)); + ModelItem *parentItem = m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + parentItem->removeRow(parent->children().size() + row); } void TreeModel::onEndRemoveRelation(int row, const MObject *parent) { Q_UNUSED(row); Q_UNUSED(parent); - QMT_CHECK(_busy == REMOVE_RELATION); - _busy = NOT_BUSY; + QMT_CHECK(m_busyState == RemoveRelation); + m_busyState = NotBusy; } -void TreeModel::onBeginMoveRelation(int former_row, const MObject *former_owner) +void TreeModel::onBeginMoveRelation(int formerRow, const MObject *formerOwner) { - QMT_CHECK(_busy == NOT_BUSY); - _busy = MOVE_ELEMENT; - QMT_CHECK(former_owner); - QMT_CHECK(former_owner->getRelations().at(former_row)); - ModelItem *parent_item = _object_to_item_map.value(former_owner); - QMT_CHECK(parent_item); - parent_item->removeRow(former_owner->getChildren().size() + former_row); + QMT_CHECK(m_busyState == NotBusy); + m_busyState = MoveElement; + QMT_CHECK(formerOwner); + QMT_CHECK(formerOwner->relations().at(formerRow)); + ModelItem *parentItem = m_objectToItemMap.value(formerOwner); + QMT_CHECK(parentItem); + parentItem->removeRow(formerOwner->children().size() + formerRow); } void TreeModel::onEndMoveRelation(int row, const MObject *owner) { QMT_CHECK(owner); - QMT_CHECK(_busy == MOVE_ELEMENT); - ModelItem *parent_item =_object_to_item_map.value(owner); - QMT_CHECK(parent_item); - MRelation *relation = owner->getRelations().at(row); + QMT_CHECK(m_busyState == MoveElement); + ModelItem *parentItem =m_objectToItemMap.value(owner); + QMT_CHECK(parentItem); + MRelation *relation = owner->relations().at(row); ModelItem *item = createItem(relation); - parent_item->insertRow(owner->getChildren().size() + row, item); - _busy = NOT_BUSY; + parentItem->insertRow(owner->children().size() + row, item); + m_busyState = NotBusy; } -void TreeModel::onRelationEndChanged(MRelation *relation, MObject *end_object) +void TreeModel::onRelationEndChanged(MRelation *relation, MObject *endObject) { - Q_UNUSED(end_object); - QMT_CHECK(_busy == NOT_BUSY); + Q_UNUSED(endObject); + QMT_CHECK(m_busyState == NotBusy); - MObject *parent = relation->getOwner(); + MObject *parent = relation->owner(); QMT_CHECK(parent); - QMT_CHECK(_object_to_item_map.contains(parent)); - ModelItem *parent_item = _object_to_item_map.value(parent); - QMT_CHECK(parent_item); - QModelIndex parent_index = indexFromItem(parent_item); + QMT_CHECK(m_objectToItemMap.contains(parent)); + ModelItem *parentItem = m_objectToItemMap.value(parent); + QMT_CHECK(parentItem); + QModelIndex parentIndex = indexFromItem(parentItem); - int row = parent->getChildren().size() + relation->getOwner()->getRelations().indexOf(relation); - QModelIndex element_index = this->index(row, 0, parent_index); - QMT_CHECK(element_index.isValid()); + int row = parent->children().size() + relation->owner()->relations().indexOf(relation); + QModelIndex elementIndex = QStandardItemModel::index(row, 0, parentIndex); + QMT_CHECK(elementIndex.isValid()); - ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(element_index)); + ModelItem *item = dynamic_cast<ModelItem *>(itemFromIndex(elementIndex)); QMT_CHECK(item); QString label = createRelationLabel(relation); - if (item->text() != label) { + if (item->text() != label) item->setText(label); - } - emit dataChanged(this->index(row, 0, parent_index), this->index(row, 0, parent_index)); + emit dataChanged(QStandardItemModel::index(row, 0, parentIndex), QStandardItemModel::index(row, 0, parentIndex)); } void TreeModel::onModelDataChanged(const QModelIndex &topleft, const QModelIndex &bottomright) @@ -736,37 +731,37 @@ void TreeModel::onModelDataChanged(const QModelIndex &topleft, const QModelIndex void TreeModel::clear() { QStandardItemModel::clear(); - _root_item = 0; - _object_to_item_map.clear(); - _item_to_object_map.clear(); + m_rootItem = 0; + m_objectToItemMap.clear(); + m_itemToObjectMap.clear(); } TreeModel::ModelItem *TreeModel::createItem(const MElement *element) { ItemFactory visitor(this); element->accept(&visitor); - QMT_CHECK(visitor.getProduct()); - return visitor.getProduct(); + QMT_CHECK(visitor.product()); + return visitor.product(); } -void TreeModel::createChildren(const MObject *parent_object, ModelItem *parent_item) +void TreeModel::createChildren(const MObject *parentObject, ModelItem *parentItem) { - QMT_CHECK(!_object_to_item_map.contains(parent_object)); - _object_to_item_map.insert(parent_object, parent_item); - QMT_CHECK(!_item_to_object_map.contains(parent_item)); - _item_to_object_map.insert(parent_item, parent_object); - foreach (const Handle<MObject> &object, parent_object->getChildren()) { + QMT_CHECK(!m_objectToItemMap.contains(parentObject)); + m_objectToItemMap.insert(parentObject, parentItem); + QMT_CHECK(!m_itemToObjectMap.contains(parentItem)); + m_itemToObjectMap.insert(parentItem, parentObject); + foreach (const Handle<MObject> &object, parentObject->children()) { if (object.hasTarget()) { - ModelItem *item = createItem(object.getTarget()); - parent_item->appendRow(item); - createChildren(object.getTarget(), item); + ModelItem *item = createItem(object.target()); + parentItem->appendRow(item); + createChildren(object.target(), item); } } - foreach (const Handle<MRelation> &handle, parent_object->getRelations()) { + foreach (const Handle<MRelation> &handle, parentObject->relations()) { if (handle.hasTarget()) { - MRelation *relation = handle.getTarget(); + MRelation *relation = handle.target(); ModelItem *item = createItem(relation); - parent_item->appendRow(item); + parentItem->appendRow(item); } } } @@ -774,16 +769,15 @@ void TreeModel::createChildren(const MObject *parent_object, ModelItem *parent_i void TreeModel::removeObjectFromItemMap(const MObject *object) { QMT_CHECK(object); - QMT_CHECK(_object_to_item_map.contains(object)); - ModelItem *item = _object_to_item_map.value(object); + QMT_CHECK(m_objectToItemMap.contains(object)); + ModelItem *item = m_objectToItemMap.value(object); QMT_CHECK(item); - QMT_CHECK(_item_to_object_map.contains(item)); - _item_to_object_map.remove(item); - _object_to_item_map.remove(object); - foreach (const Handle<MObject> &child, object->getChildren()) { - if (child.hasTarget()) { - removeObjectFromItemMap(child.getTarget()); - } + QMT_CHECK(m_itemToObjectMap.contains(item)); + m_itemToObjectMap.remove(item); + m_objectToItemMap.remove(object); + foreach (const Handle<MObject> &child, object->children()) { + if (child.hasTarget()) + removeObjectFromItemMap(child.target()); } } @@ -791,45 +785,42 @@ QString TreeModel::createObjectLabel(const MObject *object) { QMT_CHECK(object); - if (object->getName().isEmpty()) { + if (object->name().isEmpty()) { if (const MItem *item = dynamic_cast<const MItem *>(object)) { - if (!item->getVariety().isEmpty()) { - return QString(QStringLiteral("[%1]")).arg(item->getVariety()); - } + if (!item->variety().isEmpty()) + return QString(QStringLiteral("[%1]")).arg(item->variety()); } return tr("[unnamed]"); } if (const MClass *klass = dynamic_cast<const MClass *>(object)) { - if (!klass->getNamespace().isEmpty()) { - return QString(QStringLiteral("%1 [%2]")).arg(klass->getName()).arg(klass->getNamespace()); - } + if (!klass->umlNamespace().isEmpty()) + return QString(QStringLiteral("%1 [%2]")).arg(klass->name()).arg(klass->umlNamespace()); } - return object->getName(); + return object->name(); } QString TreeModel::createRelationLabel(const MRelation *relation) { QString name; - if (!relation->getName().isEmpty()) { - name += relation->getName(); + if (!relation->name().isEmpty()) { + name += relation->name(); name += QStringLiteral(": "); } - if (MObject *end_a = _model_controller->findObject(relation->getEndA())) { - name += createObjectLabel(end_a); - } + if (MObject *endA = m_modelController->findObject(relation->endAUid())) + name += createObjectLabel(endA); name += QStringLiteral(" - "); - if (MObject *end_b = _model_controller->findObject(relation->getEndB())) { - name += createObjectLabel(end_b); - } + if (MObject *endB = m_modelController->findObject(relation->endBUid())) + name += createObjectLabel(endB); return name; } -QIcon TreeModel::createIcon(StereotypeIcon::Element stereotype_icon_element, StyleEngine::ElementType style_element_type, const QStringList &stereotypes, const QString &default_icon_path) +QIcon TreeModel::createIcon(StereotypeIcon::Element stereotypeIconElement, StyleEngine::ElementType styleElementType, + const QStringList &stereotypes, const QString &defaultIconPath) { - const Style *style = _style_controller->adaptStyle(style_element_type); - return _stereotype_controller->createIcon(stereotype_icon_element, stereotypes, default_icon_path, style, + const Style *style = m_styleController->adaptStyle(styleElementType); + return m_stereotypeController->createIcon(stereotypeIconElement, stereotypes, defaultIconPath, style, QSize(48, 48), QMarginsF(3.0, 2.0, 3.0, 4.0)); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.h b/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.h index 30f3f3fa3e..12af094d68 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.h +++ b/src/libs/3rdparty/modeling/qmt/model_ui/treemodel.h @@ -44,7 +44,6 @@ QT_BEGIN_NAMESPACE class QIcon; QT_END_NAMESPACE - namespace qmt { class MElement; @@ -55,9 +54,7 @@ class ModelController; class StereotypeController; class StyleController; - -class QMT_EXPORT TreeModel : - public QStandardItemModel +class QMT_EXPORT TreeModel : public QStandardItemModel { Q_OBJECT @@ -66,142 +63,93 @@ class QMT_EXPORT TreeModel : class ItemUpdater; public: - enum ItemType { - PACKAGE, - DIAGRAM, - ELEMENT, - RELATION + Package, + Diagram, + Element, + Relation }; enum Roles { - ROLE_ITEM_TYPE = Qt::UserRole + 1 + RoleItemType = Qt::UserRole + 1 }; -public: explicit TreeModel(QObject *parent = 0); - ~TreeModel(); -public: - - ModelController *getModelController() const { return _model_controller; } - - void setModelController(ModelController *model_controller); - - StereotypeController *getStereotypeController() const { return _stereotype_controller; } - - void setStereotypeController(StereotypeController *stereotype_controller); - - StyleController *getStyleController() const { return _style_controller; } - - void setStyleController(StyleController *style_controller); - - MElement *getElement(const QModelIndex &index) const; - - QModelIndex getIndex(const MElement *element) const; + ModelController *modelController() const { return m_modelController; } + void setModelController(ModelController *modelController); + StereotypeController *stereotypeController() const { return m_stereotypeController; } + void setStereotypeController(StereotypeController *stereotypeController); + StyleController *styleController() const { return m_styleController; } + void setStyleController(StyleController *styleController); - QIcon getIcon(const QModelIndex &index) const; - -public: + MElement *element(const QModelIndex &index) const; + QModelIndex indexOf(const MElement *element) const; + QIcon icon(const QModelIndex &index) const; Qt::DropActions supportedDropActions() const; - QStringList mimeTypes() const; private slots: - void onBeginResetModel(); - void onEndResetModel(); - void onBeginUpdateObject(int row, const MObject *parent); - void onEndUpdateObject(int row, const MObject *parent); - void onBeginInsertObject(int row, const MObject *parent); - void onEndInsertObject(int row, const MObject *parent); - void onBeginRemoveObject(int row, const MObject *parent); - void onEndRemoveObject(int row, const MObject *parent); - - void onBeginMoveObject(int former_row, const MObject *former_owner); - + void onBeginMoveObject(int formerRow, const MObject *formerOwner); void onEndMoveObject(int row, const MObject *owner); - void onBeginUpdateRelation(int row, const MObject *parent); - void onEndUpdateRelation(int row, const MObject *parent); - void onBeginInsertRelation(int row, const MObject *parent); - void onEndInsertRelation(int row, const MObject *parent); - void onBeginRemoveRelation(int row, const MObject *parent); - void onEndRemoveRelation(int row, const MObject *parent); - - void onBeginMoveRelation(int former_row, const MObject *former_owner); - + void onBeginMoveRelation(int formerRow, const MObject *formerOwner); void onEndMoveRelation(int row, const MObject *owner); - - void onRelationEndChanged(MRelation *relation, MObject *end_object); - + void onRelationEndChanged(MRelation *relation, MObject *endObject); void onModelDataChanged(const QModelIndex &topleft, const QModelIndex &bottomright); private: - void clear(); - ModelItem *createItem(const MElement *element); - - void createChildren(const MObject *parent_object, ModelItem *parent_item); - + void createChildren(const MObject *parentObject, ModelItem *parentItem); void removeObjectFromItemMap(const MObject *object); - QString createObjectLabel(const MObject *object); - QString createRelationLabel(const MRelation *relation); + QIcon createIcon(StereotypeIcon::Element stereotypeIconElement, + StyleEngine::ElementType styleElementType, const QStringList &stereotypes, + const QString &defaultIconPath); - QIcon createIcon(StereotypeIcon::Element stereotype_icon_element, StyleEngine::ElementType style_element_type, const QStringList &stereotypes, const QString &default_icon_path); - -private: enum Busy { - NOT_BUSY, - RESET_MODEL, - UPDATE_ELEMENT, - INSERT_ELEMENT, - REMOVE_ELEMENT, - MOVE_ELEMENT, - UPDATE_DIAGRAM, - INSERT_DIAGRAM, - REMOVE_DIAGRAM, - MOVE_DIAGRAM, - UPDATE_RELATION, - INSERT_RELATION, - REMOVE_RELATION, - MOVE_RELATION + NotBusy, + ResetModel, + UpdateElement, + InsertElement, + RemoveElement, + MoveElement, + UpdateDiagram, + InsertDiagram, + RemoveDiagram, + MoveDiagram, + UpdateRelation, + InsertRelation, + RemoveRelation, + MoveRelation }; -private: - - ModelController *_model_controller; - - StereotypeController *_stereotype_controller; - - StyleController *_style_controller; - - ModelItem *_root_item; - - QHash<const MObject *, ModelItem *> _object_to_item_map; - - QHash<ModelItem *, const MObject *> _item_to_object_map; - - Busy _busy; + ModelController *m_modelController; + StereotypeController *m_stereotypeController; + StyleController *m_styleController; + ModelItem *m_rootItem; + QHash<const MObject *, ModelItem *> m_objectToItemMap; + QHash<ModelItem *, const MObject *> m_itemToObjectMap; + Busy m_busyState; }; -} +} // namespace qmt #endif // QMT_TREEMODEL_H diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.cpp b/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.cpp index e5faaf53b8..90f9c81f9c 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.cpp @@ -44,8 +44,8 @@ namespace qmt { TreeModelManager::TreeModelManager(QObject *parent) : QObject(parent), - _tree_model(0), - _model_tree_view(0) + m_treeModel(0), + m_modelTreeView(0) { } @@ -53,69 +53,65 @@ TreeModelManager::~TreeModelManager() { } -void TreeModelManager::setTreeModel(TreeModel *tree_model) +void TreeModelManager::setTreeModel(TreeModel *treeModel) { - _tree_model = tree_model; + m_treeModel = treeModel; } -void TreeModelManager::setModelTreeView(ModelTreeViewInterface *model_tree_view) +void TreeModelManager::setModelTreeView(ModelTreeViewInterface *modelTreeView) { - _model_tree_view = model_tree_view; + m_modelTreeView = modelTreeView; } bool TreeModelManager::isRootPackageSelected() const { - foreach (const QModelIndex &index, _model_tree_view->getSelectedSourceModelIndexes()) { - MObject *object = dynamic_cast<MObject *>(_tree_model->getElement(index)); - if (object && !object->getOwner()) { + foreach (const QModelIndex &index, m_modelTreeView->selectedSourceModelIndexes()) { + MObject *object = dynamic_cast<MObject *>(m_treeModel->element(index)); + if (object && !object->owner()) return true; - } } return false; } -MObject *TreeModelManager::getSelectedObject() const +MObject *TreeModelManager::selectedObject() const { MObject *object = 0; - if (_model_tree_view->getCurrentSourceModelIndex().isValid()) { - MElement *element = _tree_model->getElement(_model_tree_view->getCurrentSourceModelIndex()); - if (element) { + if (m_modelTreeView->currentSourceModelIndex().isValid()) { + MElement *element = m_treeModel->element(m_modelTreeView->currentSourceModelIndex()); + if (element) object = dynamic_cast<MObject *>(element); - } } return object; } -MPackage *TreeModelManager::getSelectedPackage() const +MPackage *TreeModelManager::selectedPackage() const { - if (_model_tree_view->getCurrentSourceModelIndex().isValid()) + if (m_modelTreeView->currentSourceModelIndex().isValid()) { - MElement *element = _tree_model->getElement(_model_tree_view->getCurrentSourceModelIndex()); + MElement *element = m_treeModel->element(m_modelTreeView->currentSourceModelIndex()); QMT_CHECK(element); if (MPackage *package = dynamic_cast<MPackage *>(element)) { return package; } else if (MObject *object = dynamic_cast<MObject *>(element)) { - package = dynamic_cast<MPackage *>(object->getOwner()); - if (package) { + package = dynamic_cast<MPackage *>(object->owner()); + if (package) return package; - } } } - return _tree_model->getModelController()->getRootPackage(); + return m_treeModel->modelController()->rootPackage(); } -MSelection TreeModelManager::getSelectedObjects() const +MSelection TreeModelManager::selectedObjects() const { - MSelection model_selection; - foreach (const QModelIndex &index, _model_tree_view->getSelectedSourceModelIndexes()) { - MElement *element = _tree_model->getElement(index); - if (MObject *object = dynamic_cast<MObject *>(element)) { - model_selection.append(object->getUid(), _tree_model->getModelController()->getOwnerKey(object)); - } else if (MRelation *relation = dynamic_cast<MRelation *>(element)) { - model_selection.append(relation->getUid(), _tree_model->getModelController()->getOwnerKey(relation)); - } + MSelection modelSelection; + foreach (const QModelIndex &index, m_modelTreeView->selectedSourceModelIndexes()) { + MElement *element = m_treeModel->element(index); + if (MObject *object = dynamic_cast<MObject *>(element)) + modelSelection.append(object->uid(), m_treeModel->modelController()->ownerKey(object)); + else if (MRelation *relation = dynamic_cast<MRelation *>(element)) + modelSelection.append(relation->uid(), m_treeModel->modelController()->ownerKey(relation)); } - return model_selection; + return modelSelection; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.h b/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.h index 2a94305cce..66314161e4 100644 --- a/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.h +++ b/src/libs/3rdparty/modeling/qmt/model_ui/treemodelmanager.h @@ -42,48 +42,29 @@ class MObject; class MPackage; class MSelection; - -class QMT_EXPORT TreeModelManager : - public QObject +class QMT_EXPORT TreeModelManager : public QObject { Q_OBJECT public: - explicit TreeModelManager(QObject *parent = 0); - ~TreeModelManager(); -signals: - -public: - - TreeModel *getTreeModel() const { return _tree_model; } - - void setTreeModel(TreeModel *tree_model); - - ModelTreeViewInterface *getModelTreeView() const { return _model_tree_view; } - - void setModelTreeView(ModelTreeViewInterface *model_tree_view); - -public: + TreeModel *treeModel() const { return m_treeModel; } + void setTreeModel(TreeModel *treeModel); + ModelTreeViewInterface *modelTreeView() const { return m_modelTreeView; } + void setModelTreeView(ModelTreeViewInterface *modelTreeView); bool isRootPackageSelected() const; - - MObject *getSelectedObject() const; - - MPackage *getSelectedPackage() const; - - MSelection getSelectedObjects() const; + MObject *selectedObject() const; + MPackage *selectedPackage() const; + MSelection selectedObjects() const; private: - - TreeModel *_tree_model; - - ModelTreeViewInterface *_model_tree_view; - + TreeModel *m_treeModel; + ModelTreeViewInterface *m_modelTreeView; }; -} +} // namespace qmt #endif // QMT_TREEMODELMANAGER_H diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.cpp b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.cpp index d1702f0eed..bb8d11ebdd 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.cpp @@ -43,100 +43,76 @@ class ClassMembersEdit::Cursor public: explicit Cursor(const QString &text); -public: - - bool isValid() const { return _valid; } - - bool atEnd() const { return _pos == _text.length(); } - - int getPosition() const { return _pos; } - + bool isValid() const { return m_isValid; } + bool atEnd() const { return m_pos == m_text.length(); } + int position() const { return m_pos; } void setPosition(int pos); QString readWord(); - bool skip(const QString &s); - QString readUntil(const QString &delimiter); - void unreadWord(); - void skipUntilOrNewline(const QString &delimiter); -public: - QString readWordFromRight(); - bool skipFromRight(const QString &s); -public: - QString extractSubstr(int start, int stop); -public: - void skipWhitespaces(); - void skipWhitespacesFromRight(); private: - QString preparse(const QString &text); -private: - - QString _text; - - bool _valid; - - int _pos; - - int _last_pos; - + QString m_text; + bool m_isValid; + int m_pos; + int m_lastPos; }; ClassMembersEdit::Cursor::Cursor(const QString &text) - : _text(preparse(text)), - _valid(true), - _pos(0), - _last_pos(-1) + : m_text(preparse(text)), + m_isValid(true), + m_pos(0), + m_lastPos(-1) { } void ClassMembersEdit::Cursor::setPosition(int pos) { - if (_valid) { - _pos = pos; - } + if (m_isValid) + m_pos = pos; } QString ClassMembersEdit::Cursor::readWord() { skipWhitespaces(); QString word; - if (_valid && _pos < _text.length()) { - _last_pos = _pos; - QChar c = _text.at(_pos); - ++_pos; + if (m_isValid && m_pos < m_text.length()) { + m_lastPos = m_pos; + QChar c = m_text.at(m_pos); + ++m_pos; if (c.isLetterOrNumber() ||c == QLatin1Char('_')) { word = c; - while (_valid && _pos < _text.length() && (_text.at(_pos).isLetterOrNumber() || _text.at(_pos) == QLatin1Char('_'))) { - word += _text.at(_pos); - ++_pos; + while (m_isValid && m_pos < m_text.length() + && (m_text.at(m_pos).isLetterOrNumber() || m_text.at(m_pos) == QLatin1Char('_'))) { + word += m_text.at(m_pos); + ++m_pos; } } else { - if (c == QLatin1Char('<') && _pos < _text.length() && _text.at(_pos) == QLatin1Char('<')) { - ++_pos; + if (c == QLatin1Char('<') && m_pos < m_text.length() && m_text.at(m_pos) == QLatin1Char('<')) { + ++m_pos; word = QStringLiteral("<<"); - } else if (c == QLatin1Char('>') && _pos < _text.length() && _text.at(_pos) == QLatin1Char('>')) { - ++_pos; + } else if (c == QLatin1Char('>') && m_pos < m_text.length() && m_text.at(m_pos) == QLatin1Char('>')) { + ++m_pos; word = QStringLiteral(">>"); } else { word = c; } } } else { - _valid = false; + m_isValid = false; } return word; } @@ -144,8 +120,9 @@ QString ClassMembersEdit::Cursor::readWord() bool ClassMembersEdit::Cursor::skip(const QString &s) { skipWhitespaces(); - if (_valid && _pos + s.length() <= _text.length() && s.compare(_text.mid(_pos, s.length()), s, Qt::CaseInsensitive) == 0) { - _pos += s.length(); + if (m_isValid && m_pos + s.length() <= m_text.length() + && s.compare(m_text.mid(m_pos, s.length()), s, Qt::CaseInsensitive) == 0) { + m_pos += s.length(); return true; } return false; @@ -154,47 +131,46 @@ bool ClassMembersEdit::Cursor::skip(const QString &s) QString ClassMembersEdit::Cursor::readUntil(const QString &delimiter) { QString s; - while (_valid) { - if (_pos >= _text.length() || _text.at(_pos) == QStringLiteral("\n")) { - _valid = false; + while (m_isValid) { + if (m_pos >= m_text.length() || m_text.at(m_pos) == QStringLiteral("\n")) { + m_isValid = false; return s; } - if (_pos + delimiter.length() <= _text.length() && s.compare(_text.mid(_pos, delimiter.length()), delimiter, Qt::CaseInsensitive) == 0) { - _pos += delimiter.length(); + if (m_pos + delimiter.length() <= m_text.length() + && s.compare(m_text.mid(m_pos, delimiter.length()), delimiter, Qt::CaseInsensitive) == 0) { + m_pos += delimiter.length(); return s; } - s += _text.at(_pos); - ++_pos; + s += m_text.at(m_pos); + ++m_pos; } return s; } void ClassMembersEdit::Cursor::unreadWord() { - if (!_valid) { + if (!m_isValid) return; - } - if (_last_pos < 0) { - _valid = false; + if (m_lastPos < 0) { + m_isValid = false; return; } - _pos = _last_pos; + m_pos = m_lastPos; } void ClassMembersEdit::Cursor::skipUntilOrNewline(const QString &delimiter) { - while (_valid) { - if (_pos >= _text.length()) { + while (m_isValid) { + if (m_pos >= m_text.length()) return; - } - if (_text.at(_pos) == QStringLiteral("\n")) { + if (m_text.at(m_pos) == QStringLiteral("\n")) return; - } - if (_pos + delimiter.length() <= _text.length() && QString::compare(_text.mid(_pos, delimiter.length()), delimiter, Qt::CaseInsensitive) == 0) { - _pos += delimiter.length(); + if (m_pos + delimiter.length() <= m_text.length() + && QString::compare(m_text.mid(m_pos, delimiter.length()), delimiter, Qt::CaseInsensitive) == 0) { + m_pos += delimiter.length(); return; } - ++_pos; + ++m_pos; } } @@ -202,29 +178,30 @@ QString ClassMembersEdit::Cursor::readWordFromRight() { skipWhitespacesFromRight(); QString word; - if (_valid && _pos >= 0) { - _last_pos = _pos; - QChar c = _text.at(_pos); - --_pos; + if (m_isValid && m_pos >= 0) { + m_lastPos = m_pos; + QChar c = m_text.at(m_pos); + --m_pos; if (c.isLetterOrNumber() || c == QLatin1Char('_')) { word = c; - while (_valid && _pos >= 0 && (_text.at(_pos).isLetterOrNumber() || _text.at(_pos) == QLatin1Char('_'))) { - word = _text.at(_pos) + word; - --_pos; + while (m_isValid && m_pos >= 0 + && (m_text.at(m_pos).isLetterOrNumber() || m_text.at(m_pos) == QLatin1Char('_'))) { + word = m_text.at(m_pos) + word; + --m_pos; } } else { - if (c == QLatin1Char('<') && _pos >= 0 && _text.at(_pos) == QLatin1Char('<')) { - --_pos; + if (c == QLatin1Char('<') && m_pos >= 0 && m_text.at(m_pos) == QLatin1Char('<')) { + --m_pos; word = QStringLiteral("<<"); - } else if (c == QLatin1Char('>') && _pos >= 0 && _text.at(_pos) == QLatin1Char('>')) { - --_pos; + } else if (c == QLatin1Char('>') && m_pos >= 0 && m_text.at(m_pos) == QLatin1Char('>')) { + --m_pos; word = QStringLiteral(">>"); } else { word = c; } } } else { - _valid = false; + m_isValid = false; } return word; @@ -233,9 +210,9 @@ QString ClassMembersEdit::Cursor::readWordFromRight() bool ClassMembersEdit::Cursor::skipFromRight(const QString &s) { skipWhitespacesFromRight(); - if (_valid && _pos - s.length() >= 0 - && s.compare(_text.mid(_pos - s.length() + 1, s.length()), s, Qt::CaseInsensitive) == 0) { - _pos -= s.length(); + if (m_isValid && m_pos - s.length() >= 0 + && s.compare(m_text.mid(m_pos - s.length() + 1, s.length()), s, Qt::CaseInsensitive) == 0) { + m_pos -= s.length(); return true; } return false; @@ -243,72 +220,68 @@ bool ClassMembersEdit::Cursor::skipFromRight(const QString &s) QString ClassMembersEdit::Cursor::extractSubstr(int start, int stop) { - if (_valid && start >= 0 && start < _text.length() && stop >= start && stop < _text.length()) { - return _text.mid(start, stop - start + 1); - } - _valid = false; + if (m_isValid && start >= 0 && start < m_text.length() && stop >= start && stop < m_text.length()) + return m_text.mid(start, stop - start + 1); + m_isValid = false; return QStringLiteral(""); } void ClassMembersEdit::Cursor::skipWhitespaces() { - while (_valid && _pos < _text.length() && _text.at(_pos).isSpace() && _text.at(_pos) != QStringLiteral("\n")) { - ++_pos; - } - if (_pos >= _text.length()) { - _valid = false; - } + while (m_isValid && m_pos < m_text.length() && m_text.at(m_pos).isSpace() && m_text.at(m_pos) != QStringLiteral("\n")) + ++m_pos; + if (m_pos >= m_text.length()) + m_isValid = false; } void ClassMembersEdit::Cursor::skipWhitespacesFromRight() { - while (_valid && _pos >= 0 && _text.at(_pos).isSpace() && _text.at(_pos) != QStringLiteral("\n")) { - --_pos; - } - if (_pos < 0) { - _valid = false; - } + while (m_isValid && m_pos >= 0 && m_text.at(m_pos).isSpace() && m_text.at(m_pos) != QStringLiteral("\n")) + --m_pos; + if (m_pos < 0) + m_isValid = false; } QString ClassMembersEdit::Cursor::preparse(const QString &text) { - QString parsed_text; + QString parsedText; if (!text.isEmpty()) { - QChar last_char = QLatin1Char(' '); - bool in_c_comment = false; - bool in_cpp_comment = false; + QChar lastChar = QLatin1Char(' '); + bool inCComment = false; + bool inCppComment = false; foreach (const QChar &c, text) { - if (!in_c_comment && !in_cpp_comment && last_char == QLatin1Char('/') && c == QLatin1Char('/')) { - in_cpp_comment = true; - last_char = QLatin1Char('\n'); - } else if (!in_c_comment && !in_cpp_comment && last_char == QLatin1Char('/') && c == QLatin1Char('*')) { - in_c_comment = true; - last_char = QLatin1Char(' '); - } else if (in_c_comment && !in_cpp_comment && last_char == QLatin1Char('*') && c == QLatin1Char('/')) { - in_c_comment = false; - } else if (!in_c_comment && in_cpp_comment && c == QLatin1Char('\n')) { - in_cpp_comment = false; - } else if (in_c_comment || in_cpp_comment) { + if (!inCComment && !inCppComment && lastChar == QLatin1Char('/') && c == QLatin1Char('/')) { + inCppComment = true; + lastChar = QLatin1Char('\n'); + } else if (!inCComment && !inCppComment && lastChar == QLatin1Char('/') && c == QLatin1Char('*')) { + inCComment = true; + lastChar = QLatin1Char(' '); + } else if (inCComment && !inCppComment && lastChar == QLatin1Char('*') && c == QLatin1Char('/')) { + inCComment = false; + } else if (!inCComment && inCppComment && c == QLatin1Char('\n')) { + inCppComment = false; + } else if (inCComment || inCppComment) { // ignore char } else { - parsed_text += last_char; - last_char = c; + parsedText += lastChar; + lastChar = c; } } - parsed_text += last_char; + parsedText += lastChar; } - return parsed_text; + return parsedText; } - -struct ClassMembersEdit::ClassMembersEditPrivate { +class ClassMembersEdit::ClassMembersEditPrivate +{ +public: ClassMembersEditPrivate() - : _valid(true) + : m_isValid(true) { } - bool _valid; - QList<MClassMember> _members; + bool m_isValid; + QList<MClassMember> m_members; }; ClassMembersEdit::ClassMembersEdit(QWidget *parent) @@ -324,30 +297,30 @@ ClassMembersEdit::~ClassMembersEdit() delete d; } -QList<MClassMember> ClassMembersEdit::getMembers() const +QList<MClassMember> ClassMembersEdit::members() const { - return d->_members; + return d->m_members; } void ClassMembersEdit::setMembers(const QList<MClassMember> &members) { - d->_members = members; + d->m_members = members; - setPlainText(build(d->_members)); + setPlainText(build(d->m_members)); } void ClassMembersEdit::reparse() { bool ok = false; QList<MClassMember> members = parse(toPlainText(), &ok); - if (ok != d->_valid) { - d->_valid = ok; - emit statusChanged(d->_valid); + if (ok != d->m_isValid) { + d->m_isValid = ok; + emit statusChanged(d->m_isValid); } if (ok) { - if (members != d->_members) { - d->_members = members; - emit membersChanged(d->_members); + if (members != d->m_members) { + d->m_members = members; + emit membersChanged(d->m_members); } setPlainText(build(members)); } @@ -357,107 +330,96 @@ void ClassMembersEdit::onTextChanged() { bool ok = false; QList<MClassMember> members = parse(toPlainText(), &ok); - if (ok != d->_valid) { - d->_valid = ok; - emit statusChanged(d->_valid); + if (ok != d->m_isValid) { + d->m_isValid = ok; + emit statusChanged(d->m_isValid); } if (ok) { - if (members != d->_members) { - d->_members = members; - emit membersChanged(d->_members); + if (members != d->m_members) { + d->m_members = members; + emit membersChanged(d->m_members); } } } QString ClassMembersEdit::build(const QList<MClassMember> &members) { - MClassMember::Visibility current_visibility = MClassMember::VISIBILITY_UNDEFINED; - QString current_group; + MClassMember::Visibility currentVisibility = MClassMember::VisibilityUndefined; + QString currentGroup; QString text; foreach (const MClassMember &member, members) { - bool add_newline = false; - bool add_space = false; - if (member.getVisibility() != current_visibility) { - if (member.getVisibility() != MClassMember::VISIBILITY_UNDEFINED) { + bool addNewline = false; + bool addSpace = false; + if (member.visibility() != currentVisibility) { + if (member.visibility() != MClassMember::VisibilityUndefined) { QString vis; - switch (member.getVisibility()) { - case MClassMember::VISIBILITY_UNDEFINED: + switch (member.visibility()) { + case MClassMember::VisibilityUndefined: break; - case MClassMember::VISIBILITY_PUBLIC: + case MClassMember::VisibilityPublic: vis = QStringLiteral("public:"); break; - case MClassMember::VISIBILITY_PROTECTED: + case MClassMember::VisibilityProtected: vis = QStringLiteral("protected:"); break; - case MClassMember::VISIBILITY_PRIVATE: + case MClassMember::VisibilityPrivate: vis = QStringLiteral("private:"); break; - case MClassMember::VISIBILITY_SIGNALS: + case MClassMember::VisibilitySignals: vis = QStringLiteral("signals:"); break; - case MClassMember::VISIBILITY_PRIVATE_SLOTS: + case MClassMember::VisibilityPrivateSlots: vis = QStringLiteral("private slots:"); break; - case MClassMember::VISIBILITY_PROTECTED_SLOTS: + case MClassMember::VisibilityProtectedSlots: vis = QStringLiteral("protected slots:"); break; - case MClassMember::VISIBILITY_PUBLIC_SLOTS: + case MClassMember::VisibilityPublicSlots: vis = QStringLiteral("public slots:"); break; } - if (!text.isEmpty()) { + if (!text.isEmpty()) text += QStringLiteral("\n"); - } text += vis; - add_newline = true; - add_space = true; + addNewline = true; + addSpace = true; } - current_visibility = member.getVisibility(); + currentVisibility = member.visibility(); } - if (member.getGroup() != current_group) { - if (add_space) { + if (member.group() != currentGroup) { + if (addSpace) text += QStringLiteral(" "); - } else if (!text.isEmpty()) { + else if (!text.isEmpty()) text += QStringLiteral("\n"); - } - text += QString(QStringLiteral("[%1]")).arg(member.getGroup()); - add_newline = true; - current_group = member.getGroup(); + text += QString(QStringLiteral("[%1]")).arg(member.group()); + addNewline = true; + currentGroup = member.group(); } - if (add_newline) { + if (addNewline) text += QStringLiteral("\n"); - } - if (!member.getStereotypes().isEmpty()) { + if (!member.stereotypes().isEmpty()) { StereotypesController ctrl; - text += QString(QStringLiteral("<<%1>> ")).arg(ctrl.toString(member.getStereotypes())); + text += QString(QStringLiteral("<<%1>> ")).arg(ctrl.toString(member.stereotypes())); } - if (member.getProperties() & MClassMember::PROPERTY_QSIGNAL) { + if (member.properties() & MClassMember::PropertyQsignal) text += QStringLiteral("signal "); - } - if (member.getProperties() & MClassMember::PROPERTY_QSLOT) { + if (member.properties() & MClassMember::PropertyQslot) text += QStringLiteral("slot "); - } - if (member.getProperties() & MClassMember::PROPERTY_QINVOKABLE) { + if (member.properties() & MClassMember::PropertyQinvokable) text += QStringLiteral("invokable "); - } - if (member.getProperties() & MClassMember::PROPERTY_VIRTUAL) { + if (member.properties() & MClassMember::PropertyVirtual) text += QStringLiteral("virtual "); - } - text += member.getDeclaration(); - if (member.getProperties() & MClassMember::PROPERTY_CONST) { + text += member.declaration(); + if (member.properties() & MClassMember::PropertyConst) text += QStringLiteral(" const"); - } - if (member.getProperties() & MClassMember::PROPERTY_OVERRIDE) { + if (member.properties() & MClassMember::PropertyOverride) text += QStringLiteral(" override"); - } - if (member.getProperties() & MClassMember::PROPERTY_FINAL) { + if (member.properties() & MClassMember::PropertyFinal) text += QStringLiteral(" final"); - } - if (member.getProperties() & MClassMember::PROPERTY_ABSTRACT) { + if (member.properties() & MClassMember::PropertyAbstract) text += QStringLiteral(" = 0"); - } text += QStringLiteral(";\n"); } @@ -471,48 +433,47 @@ QList<MClassMember> ClassMembersEdit::parse(const QString &text, bool *ok) *ok = true; QList<MClassMember> members; MClassMember member; - MClassMember::Visibility current_visibility = MClassMember::VISIBILITY_UNDEFINED; - QString current_group; + MClassMember::Visibility currentVisibility = MClassMember::VisibilityUndefined; + QString currentGroup; Cursor cursor(text); while (cursor.isValid() && *ok) { cursor.skipWhitespaces(); - if (!cursor.isValid()) { + if (!cursor.isValid()) return members; - } member = MClassMember(); QString word = cursor.readWord().toLower(); for (;;) { if (word == QStringLiteral("public")) { - current_visibility = MClassMember::VISIBILITY_PUBLIC; + currentVisibility = MClassMember::VisibilityPublic; word = cursor.readWord().toLower(); } else if (word == QStringLiteral("protected")) { - current_visibility = MClassMember::VISIBILITY_PROTECTED; + currentVisibility = MClassMember::VisibilityProtected; word = cursor.readWord().toLower(); } else if (word == QStringLiteral("private")) { - current_visibility = MClassMember::VISIBILITY_PRIVATE; + currentVisibility = MClassMember::VisibilityPrivate; word = cursor.readWord().toLower(); } else if (word == QStringLiteral("signals")) { - current_visibility = MClassMember::VISIBILITY_SIGNALS; + currentVisibility = MClassMember::VisibilitySignals; word = cursor.readWord().toLower(); } else if (word == QStringLiteral("slots")) { - switch (current_visibility) { - case MClassMember::VISIBILITY_PRIVATE: - current_visibility = MClassMember::VISIBILITY_PRIVATE_SLOTS; + switch (currentVisibility) { + case MClassMember::VisibilityPrivate: + currentVisibility = MClassMember::VisibilityPrivateSlots; break; - case MClassMember::VISIBILITY_PROTECTED: - current_visibility = MClassMember::VISIBILITY_PROTECTED_SLOTS; + case MClassMember::VisibilityProtected: + currentVisibility = MClassMember::VisibilityProtectedSlots; break; - case MClassMember::VISIBILITY_PUBLIC: - current_visibility = MClassMember::VISIBILITY_PUBLIC_SLOTS; + case MClassMember::VisibilityPublic: + currentVisibility = MClassMember::VisibilityPublicSlots; break; default: - current_visibility = MClassMember::VISIBILITY_PRIVATE_SLOTS; + currentVisibility = MClassMember::VisibilityPrivateSlots; break; } word = cursor.readWord().toLower(); } else if (word == QStringLiteral("[")) { - current_group = cursor.readUntil(QStringLiteral("]")); + currentGroup = cursor.readUntil(QStringLiteral("]")); word = cursor.readWord().toLower(); } else if (word == QStringLiteral("<<")) { QString stereotypes = cursor.readUntil(QStringLiteral(">>")); @@ -520,15 +481,15 @@ QList<MClassMember> ClassMembersEdit::parse(const QString &text, bool *ok) member.setStereotypes(ctrl.fromString(stereotypes)); word = cursor.readWord().toLower(); } else if (word == QStringLiteral("virtual")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_VIRTUAL); + member.setProperties(member.properties() | MClassMember::PropertyVirtual); word = cursor.readWord().toLower(); - } else if (word == QStringLiteral("signal") || word == QStringLiteral("q_signal")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_QSIGNAL); + } else if (word == QStringLiteral("signal") || word == QStringLiteral("qSignal")) { + member.setProperties(member.properties() | MClassMember::PropertyQsignal); word = cursor.readWord().toLower(); - } else if (word == QStringLiteral("slot") || word == QStringLiteral("q_slot")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_QSLOT); + } else if (word == QStringLiteral("slot") || word == QStringLiteral("qSlot")) { + member.setProperties(member.properties() | MClassMember::PropertyQslot); word = cursor.readWord().toLower(); - } else if (word == QStringLiteral("invokable") || word == QStringLiteral("q_invokable")) { + } else if (word == QStringLiteral("invokable") || word == QStringLiteral("qInvokable")) { member.setProperties(member.getProperties() | MClassMember::PROPERTY_QINVOKABLE); word = cursor.readWord().toLower(); } else if (word == QStringLiteral(":")) { @@ -538,65 +499,60 @@ QList<MClassMember> ClassMembersEdit::parse(const QString &text, bool *ok) break; } } - member.setVisibility(current_visibility); - member.setGroup(current_group); + member.setVisibility(currentVisibility); + member.setGroup(currentGroup); if (word != QStringLiteral("\n")) { - int declaration_start = cursor.getPosition(); + int declarationStart = cursor.position(); cursor.skipUntilOrNewline(QStringLiteral(";")); - int next_line_position = cursor.getPosition(); - cursor.setPosition(next_line_position - 1); + int nextLinePosition = cursor.position(); + cursor.setPosition(nextLinePosition - 1); word = cursor.readWordFromRight().toLower(); - if (word == QStringLiteral(";")) { + if (word == QStringLiteral(";")) word = cursor.readWordFromRight().toLower(); - } for (;;) { if (word == QStringLiteral("0")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_ABSTRACT); + member.setProperties(member.properties() | MClassMember::PropertyAbstract); word = cursor.readWordFromRight().toLower(); } else if (word == QStringLiteral("=")) { word = cursor.readWordFromRight().toLower(); } else if (word == QStringLiteral("final")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_FINAL); + member.setProperties(member.properties() | MClassMember::PropertyFinal); word = cursor.readWordFromRight().toLower(); } else if (word == QStringLiteral("override")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_OVERRIDE); + member.setProperties(member.properties() | MClassMember::PropertyOverride); word = cursor.readWordFromRight().toLower(); } else if (word == QStringLiteral("const")) { - member.setProperties(member.getProperties() | MClassMember::PROPERTY_CONST); + member.setProperties(member.properties() | MClassMember::PropertyConst); word = cursor.readWordFromRight().toLower(); } else { cursor.unreadWord(); break; } } - int declaration_stop = cursor.getPosition(); - QString declaration = cursor.extractSubstr(declaration_start, declaration_stop).trimmed(); - if (!cursor.isValid()) { + int declarationStop = cursor.position(); + QString declaration = cursor.extractSubstr(declarationStart, declarationStop).trimmed(); + if (!cursor.isValid()) break; - } if (!declaration.isEmpty()) { member.setDeclaration(declaration); - if (declaration.endsWith(QStringLiteral(")"))) { - member.setMemberType(MClassMember::MEMBER_METHOD); - } else { - member.setMemberType(MClassMember::MEMBER_ATTRIBUTE); - } + if (declaration.endsWith(QStringLiteral(")"))) + member.setMemberType(MClassMember::MemberMethod); + else + member.setMemberType(MClassMember::MemberAttribute); members.append(member); } - cursor.setPosition(next_line_position); - if (cursor.atEnd()) { + cursor.setPosition(nextLinePosition); + if (cursor.atEnd()) return members; - } cursor.skip(QStringLiteral("\n")); } else { word = cursor.readWord().toLower(); } } - if (!cursor.isValid()) { + if (!cursor.isValid()) *ok = false; - } return members; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.h b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.h index 02a77c600c..eddf93feec 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.h +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/classmembersedit.h @@ -38,51 +38,37 @@ namespace qmt { class MClassMember; -class QMT_EXPORT ClassMembersEdit : - public QPlainTextEdit +class QMT_EXPORT ClassMembersEdit : public QPlainTextEdit { Q_OBJECT - class Cursor; - struct ClassMembersEditPrivate; + class ClassMembersEditPrivate; public: - explicit ClassMembersEdit(QWidget *parent = 0); - ~ClassMembersEdit(); signals: - void statusChanged(bool valid); - void membersChanged(QList<MClassMember> &); public: - - QList<MClassMember> getMembers() const; - + QList<MClassMember> members() const; void setMembers(const QList<MClassMember> &members); public slots: - void reparse(); private slots: - void onTextChanged(); private: - QString build(const QList<MClassMember> &members); - QList<MClassMember> parse(const QString &text, bool *ok); -private: - ClassMembersEditPrivate *d; }; -} +} // namespace qmt #endif // QMT_CLASSMEMBERSEDIT_H diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.cpp b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.cpp index f59066711e..b4265a9567 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.cpp @@ -50,13 +50,12 @@ #include <QDropEvent> #include <QMenu> - namespace qmt { ModelTreeView::ModelTreeView(QWidget *parent) : QTreeView(parent), - _sorted_tree_model(0), - _element_tasks(0) + m_sortedTreeModel(0), + m_elementTasks(0) { setHeaderHidden(true); setSortingEnabled(false); @@ -72,96 +71,90 @@ ModelTreeView::~ModelTreeView() { } -QModelIndex ModelTreeView::getCurrentSourceModelIndex() const +QModelIndex ModelTreeView::currentSourceModelIndex() const { - return _sorted_tree_model->mapToSource(currentIndex()); + return m_sortedTreeModel->mapToSource(currentIndex()); } -QList<QModelIndex> ModelTreeView::getSelectedSourceModelIndexes() const +QList<QModelIndex> ModelTreeView::selectedSourceModelIndexes() const { QList<QModelIndex> indexes; if (selectionModel()) { - foreach (const QModelIndex &index, selectionModel()->selection().indexes()) { - indexes.append(_sorted_tree_model->mapToSource(index)); - } + foreach (const QModelIndex &index, selectionModel()->selection().indexes()) + indexes.append(m_sortedTreeModel->mapToSource(index)); } return indexes; } void ModelTreeView::setTreeModel(SortedTreeModel *model) { - _sorted_tree_model = model; + m_sortedTreeModel = model; QTreeView::setModel(model); } -void ModelTreeView::setElementTasks(IElementTasks *element_tasks) +void ModelTreeView::setElementTasks(IElementTasks *elementTasks) { - _element_tasks = element_tasks; + m_elementTasks = elementTasks; } QModelIndex ModelTreeView::mapToSourceModelIndex(const QModelIndex &index) const { - return _sorted_tree_model->mapToSource(index); + return m_sortedTreeModel->mapToSource(index); } void ModelTreeView::selectFromSourceModelIndex(const QModelIndex &index) { - if (!index.isValid()) { + if (!index.isValid()) return; - } - QModelIndex sorted_index = _sorted_tree_model->mapFromSource(index); - scrollTo(sorted_index); - setCurrentIndex(sorted_index); - if (selectionModel()) { - selectionModel()->select(sorted_index, QItemSelectionModel::ClearAndSelect); - } + QModelIndex sortedIndex = m_sortedTreeModel->mapFromSource(index); + scrollTo(sortedIndex); + setCurrentIndex(sortedIndex); + if (selectionModel()) + selectionModel()->select(sortedIndex, QItemSelectionModel::ClearAndSelect); } -void ModelTreeView::startDrag(Qt::DropActions supported_actions) +void ModelTreeView::startDrag(Qt::DropActions supportedActions) { - Q_UNUSED(supported_actions); + Q_UNUSED(supportedActions); - TreeModel *tree_model = _sorted_tree_model->getTreeModel(); - QMT_CHECK(tree_model); + TreeModel *treeModel = m_sortedTreeModel->treeModel(); + QMT_CHECK(treeModel); - QByteArray drag_data; - QDataStream data_stream(&drag_data, QIODevice::WriteOnly); + QByteArray dragData; + QDataStream dataStream(&dragData, QIODevice::WriteOnly); - QIcon drag_icon; + QIcon dragIcon; QModelIndexList indexes; - if (selectionModel()) { - indexes = getSelectedSourceModelIndexes(); - } else if (getCurrentSourceModelIndex().isValid()) { - indexes.append(getCurrentSourceModelIndex()); - } + if (selectionModel()) + indexes = selectedSourceModelIndexes(); + else if (currentSourceModelIndex().isValid()) + indexes.append(currentSourceModelIndex()); if (!indexes.isEmpty()) { foreach (const QModelIndex &index, indexes) { - MElement *element = tree_model->getElement(index); + MElement *element = treeModel->element(index); if (element) { - data_stream << element->getUid().toString(); - if (drag_icon.isNull()) { - QIcon icon = tree_model->getIcon(index); - if (!icon.isNull()) { - drag_icon = icon; - } + dataStream << element->uid().toString(); + if (dragIcon.isNull()) { + QIcon icon = treeModel->icon(index); + if (!icon.isNull()) + dragIcon = icon; } } } } - QMimeData *mime_data = new QMimeData; - mime_data->setData(QStringLiteral("text/model-elements"), drag_data); + QMimeData *mimeData = new QMimeData; + mimeData->setData(QStringLiteral("text/model-elements"), dragData); - if (drag_icon.isNull()) { - drag_icon = QIcon(QStringLiteral(":/modelinglib/48x48/generic.png")); - } + if (dragIcon.isNull()) + dragIcon = QIcon(QStringLiteral(":/modelinglib/48x48/generic.png")); QPixmap pixmap(48, 48); - pixmap = drag_icon.pixmap(48, 48); + pixmap = dragIcon.pixmap(48, 48); QDrag *drag = new QDrag(this); - drag->setMimeData(mime_data); + drag->setMimeData(mimeData); drag->setHotSpot(QPoint(pixmap.width()/2, pixmap.height()/2)); drag->setPixmap(pixmap); @@ -178,24 +171,23 @@ void ModelTreeView::dragMoveEvent(QDragMoveEvent *event) { QTreeView::dragMoveEvent(event); bool accept = false; - QModelIndex drop_index = indexAt(event->pos()); - QModelIndex drop_source_model_index = _sorted_tree_model->mapToSource(drop_index); - if (drop_source_model_index.isValid()) { - TreeModel *tree_model = _sorted_tree_model->getTreeModel(); - QMT_CHECK(tree_model); - MElement *model_element = tree_model->getElement(drop_source_model_index); - if (dynamic_cast<MObject*>(model_element)) { + QModelIndex dropIndex = indexAt(event->pos()); + QModelIndex dropSourceModelIndex = m_sortedTreeModel->mapToSource(dropIndex); + if (dropSourceModelIndex.isValid()) { + TreeModel *treeModel = m_sortedTreeModel->treeModel(); + QMT_CHECK(treeModel); + MElement *modelElement = treeModel->element(dropSourceModelIndex); + if (dynamic_cast<MObject*>(modelElement)) accept = true; - } - if (_auto_delay_index == drop_index) { - if (_auto_delay_start_time.elapsed() > 1000) { - setExpanded(drop_index, !isExpanded(drop_index)); - _auto_delay_start_time.start(); + if (m_autoDelayIndex == dropIndex) { + if (m_autoDelayStartTime.elapsed() > 1000) { + setExpanded(dropIndex, !isExpanded(dropIndex)); + m_autoDelayStartTime.start(); } } else { - _auto_delay_index = drop_index; - _auto_delay_start_time = QTime::currentTime(); - _auto_delay_start_time.start(); + m_autoDelayIndex = dropIndex; + m_autoDelayStartTime = QTime::currentTime(); + m_autoDelayStartTime.start(); } } event->setAccepted(accept); @@ -211,30 +203,30 @@ void ModelTreeView::dropEvent(QDropEvent *event) bool accept = false; event->setDropAction(Qt::MoveAction); if (event->mimeData()->hasFormat(QStringLiteral("text/model-elements"))) { - QModelIndex drop_index = indexAt(event->pos()); - QModelIndex drop_source_model_index = _sorted_tree_model->mapToSource(drop_index); - if (drop_source_model_index.isValid()) { - TreeModel *tree_model = _sorted_tree_model->getTreeModel(); - QMT_CHECK(tree_model); - MElement *target_model_element = tree_model->getElement(drop_source_model_index); - if (MObject *target_model_object = dynamic_cast<MObject *>(target_model_element)) { - QDataStream data_stream(event->mimeData()->data(QStringLiteral("text/model-elements"))); - while (data_stream.status() == QDataStream::Ok) { + QModelIndex dropIndex = indexAt(event->pos()); + QModelIndex dropSourceModelIndex = m_sortedTreeModel->mapToSource(dropIndex); + if (dropSourceModelIndex.isValid()) { + TreeModel *treeModel = m_sortedTreeModel->treeModel(); + QMT_CHECK(treeModel); + MElement *targetModelElement = treeModel->element(dropSourceModelIndex); + if (MObject *targetModelObject = dynamic_cast<MObject *>(targetModelElement)) { + QDataStream dataStream(event->mimeData()->data(QStringLiteral("text/model-elements"))); + while (dataStream.status() == QDataStream::Ok) { QString key; - data_stream >> key; + dataStream >> key; if (!key.isEmpty()) { - MElement *model_element = tree_model->getModelController()->findElement(Uid(key)); - if (model_element) { - if (MObject *model_object = dynamic_cast<MObject*>(model_element)) { - if (MPackage *target_model_package = dynamic_cast<MPackage*>(target_model_object)) { - tree_model->getModelController()->moveObject(target_model_package, model_object); - } else if ((target_model_package = dynamic_cast<MPackage *>(target_model_object->getOwner()))) { - tree_model->getModelController()->moveObject(target_model_package, model_object); + MElement *modelElement = treeModel->modelController()->findElement(Uid(key)); + if (modelElement) { + if (MObject *modelObject = dynamic_cast<MObject*>(modelElement)) { + if (MPackage *targetModelPackage = dynamic_cast<MPackage *>(targetModelObject)) { + treeModel->modelController()->moveObject(targetModelPackage, modelObject); + } else if ((targetModelPackage = dynamic_cast<MPackage *>(targetModelObject->owner()))) { + treeModel->modelController()->moveObject(targetModelPackage, modelObject); } else { QMT_CHECK(false); } - } else if (MRelation *model_relation = dynamic_cast<MRelation *>(model_element)) { - tree_model->getModelController()->moveRelation(target_model_object, model_relation); + } else if (MRelation *modelRelation = dynamic_cast<MRelation *>(modelElement)) { + treeModel->modelController()->moveRelation(targetModelObject, modelRelation); } } } @@ -255,45 +247,45 @@ void ModelTreeView::focusInEvent(QFocusEvent *event) void ModelTreeView::contextMenuEvent(QContextMenuEvent *event) { QModelIndex index = indexAt(event->pos()); - QModelIndex source_model_index = _sorted_tree_model->mapToSource(index); - if (source_model_index.isValid()) { - TreeModel *tree_model = _sorted_tree_model->getTreeModel(); - QMT_CHECK(tree_model); - MElement *melement = tree_model->getElement(source_model_index); + QModelIndex sourceModelIndex = m_sortedTreeModel->mapToSource(index); + if (sourceModelIndex.isValid()) { + TreeModel *treeModel = m_sortedTreeModel->treeModel(); + QMT_CHECK(treeModel); + MElement *melement = treeModel->element(sourceModelIndex); QMT_CHECK(melement); QMenu menu; - bool add_separator = false; - if (_element_tasks->hasClassDefinition(melement)) { + bool addSeparator = false; + if (m_elementTasks->hasClassDefinition(melement)) { menu.addAction(new ContextMenuAction(tr("Show Definition"), QStringLiteral("showDefinition"), &menu)); - add_separator = true; + addSeparator = true; } - if (_element_tasks->hasDiagram(melement)) { + if (m_elementTasks->hasDiagram(melement)) { menu.addAction(new ContextMenuAction(tr("Open Diagram"), QStringLiteral("openDiagram"), &menu)); - add_separator = true; + addSeparator = true; } - if (melement->getOwner()) { - if (add_separator) { + if (melement->owner()) { + if (addSeparator) menu.addSeparator(); - } - menu.addAction(new ContextMenuAction(tr("Delete"), QStringLiteral("delete"), QKeySequence(Qt::CTRL + Qt::Key_D), &menu)); + menu.addAction(new ContextMenuAction(tr("Delete"), QStringLiteral("delete"), + QKeySequence(Qt::CTRL + Qt::Key_D), &menu)); } - QAction *selected_action = menu.exec(event->globalPos()); - if (selected_action) { - ContextMenuAction *action = dynamic_cast<ContextMenuAction *>(selected_action); + QAction *selectedAction = menu.exec(event->globalPos()); + if (selectedAction) { + ContextMenuAction *action = dynamic_cast<ContextMenuAction *>(selectedAction); QMT_CHECK(action); - if (action->getId() == QStringLiteral("showDefinition")) { - _element_tasks->openClassDefinition(melement); - } else if (action->getId() == QStringLiteral("openDiagram")) { - _element_tasks->openDiagram(melement); - } else if (action->getId() == QStringLiteral("delete")) { + if (action->id() == QStringLiteral("showDefinition")) { + m_elementTasks->openClassDefinition(melement); + } else if (action->id() == QStringLiteral("openDiagram")) { + m_elementTasks->openDiagram(melement); + } else if (action->id() == QStringLiteral("delete")) { MSelection selection; - selection.append(melement->getUid(), melement->getOwner()->getUid()); - _sorted_tree_model->getTreeModel()->getModelController()->deleteElements(selection); + selection.append(melement->uid(), melement->owner()->uid()); + m_sortedTreeModel->treeModel()->modelController()->deleteElements(selection); } } event->accept(); } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.h b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.h index cf2330bc2b..39e30b7719 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.h +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/modeltreeview.h @@ -37,74 +37,48 @@ #include <QTime> - namespace qmt { class SortedTreeModel; class IElementTasks; - -class QMT_EXPORT ModelTreeView : - public QTreeView, - public ModelTreeViewInterface +class QMT_EXPORT ModelTreeView : public QTreeView, public ModelTreeViewInterface { Q_OBJECT public: - explicit ModelTreeView(QWidget *parent = 0); - ~ModelTreeView(); signals: - void treeViewActivated(); public: - - QModelIndex getCurrentSourceModelIndex() const; - - QList<QModelIndex> getSelectedSourceModelIndexes() const; - -public: + QModelIndex currentSourceModelIndex() const; + QList<QModelIndex> selectedSourceModelIndexes() const; void setTreeModel(SortedTreeModel *model); - - void setElementTasks(IElementTasks *element_tasks); - -public: + void setElementTasks(IElementTasks *elementTasks); QModelIndex mapToSourceModelIndex(const QModelIndex &index) const; - void selectFromSourceModelIndex(const QModelIndex &index); protected: - - void startDrag(Qt::DropActions supported_actions); - + void startDrag(Qt::DropActions supportedActions); void dragEnterEvent(QDragEnterEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - void dragLeaveEvent(QDragLeaveEvent *event); - void dropEvent(QDropEvent *event); - void focusInEvent(QFocusEvent *event); - void contextMenuEvent(QContextMenuEvent *event); private: - - SortedTreeModel *_sorted_tree_model; - - IElementTasks *_element_tasks; - - QModelIndex _auto_delay_index; - - QTime _auto_delay_start_time; + SortedTreeModel *m_sortedTreeModel; + IElementTasks *m_elementTasks; + QModelIndex m_autoDelayIndex; + QTime m_autoDelayStartTime; }; -} +} // namespace qmt #endif // QMT_MODELTREEVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.cpp b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.cpp index c04b8e7f40..c030dcb7c5 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.cpp @@ -39,9 +39,9 @@ namespace qmt { PaletteBox::PaletteBox(QWidget *parent) : QWidget(parent), - _brushes(6), - _pens(6), - _current_index(-1) + m_brushes(6), + m_pens(6), + m_currentIndex(-1) { setFocusPolicy(Qt::StrongFocus); } @@ -50,32 +50,32 @@ PaletteBox::~PaletteBox() { } -QBrush PaletteBox::getBrush(int index) const +QBrush PaletteBox::brush(int index) const { - QMT_CHECK(index >= 0 && index <= _brushes.size()); - return _brushes.at(index); + QMT_CHECK(index >= 0 && index <= m_brushes.size()); + return m_brushes.at(index); } void PaletteBox::setBrush(int index, const QBrush &brush) { - QMT_CHECK(index >= 0 && index <= _brushes.size()); - if (_brushes[index] != brush) { - _brushes[index] = brush; + QMT_CHECK(index >= 0 && index <= m_brushes.size()); + if (m_brushes[index] != brush) { + m_brushes[index] = brush; update(); } } -QPen PaletteBox::getLinePen(int index) const +QPen PaletteBox::linePen(int index) const { - QMT_CHECK(index >= 0 && index <= _pens.size()); - return _pens.at(index); + QMT_CHECK(index >= 0 && index <= m_pens.size()); + return m_pens.at(index); } void PaletteBox::setLinePen(int index, const QPen &pen) { - QMT_CHECK(index >= 0 && index <= _pens.size()); - if (_pens[index] != pen) { - _pens[index] = pen; + QMT_CHECK(index >= 0 && index <= m_pens.size()); + if (m_pens[index] != pen) { + m_pens[index] = pen; update(); } } @@ -87,12 +87,11 @@ void PaletteBox::clear() void PaletteBox::setCurrentIndex(int index) { - if (_current_index != index) { - if (index >= 0 && index < _brushes.size()) { - _current_index = index; - } else { - _current_index = -1; - } + if (m_currentIndex != index) { + if (index >= 0 && index < m_brushes.size()) + m_currentIndex = index; + else + m_currentIndex = -1; update(); } } @@ -102,13 +101,13 @@ void PaletteBox::paintEvent(QPaintEvent *event) Q_UNUSED(event); QPainter painter(this); - qreal w = (qreal) width() / (qreal) _brushes.size(); + qreal w = static_cast<qreal>(width()) / static_cast<qreal>(m_brushes.size()); qreal h = height(); - for (int i = 0; i < _brushes.size(); ++i) { - QBrush brush = _brushes.at(i); - if (i == _current_index) { + for (int i = 0; i < m_brushes.size(); ++i) { + QBrush brush = m_brushes.at(i); + if (i == m_currentIndex) { painter.fillRect(QRectF(i * w, 0, w, h), brush); - QPen pen = _pens.at(i); + QPen pen = m_pens.at(i); pen.setWidth(2); painter.setPen(pen); painter.drawRect(QRectF(i * w + 1, 1, w - 2, h - 2)); @@ -128,40 +127,36 @@ void PaletteBox::paintEvent(QPaintEvent *event) void PaletteBox::mousePressEvent(QMouseEvent *event) { - qreal w = (qreal) width() / (qreal) _brushes.size(); + qreal w = static_cast<qreal>(width()) / static_cast<qreal>(m_brushes.size()); - int i = (int) (event->x() / w); - QMT_CHECK(i >= 0 && i < _brushes.size()); + int i = static_cast<int>((event->x() / w)); + QMT_CHECK(i >= 0 && i < m_brushes.size()); setCurrentIndex(i); - if (_current_index >= 0 && _current_index < _brushes.size()) { - emit activated(_current_index); - } + if (m_currentIndex >= 0 && m_currentIndex < m_brushes.size()) + emit activated(m_currentIndex); } void PaletteBox::keyPressEvent(QKeyEvent *event) { - bool is_known_key = false; + bool isKnownKey = false; switch (event->key()) { case Qt::Key_Left: - if (_current_index <= 0) { - setCurrentIndex((_brushes.size() - 1)); - } else { - setCurrentIndex(_current_index - 1); - } - is_known_key = true; + if (m_currentIndex <= 0) + setCurrentIndex((m_brushes.size() - 1)); + else + setCurrentIndex(m_currentIndex - 1); + isKnownKey = true; break; case Qt::Key_Right: - if (_current_index < 0 || _current_index >= _brushes.size() - 1) { + if (m_currentIndex < 0 || m_currentIndex >= m_brushes.size() - 1) setCurrentIndex(0); - } else { - setCurrentIndex(_current_index + 1); - } - is_known_key = true; + else + setCurrentIndex(m_currentIndex + 1); + isKnownKey = true; break; } - if (is_known_key && _current_index >= 0 && _current_index < _brushes.size()) { - emit activated(_current_index); - } + if (isKnownKey && m_currentIndex >= 0 && m_currentIndex < m_brushes.size()) + emit activated(m_currentIndex); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.h b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.h index 7badacfc83..211a9ad106 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.h +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/palettebox.h @@ -37,7 +37,6 @@ #include <QColor> #include <QVector> - namespace qmt { class QMT_EXPORT PaletteBox : public QWidget @@ -46,46 +45,31 @@ class QMT_EXPORT PaletteBox : public QWidget public: explicit PaletteBox(QWidget *parent = 0); - ~PaletteBox(); signals: - void activated(int index); public: - - QBrush getBrush(int index) const; - + QBrush brush(int index) const; void setBrush(int index, const QBrush &brush); - - QPen getLinePen(int index) const; - + QPen linePen(int index) const; void setLinePen(int index, const QPen &pen); - - int currentIndex() const { return _current_index; } + int currentIndex() const { return m_currentIndex; } public slots: - void clear(); - void setCurrentIndex(int index); protected: - virtual void paintEvent(QPaintEvent *event); - virtual void mousePressEvent(QMouseEvent *event); - virtual void keyPressEvent(QKeyEvent *event); private: - - QVector<QBrush> _brushes; - - QVector<QPen> _pens; - - int _current_index; + QVector<QBrush> m_brushes; + QVector<QPen> m_pens; + int m_currentIndex; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.cpp b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.cpp index cb637b4b36..02f072d7ba 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.cpp @@ -40,19 +40,16 @@ #include "qmt/diagram/delement.h" -#include <qdebug.h> - - namespace qmt { PropertiesView::PropertiesView(QObject *parent) : QObject(parent), - _model_controller(0), - _diagram_controller(0), - _stereotype_controller(0), - _style_controller(0), - _selected_diagram(0), - _widget(0) + m_modelController(0), + m_diagramController(0), + m_stereotypeController(0), + m_styleController(0), + m_selectedDiagram(0), + m_widget(0) { } @@ -60,123 +57,146 @@ PropertiesView::~PropertiesView() { } -void PropertiesView::setModelController(ModelController *model_controller) -{ - if (_model_controller != model_controller) { - if (_model_controller) { - disconnect(_model_controller, 0, this, 0); - } - _model_controller = model_controller; - if (_model_controller) { - connect(_model_controller, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); - connect(_model_controller, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); - - connect(_model_controller, SIGNAL(beginInsertObject(int,const MObject*)), this, SLOT(onBeginInsertObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endInsertObject(int,const MObject*)), this, SLOT(onEndInsertObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginUpdateObject(int,const MObject*)), this, SLOT(onBeginUpdateObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endUpdateObject(int,const MObject*)), this, SLOT(onEndUpdateObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginRemoveObject(int,const MObject*)), this, SLOT(onBeginRemoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endRemoveObject(int,const MObject*)), this, SLOT(onEndRemoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(beginMoveObject(int,const MObject*)), this, SLOT(onBeginMoveObject(int,const MObject*))); - connect(_model_controller, SIGNAL(endMoveObject(int,const MObject*)), this, SLOT(onEndMoveObject(int,const MObject*))); - - connect(_model_controller, SIGNAL(beginInsertRelation(int,const MObject*)), this, SLOT(onBeginInsertRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endInsertRelation(int,const MObject*)), this, SLOT(onEndInsertRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginUpdateRelation(int,const MObject*)), this, SLOT(onBeginUpdateRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endUpdateRelation(int,const MObject*)), this, SLOT(onEndUpdateRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginRemoveRelation(int,const MObject*)), this, SLOT(onBeginRemoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endRemoveRelation(int,const MObject*)), this, SLOT(onEndRemoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(beginMoveRelation(int,const MObject*)), this, SLOT(onBeginMoveRelation(int,const MObject*))); - connect(_model_controller, SIGNAL(endMoveRelation(int,const MObject*)), this, SLOT(onEndMoveRelation(int,const MObject*))); - - connect(_model_controller, SIGNAL(relationEndChanged(MRelation*,MObject*)), this, SLOT(onRelationEndChanged(MRelation*,MObject*))); +void PropertiesView::setModelController(ModelController *modelController) +{ + if (m_modelController != modelController) { + if (m_modelController) + disconnect(m_modelController, 0, this, 0); + m_modelController = modelController; + if (m_modelController) { + connect(m_modelController, SIGNAL(beginResetModel()), this, SLOT(onBeginResetModel())); + connect(m_modelController, SIGNAL(endResetModel()), this, SLOT(onEndResetModel())); + + connect(m_modelController, SIGNAL(beginInsertObject(int,const MObject*)), + this, SLOT(onBeginInsertObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endInsertObject(int,const MObject*)), + this, SLOT(onEndInsertObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginUpdateObject(int,const MObject*)), + this, SLOT(onBeginUpdateObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endUpdateObject(int,const MObject*)), + this, SLOT(onEndUpdateObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginRemoveObject(int,const MObject*)), + this, SLOT(onBeginRemoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endRemoveObject(int,const MObject*)), + this, SLOT(onEndRemoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(beginMoveObject(int,const MObject*)), + this, SLOT(onBeginMoveObject(int,const MObject*))); + connect(m_modelController, SIGNAL(endMoveObject(int,const MObject*)), + this, SLOT(onEndMoveObject(int,const MObject*))); + + connect(m_modelController, SIGNAL(beginInsertRelation(int,const MObject*)), + this, SLOT(onBeginInsertRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endInsertRelation(int,const MObject*)), + this, SLOT(onEndInsertRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginUpdateRelation(int,const MObject*)), + this, SLOT(onBeginUpdateRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endUpdateRelation(int,const MObject*)), + this, SLOT(onEndUpdateRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginRemoveRelation(int,const MObject*)), + this, SLOT(onBeginRemoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endRemoveRelation(int,const MObject*)), + this, SLOT(onEndRemoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(beginMoveRelation(int,const MObject*)), + this, SLOT(onBeginMoveRelation(int,const MObject*))); + connect(m_modelController, SIGNAL(endMoveRelation(int,const MObject*)), + this, SLOT(onEndMoveRelation(int,const MObject*))); + + connect(m_modelController, SIGNAL(relationEndChanged(MRelation*,MObject*)), + this, SLOT(onRelationEndChanged(MRelation*,MObject*))); } } } -void PropertiesView::setDiagramController(DiagramController *diagram_controller) +void PropertiesView::setDiagramController(DiagramController *diagramController) { - if (_diagram_controller != diagram_controller) { - if (_diagram_controller) { - disconnect(_diagram_controller, 0, this, 0); - _diagram_controller = 0; + if (m_diagramController != diagramController) { + if (m_diagramController) { + disconnect(m_diagramController, 0, this, 0); + m_diagramController = 0; } - _diagram_controller = diagram_controller; - if (diagram_controller) { - connect(_diagram_controller, SIGNAL(beginResetAllDiagrams()), this, SLOT(onBeginResetAllDiagrams())); - connect(_diagram_controller, SIGNAL(endResetAllDiagrams()), this, SLOT(onEndResetAllDiagrams())); - - connect(_diagram_controller, SIGNAL(beginResetDiagram(const MDiagram*)), this, SLOT(onBeginResetDiagram(const MDiagram*))); - connect(_diagram_controller, SIGNAL(endResetDiagram(const MDiagram*)), this, SLOT(onEndResetDiagram(const MDiagram*))); - - connect(_diagram_controller, SIGNAL(beginUpdateElement(int,const MDiagram*)), this, SLOT(onBeginUpdateElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endUpdateElement(int,const MDiagram*)), this, SLOT(onEndUpdateElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(beginInsertElement(int,const MDiagram*)), this, SLOT(onBeginInsertElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endInsertElement(int,const MDiagram*)), this, SLOT(onEndInsertElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(beginRemoveElement(int,const MDiagram*)), this, SLOT(onBeginRemoveElement(int,const MDiagram*))); - connect(_diagram_controller, SIGNAL(endRemoveElement(int,const MDiagram*)), this, SLOT(onEndRemoveElement(int,const MDiagram*))); + m_diagramController = diagramController; + if (diagramController) { + connect(m_diagramController, SIGNAL(beginResetAllDiagrams()), this, SLOT(onBeginResetAllDiagrams())); + connect(m_diagramController, SIGNAL(endResetAllDiagrams()), this, SLOT(onEndResetAllDiagrams())); + + connect(m_diagramController, SIGNAL(beginResetDiagram(const MDiagram*)), + this, SLOT(onBeginResetDiagram(const MDiagram*))); + connect(m_diagramController, SIGNAL(endResetDiagram(const MDiagram*)), + this, SLOT(onEndResetDiagram(const MDiagram*))); + + connect(m_diagramController, SIGNAL(beginUpdateElement(int,const MDiagram*)), + this, SLOT(onBeginUpdateElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endUpdateElement(int,const MDiagram*)), + this, SLOT(onEndUpdateElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(beginInsertElement(int,const MDiagram*)), + this, SLOT(onBeginInsertElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endInsertElement(int,const MDiagram*)), + this, SLOT(onEndInsertElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(beginRemoveElement(int,const MDiagram*)), + this, SLOT(onBeginRemoveElement(int,const MDiagram*))); + connect(m_diagramController, SIGNAL(endRemoveElement(int,const MDiagram*)), + this, SLOT(onEndRemoveElement(int,const MDiagram*))); } } } -void PropertiesView::setStereotypeController(StereotypeController *stereotype_controller) +void PropertiesView::setStereotypeController(StereotypeController *stereotypeController) { - _stereotype_controller = stereotype_controller; + m_stereotypeController = stereotypeController; } -void PropertiesView::setStyleController(StyleController *style_controller) +void PropertiesView::setStyleController(StyleController *styleController) { - _style_controller = style_controller; + m_styleController = styleController; } -void PropertiesView::setSelectedModelElements(const QList<MElement *> &model_elements) +void PropertiesView::setSelectedModelElements(const QList<MElement *> &modelElements) { - QMT_CHECK(model_elements.size() > 0); + QMT_CHECK(modelElements.size() > 0); - if (_selected_model_elements != model_elements) { - _selected_model_elements = model_elements; - _selected_diagram_elements.clear(); - _selected_diagram = 0; - _mview.reset(new MView(this)); - _mview->update(_selected_model_elements); - _widget = _mview->getTopLevelWidget(); + if (m_selectedModelElements != modelElements) { + m_selectedModelElements = modelElements; + m_selectedDiagramElements.clear(); + m_selectedDiagram = 0; + m_mview.reset(new MView(this)); + m_mview->update(m_selectedModelElements); + m_widget = m_mview->topLevelWidget(); } } -void PropertiesView::setSelectedDiagramElements(const QList<DElement *> &diagram_elements, MDiagram *diagram) +void PropertiesView::setSelectedDiagramElements(const QList<DElement *> &diagramElements, MDiagram *diagram) { - QMT_CHECK(diagram_elements.size() > 0); + QMT_CHECK(diagramElements.size() > 0); QMT_CHECK(diagram); - if (_selected_diagram_elements != diagram_elements || _selected_diagram != diagram) { - _selected_diagram_elements = diagram_elements; - _selected_diagram = diagram; - _selected_model_elements.clear(); - _mview.reset(new MView(this)); - _mview->update(_selected_diagram_elements, _selected_diagram); - _widget = _mview->getTopLevelWidget(); + if (m_selectedDiagramElements != diagramElements || m_selectedDiagram != diagram) { + m_selectedDiagramElements = diagramElements; + m_selectedDiagram = diagram; + m_selectedModelElements.clear(); + m_mview.reset(new MView(this)); + m_mview->update(m_selectedDiagramElements, m_selectedDiagram); + m_widget = m_mview->topLevelWidget(); } } void PropertiesView::clearSelection() { - _selected_model_elements.clear(); - _selected_diagram_elements.clear(); - _selected_diagram = 0; - _mview.reset(); - _widget = 0; + m_selectedModelElements.clear(); + m_selectedDiagramElements.clear(); + m_selectedDiagram = 0; + m_mview.reset(); + m_widget = 0; } -QWidget *PropertiesView::getWidget() const +QWidget *PropertiesView::widget() const { - return _widget; + return m_widget; } void PropertiesView::editSelectedElement() { - if (_selected_model_elements.size() == 1 || (_selected_diagram_elements.size() == 1 && _selected_diagram)) { - _mview->edit(); - } + if (m_selectedModelElements.size() == 1 || (m_selectedDiagramElements.size() == 1 && m_selectedDiagram)) + m_mview->edit(); } void PropertiesView::onBeginResetModel() @@ -196,10 +216,9 @@ void PropertiesView::onBeginUpdateObject(int row, const MObject *parent) void PropertiesView::onEndUpdateObject(int row, const MObject *parent) { - MObject *mobject = _model_controller->getObject(row, parent); - if (mobject && _selected_model_elements.contains(mobject)) { - _mview->update(_selected_model_elements); - } + MObject *mobject = m_modelController->object(row, parent); + if (mobject && m_selectedModelElements.contains(mobject)) + m_mview->update(m_selectedModelElements); } void PropertiesView::onBeginInsertObject(int row, const MObject *parent) @@ -216,10 +235,9 @@ void PropertiesView::onEndInsertObject(int row, const MObject *parent) void PropertiesView::onBeginRemoveObject(int row, const MObject *parent) { - MObject *mobject = _model_controller->getObject(row, parent); - if (mobject && _selected_model_elements.contains(mobject)) { + MObject *mobject = m_modelController->object(row, parent); + if (mobject && m_selectedModelElements.contains(mobject)) clearSelection(); - } } void PropertiesView::onEndRemoveObject(int row, const MObject *parent) @@ -228,18 +246,17 @@ void PropertiesView::onEndRemoveObject(int row, const MObject *parent) Q_UNUSED(parent); } -void PropertiesView::onBeginMoveObject(int former_row, const MObject *former_owner) +void PropertiesView::onBeginMoveObject(int formerRow, const MObject *formerOwner) { - Q_UNUSED(former_row); - Q_UNUSED(former_owner); + Q_UNUSED(formerRow); + Q_UNUSED(formerOwner); } void PropertiesView::onEndMoveObject(int row, const MObject *owner) { - MObject *mobject = _model_controller->getObject(row, owner); - if (mobject && _selected_model_elements.contains(mobject)) { - _mview->update(_selected_model_elements); - } + MObject *mobject = m_modelController->object(row, owner); + if (mobject && m_selectedModelElements.contains(mobject)) + m_mview->update(m_selectedModelElements); } void PropertiesView::onBeginUpdateRelation(int row, const MObject *parent) @@ -250,10 +267,9 @@ void PropertiesView::onBeginUpdateRelation(int row, const MObject *parent) void PropertiesView::onEndUpdateRelation(int row, const MObject *parent) { - MRelation *mrelation = parent->getRelations().at(row); - if (mrelation && _selected_model_elements.contains(mrelation)) { - _mview->update(_selected_model_elements); - } + MRelation *mrelation = parent->relations().at(row); + if (mrelation && m_selectedModelElements.contains(mrelation)) + m_mview->update(m_selectedModelElements); } void PropertiesView::onBeginInsertRelation(int row, const MObject *parent) @@ -270,10 +286,9 @@ void PropertiesView::onEndInsertRelation(int row, const MObject *parent) void PropertiesView::onBeginRemoveRelation(int row, const MObject *parent) { - MRelation *mrelation = parent->getRelations().at(row); - if (mrelation && _selected_model_elements.contains(mrelation)) { + MRelation *mrelation = parent->relations().at(row); + if (mrelation && m_selectedModelElements.contains(mrelation)) clearSelection(); - } } void PropertiesView::onEndRemoveRelation(int row, const MObject *parent) @@ -282,26 +297,24 @@ void PropertiesView::onEndRemoveRelation(int row, const MObject *parent) Q_UNUSED(parent); } -void PropertiesView::onBeginMoveRelation(int former_row, const MObject *former_owner) +void PropertiesView::onBeginMoveRelation(int formerRow, const MObject *formerOwner) { - Q_UNUSED(former_row); - Q_UNUSED(former_owner); + Q_UNUSED(formerRow); + Q_UNUSED(formerOwner); } void PropertiesView::onEndMoveRelation(int row, const MObject *owner) { - MRelation *mrelation = owner->getRelations().at(row); - if (mrelation && _selected_model_elements.contains(mrelation)) { - _mview->update(_selected_model_elements); - } + MRelation *mrelation = owner->relations().at(row); + if (mrelation && m_selectedModelElements.contains(mrelation)) + m_mview->update(m_selectedModelElements); } -void PropertiesView::onRelationEndChanged(MRelation *relation, MObject *end_object) +void PropertiesView::onRelationEndChanged(MRelation *relation, MObject *endObject) { - Q_UNUSED(end_object); - if (relation && _selected_model_elements.contains(relation)) { - _mview->update(_selected_model_elements); - } + Q_UNUSED(endObject); + if (relation && m_selectedModelElements.contains(relation)) + m_mview->update(m_selectedModelElements); } void PropertiesView::onBeginResetAllDiagrams() @@ -320,9 +333,8 @@ void PropertiesView::onBeginResetDiagram(const MDiagram *diagram) void PropertiesView::onEndResetDiagram(const MDiagram *diagram) { - if (diagram == _selected_diagram && _selected_diagram_elements.size() > 0) { - _mview->update(_selected_diagram_elements, _selected_diagram); - } + if (diagram == m_selectedDiagram && m_selectedDiagramElements.size() > 0) + m_mview->update(m_selectedDiagramElements, m_selectedDiagram); } void PropertiesView::onBeginUpdateElement(int row, const MDiagram *diagram) @@ -333,11 +345,10 @@ void PropertiesView::onBeginUpdateElement(int row, const MDiagram *diagram) void PropertiesView::onEndUpdateElement(int row, const MDiagram *diagram) { - if (diagram == _selected_diagram) { - DElement *delement = diagram->getDiagramElements().at(row); - if (_selected_diagram_elements.contains(delement)) { - _mview->update(_selected_diagram_elements, _selected_diagram); - } + if (diagram == m_selectedDiagram) { + DElement *delement = diagram->diagramElements().at(row); + if (m_selectedDiagramElements.contains(delement)) + m_mview->update(m_selectedDiagramElements, m_selectedDiagram); } } @@ -355,11 +366,10 @@ void PropertiesView::onEndInsertElement(int row, const MDiagram *diagram) void PropertiesView::onBeginRemoveElement(int row, const MDiagram *diagram) { - if (diagram == _selected_diagram) { - DElement *delement = diagram->getDiagramElements().at(row); - if (_selected_diagram_elements.contains(delement)) { + if (diagram == m_selectedDiagram) { + DElement *delement = diagram->diagramElements().at(row); + if (m_selectedDiagramElements.contains(delement)) clearSelection(); - } } } @@ -369,48 +379,48 @@ void PropertiesView::onEndRemoveElement(int row, const MDiagram *diagram) Q_UNUSED(diagram); } -void PropertiesView::beginUpdate(MElement *model_element) +void PropertiesView::beginUpdate(MElement *modelElement) { - QMT_CHECK(model_element); + QMT_CHECK(modelElement); - if (MObject *object = dynamic_cast<MObject *>(model_element)) { - _model_controller->startUpdateObject(object); - } else if (MRelation *relation = dynamic_cast<MRelation *>(model_element)) { - _model_controller->startUpdateRelation(relation); + if (MObject *object = dynamic_cast<MObject *>(modelElement)) { + m_modelController->startUpdateObject(object); + } else if (MRelation *relation = dynamic_cast<MRelation *>(modelElement)) { + m_modelController->startUpdateRelation(relation); } else { QMT_CHECK(false); } } -void PropertiesView::endUpdate(MElement *model_element, bool cancelled) +void PropertiesView::endUpdate(MElement *modelElement, bool cancelled) { - QMT_CHECK(model_element); + QMT_CHECK(modelElement); - if (MObject *object = dynamic_cast<MObject *>(model_element)) { - _model_controller->finishUpdateObject(object, cancelled); - } else if (MRelation *relation = dynamic_cast<MRelation *>(model_element)) { - _model_controller->finishUpdateRelation(relation, cancelled); + if (MObject *object = dynamic_cast<MObject *>(modelElement)) { + m_modelController->finishUpdateObject(object, cancelled); + } else if (MRelation *relation = dynamic_cast<MRelation *>(modelElement)) { + m_modelController->finishUpdateRelation(relation, cancelled); } else { QMT_CHECK(false); } } -void PropertiesView::beginUpdate(DElement *diagram_element) +void PropertiesView::beginUpdate(DElement *diagramElement) { - QMT_CHECK(diagram_element); - QMT_CHECK(_selected_diagram != 0); - QMT_CHECK(_diagram_controller->findElement(diagram_element->getUid(), _selected_diagram) == diagram_element); + QMT_CHECK(diagramElement); + QMT_CHECK(m_selectedDiagram != 0); + QMT_CHECK(m_diagramController->findElement(diagramElement->uid(), m_selectedDiagram) == diagramElement); - _diagram_controller->startUpdateElement(diagram_element, _selected_diagram, DiagramController::UPDATE_MINOR); + m_diagramController->startUpdateElement(diagramElement, m_selectedDiagram, DiagramController::UpdateMinor); } -void PropertiesView::endUpdate(DElement *diagram_element, bool cancelled) +void PropertiesView::endUpdate(DElement *diagramElement, bool cancelled) { - QMT_CHECK(diagram_element); - QMT_CHECK(_selected_diagram != 0); - QMT_CHECK(_diagram_controller->findElement(diagram_element->getUid(), _selected_diagram) == diagram_element); + QMT_CHECK(diagramElement); + QMT_CHECK(m_selectedDiagram != 0); + QMT_CHECK(m_diagramController->findElement(diagramElement->uid(), m_selectedDiagram) == diagramElement); - _diagram_controller->finishUpdateElement(diagram_element, _selected_diagram, cancelled); + m_diagramController->finishUpdateElement(diagramElement, m_selectedDiagram, cancelled); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.h b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.h index 617ad8e97c..788f693825 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.h +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesview.h @@ -41,7 +41,6 @@ QT_BEGIN_NAMESPACE class QWidget; QT_END_NAMESPACE - namespace qmt { class ModelController; @@ -54,153 +53,85 @@ class DElement; class StereotypeController; class StyleController; - -class QMT_EXPORT PropertiesView : - public QObject +class QMT_EXPORT PropertiesView : public QObject { Q_OBJECT - class MView; public: - explicit PropertiesView(QObject *parent = 0); - ~PropertiesView(); -signals: - -public: - - ModelController *getModelController() const { return _model_controller; } - - void setModelController(ModelController *model_controller); - - DiagramController *getDiagramController() const { return _diagram_controller; } - - void setDiagramController(DiagramController *diagram_controller); - - StereotypeController *getStereotypeController() const { return _stereotype_controller; } - - void setStereotypeController(StereotypeController *stereotype_controller); - - StyleController *getStyleController() const { return _style_controller; } - - void setStyleController(StyleController *style_controller); - -public: - - QList<MElement *> getSelectedModelElements() const { return _selected_model_elements; } - - void setSelectedModelElements(const QList<MElement *> &model_elements); - - QList<DElement *> getSelectedDiagramElements() const { return _selected_diagram_elements; } - - MDiagram *getSelectedDiagram() const { return _selected_diagram; } - - void setSelectedDiagramElements(const QList<DElement *> &diagram_elements, MDiagram *diagram); - + ModelController *modelController() const { return m_modelController; } + void setModelController(ModelController *modelController); + DiagramController *diagramController() const { return m_diagramController; } + void setDiagramController(DiagramController *diagramController); + StereotypeController *stereotypeController() const { return m_stereotypeController; } + void setStereotypeController(StereotypeController *stereotypeController); + StyleController *styleController() const { return m_styleController; } + void setStyleController(StyleController *styleController); + + QList<MElement *> selectedModelElements() const { return m_selectedModelElements; } + void setSelectedModelElements(const QList<MElement *> &modelElements); + QList<DElement *> selectedDiagramElements() const { return m_selectedDiagramElements; } + MDiagram *selectedDiagram() const { return m_selectedDiagram; } + void setSelectedDiagramElements(const QList<DElement *> &diagramElements, MDiagram *diagram); void clearSelection(); - QWidget *getWidget() const; + QWidget *widget() const; public slots: - void editSelectedElement(); private slots: - void onBeginResetModel(); - void onEndResetModel(); - void onBeginUpdateObject(int row, const MObject *parent); - void onEndUpdateObject(int row, const MObject *parent); - void onBeginInsertObject(int row, const MObject *parent); - void onEndInsertObject(int row, const MObject *parent); - void onBeginRemoveObject(int row, const MObject *parent); - void onEndRemoveObject(int row, const MObject *parent); - - void onBeginMoveObject(int former_row, const MObject *former_owner); - + void onBeginMoveObject(int formerRow, const MObject *formerOwner); void onEndMoveObject(int row, const MObject *owner); - void onBeginUpdateRelation(int row, const MObject *parent); - void onEndUpdateRelation(int row, const MObject *parent); - void onBeginInsertRelation(int row, const MObject *parent); - void onEndInsertRelation(int row, const MObject *parent); - void onBeginRemoveRelation(int row, const MObject *parent); - void onEndRemoveRelation(int row, const MObject *parent); - - void onBeginMoveRelation(int former_row, const MObject *former_owner); - + void onBeginMoveRelation(int formerRow, const MObject *formerOwner); void onEndMoveRelation(int row, const MObject *owner); - - void onRelationEndChanged(MRelation *relation, MObject *end_object); - -private slots: + void onRelationEndChanged(MRelation *relation, MObject *endObject); void onBeginResetAllDiagrams(); - void onEndResetAllDiagrams(); - void onBeginResetDiagram(const MDiagram *diagram); - void onEndResetDiagram(const MDiagram *diagram); - void onBeginUpdateElement(int row, const MDiagram *diagram); - void onEndUpdateElement(int row, const MDiagram *diagram); - void onBeginInsertElement(int row, const MDiagram *diagram); - void onEndInsertElement(int row, const MDiagram *diagram); - void onBeginRemoveElement(int row, const MDiagram *diagram); - void onEndRemoveElement(int row, const MDiagram *diagram); private: - - void beginUpdate(MElement *model_element); - - void endUpdate(MElement *model_element, bool cancelled); - - void beginUpdate(DElement *diagram_element); - - void endUpdate(DElement *diagram_element, bool cancelled); - -private: - - ModelController *_model_controller; - - DiagramController *_diagram_controller; - - StereotypeController *_stereotype_controller; - - StyleController *_style_controller; - - QList<MElement *> _selected_model_elements; - - QList<DElement *> _selected_diagram_elements; - - MDiagram *_selected_diagram; - - QScopedPointer<MView> _mview; - - QWidget *_widget; + void beginUpdate(MElement *modelElement); + void endUpdate(MElement *modelElement, bool cancelled); + void beginUpdate(DElement *diagramElement); + void endUpdate(DElement *diagramElement, bool cancelled); + + ModelController *m_modelController; + DiagramController *m_diagramController; + StereotypeController *m_stereotypeController; + StyleController *m_styleController; + QList<MElement *> m_selectedModelElements; + QList<DElement *> m_selectedDiagramElements; + MDiagram *m_selectedDiagram; + QScopedPointer<MView> m_mview; + QWidget *m_widget; }; -} +} // namespace qmt #endif // QMT_PROPERTIESVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.cpp b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.cpp index 27d12fb927..e66e3582cb 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.cpp +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.cpp @@ -34,7 +34,6 @@ #include "palettebox.h" #include "qmt/model_ui/stereotypescontroller.h" - #include "qmt/model_controller/modelcontroller.h" #include "qmt/model/melement.h" @@ -66,9 +65,7 @@ // TODO move into better place #include "qmt/diagram_scene/items/stereotypedisplayvisitor.h" - #include "qmt/stereotype/stereotypecontroller.h" - #include "qmt/style/stylecontroller.h" #include "qmt/style/style.h" #include "qmt/style/objectvisuals.h" @@ -82,7 +79,6 @@ #include <QCheckBox> #include <QPainter> - //#define SHOW_DEBUG_PROPERTIES namespace qmt { @@ -90,11 +86,11 @@ namespace qmt { static int translateDirectionToIndex(MDependency::Direction direction) { switch (direction) { - case MDependency::A_TO_B: + case MDependency::AToB: return 0; - case MDependency::B_TO_A: + case MDependency::BToA: return 1; - case MDependency::BIDIRECTIONAL: + case MDependency::Bidirectional: return 2; } return 0; @@ -108,7 +104,7 @@ static bool isValidDirectionIndex(int index) static MDependency::Direction translateIndexToDirection(int index) { static const MDependency::Direction map[] = { - MDependency::A_TO_B, MDependency::B_TO_A, MDependency::BIDIRECTIONAL + MDependency::AToB, MDependency::BToA, MDependency::Bidirectional }; QMT_CHECK(isValidDirectionIndex(index)); return map[index]; @@ -117,11 +113,11 @@ static MDependency::Direction translateIndexToDirection(int index) static int translateAssociationKindToIndex(MAssociationEnd::Kind kind) { switch (kind) { - case MAssociationEnd::ASSOCIATION: + case MAssociationEnd::Association: return 0; - case MAssociationEnd::AGGREGATION: + case MAssociationEnd::Aggregation: return 1; - case MAssociationEnd::COMPOSITION: + case MAssociationEnd::Composition: return 2; } return 0; @@ -135,31 +131,31 @@ static bool isValidAssociationKindIndex(int index) static MAssociationEnd::Kind translateIndexToAssociationKind(int index) { static const MAssociationEnd::Kind map[] = { - MAssociationEnd::ASSOCIATION, MAssociationEnd::AGGREGATION, MAssociationEnd::COMPOSITION + MAssociationEnd::Association, MAssociationEnd::Aggregation, MAssociationEnd::Composition }; QMT_CHECK(isValidAssociationKindIndex(index)); return map[index]; } -static int translateVisualPrimaryRoleToIndex(DObject::VisualPrimaryRole visual_role) +static int translateVisualPrimaryRoleToIndex(DObject::VisualPrimaryRole visualRole) { - switch (visual_role) { - case DObject::PRIMARY_ROLE_NORMAL: + switch (visualRole) { + case DObject::PrimaryRoleNormal: return 0; - case DObject::PRIMARY_ROLE_CUSTOM1: + case DObject::PrimaryRoleCustom1: return 1; - case DObject::PRIMARY_ROLE_CUSTOM2: + case DObject::PrimaryRoleCustom2: return 2; - case DObject::PRIMARY_ROLE_CUSTOM3: + case DObject::PrimaryRoleCustom3: return 3; - case DObject::PRIMARY_ROLE_CUSTOM4: + case DObject::PrimaryRoleCustom4: return 4; - case DObject::PRIMARY_ROLE_CUSTOM5: + case DObject::PrimaryRoleCustom5: return 5; - case DObject::DEPRECATED_PRIMARY_ROLE_LIGHTER: - case DObject::DEPRECATED_PRIMARY_ROLE_DARKER: - case DObject::DEPRECATED_PRIMARY_ROLE_SOFTEN: - case DObject::DEPRECATED_PRIMARY_ROLE_OUTLINE: + case DObject::DeprecatedPrimaryRoleLighter: + case DObject::DeprecatedPrimaryRoleDarker: + case DObject::DeprecatedPrimaryRoleSoften: + case DObject::DeprecatedPrimaryRoleOutline: return 0; } return 0; @@ -168,26 +164,26 @@ static int translateVisualPrimaryRoleToIndex(DObject::VisualPrimaryRole visual_r static DObject::VisualPrimaryRole translateIndexToVisualPrimaryRole(int index) { static const DObject::VisualPrimaryRole map[] = { - DObject::PRIMARY_ROLE_NORMAL, - DObject::PRIMARY_ROLE_CUSTOM1, DObject::PRIMARY_ROLE_CUSTOM2, DObject::PRIMARY_ROLE_CUSTOM3, - DObject::PRIMARY_ROLE_CUSTOM4, DObject::PRIMARY_ROLE_CUSTOM5 + DObject::PrimaryRoleNormal, + DObject::PrimaryRoleCustom1, DObject::PrimaryRoleCustom2, DObject::PrimaryRoleCustom3, + DObject::PrimaryRoleCustom4, DObject::PrimaryRoleCustom5 }; QMT_CHECK(index >= 0 && index <= 5); return map[index]; } -static int translateVisualSecondaryRoleToIndex(DObject::VisualSecondaryRole visual_role) +static int translateVisualSecondaryRoleToIndex(DObject::VisualSecondaryRole visualRole) { - switch (visual_role) { - case DObject::SECONDARY_ROLE_NONE: + switch (visualRole) { + case DObject::SecondaryRoleNone: return 0; - case DObject::SECONDARY_ROLE_LIGHTER: + case DObject::SecondaryRoleLighter: return 1; - case DObject::SECONDARY_ROLE_DARKER: + case DObject::SecondaryRoleDarker: return 2; - case DObject::SECONDARY_ROLE_SOFTEN: + case DObject::SecondaryRoleSoften: return 3; - case DObject::SECONDARY_ROLE_OUTLINE: + case DObject::SecondaryRoleOutline: return 4; } return 0; @@ -196,26 +192,26 @@ static int translateVisualSecondaryRoleToIndex(DObject::VisualSecondaryRole visu static DObject::VisualSecondaryRole translateIndexToVisualSecondaryRole(int index) { static const DObject::VisualSecondaryRole map[] = { - DObject::SECONDARY_ROLE_NONE, - DObject::SECONDARY_ROLE_LIGHTER, DObject::SECONDARY_ROLE_DARKER, - DObject::SECONDARY_ROLE_SOFTEN, DObject::SECONDARY_ROLE_OUTLINE + DObject::SecondaryRoleNone, + DObject::SecondaryRoleLighter, DObject::SecondaryRoleDarker, + DObject::SecondaryRoleSoften, DObject::SecondaryRoleOutline }; QMT_CHECK(index >= 0 && index <= 4); return map[index]; } -static int translateStereotypeDisplayToIndex(DObject::StereotypeDisplay stereotype_display) +static int translateStereotypeDisplayToIndex(DObject::StereotypeDisplay stereotypeDisplay) { - switch (stereotype_display) { - case DObject::STEREOTYPE_NONE: + switch (stereotypeDisplay) { + case DObject::StereotypeNone: return 1; - case DObject::STEREOTYPE_LABEL: + case DObject::StereotypeLabel: return 2; - case DObject::STEREOTYPE_DECORATION: + case DObject::StereotypeDecoration: return 3; - case DObject::STEREOTYPE_ICON: + case DObject::StereotypeIcon: return 4; - case DObject::STEREOTYPE_SMART: + case DObject::StereotypeSmart: return 0; } return 0; @@ -224,24 +220,24 @@ static int translateStereotypeDisplayToIndex(DObject::StereotypeDisplay stereoty static DObject::StereotypeDisplay translateIndexToStereotypeDisplay(int index) { static const DObject::StereotypeDisplay map[] = { - DObject::STEREOTYPE_SMART, - DObject::STEREOTYPE_NONE, - DObject::STEREOTYPE_LABEL, - DObject::STEREOTYPE_DECORATION, - DObject::STEREOTYPE_ICON + DObject::StereotypeSmart, + DObject::StereotypeNone, + DObject::StereotypeLabel, + DObject::StereotypeDecoration, + DObject::StereotypeIcon }; QMT_CHECK(index >= 0 && index <= 4); return map[index]; } -static int translateTemplateDisplayToIndex(DClass::TemplateDisplay template_display) +static int translateTemplateDisplayToIndex(DClass::TemplateDisplay templateDisplay) { - switch (template_display) { - case DClass::TEMPLATE_SMART: + switch (templateDisplay) { + case DClass::TemplateSmart: return 0; - case DClass::TEMPLATE_BOX: + case DClass::TemplateBox: return 1; - case DClass::TEMPLATE_NAME: + case DClass::TemplateName: return 2; } return 0; @@ -250,28 +246,28 @@ static int translateTemplateDisplayToIndex(DClass::TemplateDisplay template_disp static DClass::TemplateDisplay translateIndexToTemplateDisplay(int index) { static const DClass::TemplateDisplay map[] = { - DClass::TEMPLATE_SMART, - DClass::TEMPLATE_BOX, - DClass::TEMPLATE_NAME + DClass::TemplateSmart, + DClass::TemplateBox, + DClass::TemplateName }; QMT_CHECK(index >= 0 && index <= 2); return map[index]; } -static int translateAnnotationVisualRoleToIndex(DAnnotation::VisualRole visual_role) +static int translateAnnotationVisualRoleToIndex(DAnnotation::VisualRole visualRole) { - switch (visual_role) { - case DAnnotation::ROLE_NORMAL: + switch (visualRole) { + case DAnnotation::RoleNormal: return 0; - case DAnnotation::ROLE_TITLE: + case DAnnotation::RoleTitle: return 1; - case DAnnotation::ROLE_SUBTITLE: + case DAnnotation::RoleSubtitle: return 2; - case DAnnotation::ROLE_EMPHASIZED: + case DAnnotation::RoleEmphasized: return 3; - case DAnnotation::ROLE_SOFTEN: + case DAnnotation::RoleSoften: return 4; - case DAnnotation::ROLE_FOOTNOTE: + case DAnnotation::RoleFootnote: return 5; } return 0; @@ -280,60 +276,59 @@ static int translateAnnotationVisualRoleToIndex(DAnnotation::VisualRole visual_r static DAnnotation::VisualRole translateIndexToAnnotationVisualRole(int index) { static const DAnnotation::VisualRole map[] = { - DAnnotation::ROLE_NORMAL, DAnnotation::ROLE_TITLE, DAnnotation::ROLE_SUBTITLE, - DAnnotation::ROLE_EMPHASIZED, DAnnotation::ROLE_SOFTEN, DAnnotation::ROLE_FOOTNOTE + DAnnotation::RoleNormal, DAnnotation::RoleTitle, DAnnotation::RoleSubtitle, + DAnnotation::RoleEmphasized, DAnnotation::RoleSoften, DAnnotation::RoleFootnote }; QMT_CHECK(index >= 0 && index <= 5); return map[index]; } - -PropertiesView::MView::MView(PropertiesView *properties_view) - : _properties_view(properties_view), - _diagram(0), - _stereotypes_controller(new StereotypesController(this)), - _top_widget(0), - _top_layout(0), - _stereotype_element(StereotypeIcon::ELEMENT_ANY), - _class_name_label(0), - _stereotype_combo_box(0), - _reverse_engineered_label(0), - _element_name_line_edit(0), - _children_label(0), - _relations_label(0), - _namespace_line_edit(0), - _template_parameters_line_edit(0), - _class_members_status_label(0), - _class_members_parse_button(0), - _class_members_edit(0), - _diagrams_label(0), - _item_variety_edit(0), - _end_a_label(0), - _end_b_label(0), - _direction_selector(0), - _end_a_end_name(0), - _end_a_cardinality(0), - _end_a_navigable(0), - _end_a_kind(0), - _end_b_end_name(0), - _end_b_cardinality(0), - _end_b_navigable(0), - _end_b_kind(0), - _separator_line(0), - _style_element_type(StyleEngine::TYPE_OTHER), - _pos_rect_label(0), - _auto_sized_checkbox(0), - _visual_primary_role_selector(0), - _visual_secondary_role_selector(0), - _visual_emphasized_checkbox(0), - _stereotype_display_selector(0), - _depth_label(0), - _template_display_selector(0), - _show_all_members_checkbox(0), - _plain_shape_checkbox(0), - _item_shape_edit(0), - _annotation_auto_width_checkbox(0), - _annotation_visual_role_selector(0) +PropertiesView::MView::MView(PropertiesView *propertiesView) + : m_propertiesView(propertiesView), + m_diagram(0), + m_stereotypesController(new StereotypesController(this)), + m_topWidget(0), + m_topLayout(0), + m_stereotypeElement(StereotypeIcon::ElementAny), + m_classNameLabel(0), + m_stereotypeComboBox(0), + m_reverseEngineeredLabel(0), + m_elementNameLineEdit(0), + m_childrenLabel(0), + m_relationsLabel(0), + m_namespaceLineEdit(0), + m_templateParametersLineEdit(0), + m_classMembersStatusLabel(0), + m_classMembersParseButton(0), + m_classMembersEdit(0), + m_diagramsLabel(0), + m_itemVarietyEdit(0), + m_endALabel(0), + m_endBLabel(0), + m_directionSelector(0), + m_endAEndName(0), + m_endACardinality(0), + m_endANavigable(0), + m_endAKind(0), + m_endBEndName(0), + m_endBCardinality(0), + m_endBNavigable(0), + m_endBKind(0), + m_separatorLine(0), + m_styleElementType(StyleEngine::TypeOther), + m_posRectLabel(0), + m_autoSizedCheckbox(0), + m_visualPrimaryRoleSelector(0), + m_visualSecondaryRoleSelector(0), + m_visualEmphasizedCheckbox(0), + m_stereotypeDisplaySelector(0), + m_depthLabel(0), + m_templateDisplaySelector(0), + m_showAllMembersCheckbox(0), + m_plainShapeCheckbox(0), + m_itemShapeEdit(0), + m_annotationAutoWidthCheckbox(0), + m_annotationVisualRoleSelector(0) { } @@ -341,46 +336,46 @@ PropertiesView::MView::~MView() { } -void PropertiesView::MView::update(QList<MElement *> &model_elements) +void PropertiesView::MView::update(QList<MElement *> &modelElements) { - QMT_CHECK(model_elements.size() > 0); + QMT_CHECK(modelElements.size() > 0); - _model_elements = model_elements; - _diagram_elements.clear(); - _diagram = 0; - model_elements.at(0)->accept(this); + m_modelElements = modelElements; + m_diagramElements.clear(); + m_diagram = 0; + modelElements.at(0)->accept(this); } -void PropertiesView::MView::update(QList<DElement *> &diagram_elements, MDiagram *diagram) +void PropertiesView::MView::update(QList<DElement *> &diagramElements, MDiagram *diagram) { - QMT_CHECK(diagram_elements.size() > 0); + QMT_CHECK(diagramElements.size() > 0); QMT_CHECK(diagram); - _diagram_elements = diagram_elements; - _diagram = diagram; - _model_elements.clear(); - foreach (DElement *delement, diagram_elements) { - bool appended_melement = false; - if (delement->getModelUid().isValid()) { - MElement *melement = _properties_view->getModelController()->findElement(delement->getModelUid()); + m_diagramElements = diagramElements; + m_diagram = diagram; + m_modelElements.clear(); + foreach (DElement *delement, diagramElements) { + bool appendedMelement = false; + if (delement->modelUid().isValid()) { + MElement *melement = m_propertiesView->modelController()->findElement(delement->modelUid()); if (melement) { - _model_elements.append(melement); - appended_melement = true; + m_modelElements.append(melement); + appendedMelement = true; } } - if (!appended_melement) { - // ensure that indices within _diagram_elements match indices into _model_elements - _model_elements.append(0); + if (!appendedMelement) { + // ensure that indices within m_diagramElements match indices into m_modelElements + m_modelElements.append(0); } } - diagram_elements.at(0)->accept(this); + diagramElements.at(0)->accept(this); } void PropertiesView::MView::edit() { - if (_element_name_line_edit) { - _element_name_line_edit->setFocus(); - _element_name_line_edit->selectAll(); + if (m_elementNameLineEdit) { + m_elementNameLineEdit->setFocus(); + m_elementNameLineEdit->selectAll(); } } @@ -389,427 +384,407 @@ void PropertiesView::MView::visitMElement(const MElement *element) Q_UNUSED(element); prepare(); - if (_stereotype_combo_box == 0) { - _stereotype_combo_box = new QComboBox(_top_widget); - _stereotype_combo_box->setEditable(true); - _stereotype_combo_box->setInsertPolicy(QComboBox::NoInsert); - _top_layout->addRow(tr("Stereotypes:"), _stereotype_combo_box); - _stereotype_combo_box->addItems(_properties_view->getStereotypeController()->getKnownStereotypes(_stereotype_element)); - connect(_stereotype_combo_box->lineEdit(), SIGNAL(textEdited(QString)), this, SLOT(onStereotypesChanged(QString))); - connect(_stereotype_combo_box, SIGNAL(activated(QString)), this, SLOT(onStereotypesChanged(QString))); - } - if (!_stereotype_combo_box->hasFocus()) { - QList<QString> stereotype_list; - if (haveSameValue(_model_elements, &MElement::getStereotypes, &stereotype_list)) { - QString stereotypes = _stereotypes_controller->toString(stereotype_list); - _stereotype_combo_box->setEnabled(true); - if (stereotypes != _stereotype_combo_box->currentText()) { - _stereotype_combo_box->setCurrentText(stereotypes); - } + if (m_stereotypeComboBox == 0) { + m_stereotypeComboBox = new QComboBox(m_topWidget); + m_stereotypeComboBox->setEditable(true); + m_stereotypeComboBox->setInsertPolicy(QComboBox::NoInsert); + m_topLayout->addRow(tr("Stereotypes:"), m_stereotypeComboBox); + m_stereotypeComboBox->addItems(m_propertiesView->stereotypeController()->knownStereotypes(m_stereotypeElement)); + connect(m_stereotypeComboBox->lineEdit(), SIGNAL(textEdited(QString)), + this, SLOT(onStereotypesChanged(QString))); + connect(m_stereotypeComboBox, SIGNAL(activated(QString)), this, SLOT(onStereotypesChanged(QString))); + } + if (!m_stereotypeComboBox->hasFocus()) { + QList<QString> stereotypeList; + if (haveSameValue(m_modelElements, &MElement::stereotypes, &stereotypeList)) { + QString stereotypes = m_stereotypesController->toString(stereotypeList); + m_stereotypeComboBox->setEnabled(true); + if (stereotypes != m_stereotypeComboBox->currentText()) + m_stereotypeComboBox->setCurrentText(stereotypes); } else { - _stereotype_combo_box->clear(); - _stereotype_combo_box->setEnabled(false); + m_stereotypeComboBox->clear(); + m_stereotypeComboBox->setEnabled(false); } } #ifdef SHOW_DEBUG_PROPERTIES - if (_reverse_engineered_label == 0) { - _reverse_engineered_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Reverese engineered:"), _reverse_engineered_label); + if (m_reverseEngineeredLabel == 0) { + m_reverseEngineeredLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Reverese engineered:"), m_reverseEngineeredLabel); } - QString text = element->getFlags().testFlag(MElement::REVERSE_ENGINEERED) ? tr("Yes") : tr("No"); - _reverse_engineered_label->setText(text); + QString text = element->flags().testFlag(MElement::ReverseEngineered) ? tr("Yes") : tr("No"); + m_reverseEngineeredLabel->setText(text); #endif } void PropertiesView::MView::visitMObject(const MObject *object) { visitMElement(object); - QList<MObject *> selection = filter<MObject>(_model_elements); - bool is_single_selection = selection.size() == 1; - if (_element_name_line_edit == 0) { - _element_name_line_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Name:"), _element_name_line_edit); - connect(_element_name_line_edit, SIGNAL(textChanged(QString)), this, SLOT(onObjectNameChanged(QString))); - } - if (is_single_selection) { - if (object->getName() != _element_name_line_edit->text() && !_element_name_line_edit->hasFocus()) { - _element_name_line_edit->setText(object->getName()); - } + QList<MObject *> selection = filter<MObject>(m_modelElements); + bool isSingleSelection = selection.size() == 1; + if (m_elementNameLineEdit == 0) { + m_elementNameLineEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Name:"), m_elementNameLineEdit); + connect(m_elementNameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(onObjectNameChanged(QString))); + } + if (isSingleSelection) { + if (object->name() != m_elementNameLineEdit->text() && !m_elementNameLineEdit->hasFocus()) + m_elementNameLineEdit->setText(object->name()); } else { - _element_name_line_edit->clear(); - } - if (_element_name_line_edit->isEnabled() != is_single_selection) { - _element_name_line_edit->setEnabled(is_single_selection); + m_elementNameLineEdit->clear(); } + if (m_elementNameLineEdit->isEnabled() != isSingleSelection) + m_elementNameLineEdit->setEnabled(isSingleSelection); #ifdef SHOW_DEBUG_PROPERTIES - if (_children_label == 0) { - _children_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Children:"), _children_label); + if (m_childrenLabel == 0) { + m_childrenLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Children:"), m_childrenLabel); } - _children_label->setText(QString::number(object->getChildren().size())); - if (_relations_label == 0) { - _relations_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Relations:"), _relations_label); + m_childrenLabel->setText(QString::number(object->children().size())); + if (m_relationsLabel == 0) { + m_relationsLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Relations:"), m_relationsLabel); } - _relations_label->setText(QString::number(object->getRelations().size())); + m_relationsLabel->setText(QString::number(object->relations().size())); #endif } void PropertiesView::MView::visitMPackage(const MPackage *package) { - if (_model_elements.size() == 1 && !package->getOwner()) { - setTitle<MPackage>(_model_elements, tr("Model"), tr("Models")); - } else { - setTitle<MPackage>(_model_elements, tr("Package"), tr("Packages")); - } + if (m_modelElements.size() == 1 && !package->owner()) + setTitle<MPackage>(m_modelElements, tr("Model"), tr("Models")); + else + setTitle<MPackage>(m_modelElements, tr("Package"), tr("Packages")); visitMObject(package); } void PropertiesView::MView::visitMClass(const MClass *klass) { - setTitle<MClass>(_model_elements, tr("Class"), tr("Classes")); + setTitle<MClass>(m_modelElements, tr("Class"), tr("Classes")); visitMObject(klass); - QList<MClass *> selection = filter<MClass>(_model_elements); - bool is_single_selection = selection.size() == 1; - if (_namespace_line_edit == 0) { - _namespace_line_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Namespace:"), _namespace_line_edit); - connect(_namespace_line_edit, SIGNAL(textEdited(QString)), this, SLOT(onNamespaceChanged(QString))); - } - if (!_namespace_line_edit->hasFocus()) { - QString name_space; - if (haveSameValue(_model_elements, &MClass::getNamespace, &name_space)) { - _namespace_line_edit->setEnabled(true); - if (name_space != _namespace_line_edit->text()) { - _namespace_line_edit->setText(name_space); - } + QList<MClass *> selection = filter<MClass>(m_modelElements); + bool isSingleSelection = selection.size() == 1; + if (m_namespaceLineEdit == 0) { + m_namespaceLineEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Namespace:"), m_namespaceLineEdit); + connect(m_namespaceLineEdit, SIGNAL(textEdited(QString)), this, SLOT(onNamespaceChanged(QString))); + } + if (!m_namespaceLineEdit->hasFocus()) { + QString umlNamespace; + if (haveSameValue(m_modelElements, &MClass::umlNamespace, ¨Namespace)) { + m_namespaceLineEdit->setEnabled(true); + if (umlNamespace != m_namespaceLineEdit->text()) + m_namespaceLineEdit->setText(umlNamespace); } else { - _namespace_line_edit->clear(); - _namespace_line_edit->setEnabled(false); + m_namespaceLineEdit->clear(); + m_namespaceLineEdit->setEnabled(false); } } - if (_template_parameters_line_edit == 0) { - _template_parameters_line_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Template:"), _template_parameters_line_edit); - connect(_template_parameters_line_edit, SIGNAL(textChanged(QString)), this, SLOT(onTemplateParametersChanged(QString))); - } - if (is_single_selection) { - if (!_template_parameters_line_edit->hasFocus()) { - QList<QString> template_parameters = splitTemplateParameters(_template_parameters_line_edit->text()); - if (klass->getTemplateParameters() != template_parameters) { - _template_parameters_line_edit->setText(formatTemplateParameters(klass->getTemplateParameters())); - } + if (m_templateParametersLineEdit == 0) { + m_templateParametersLineEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Template:"), m_templateParametersLineEdit); + connect(m_templateParametersLineEdit, SIGNAL(textChanged(QString)), + this, SLOT(onTemplateParametersChanged(QString))); + } + if (isSingleSelection) { + if (!m_templateParametersLineEdit->hasFocus()) { + QList<QString> templateParameters = splitTemplateParameters(m_templateParametersLineEdit->text()); + if (klass->templateParameters() != templateParameters) + m_templateParametersLineEdit->setText(formatTemplateParameters(klass->templateParameters())); } } else { - _template_parameters_line_edit->clear(); - } - if (_template_parameters_line_edit->isEnabled() != is_single_selection) { - _template_parameters_line_edit->setEnabled(is_single_selection); - } - if (_class_members_status_label == 0) { - QMT_CHECK(!_class_members_parse_button); - _class_members_status_label = new QLabel(_top_widget); - _class_members_parse_button = new QPushButton(QStringLiteral("Clean Up"), _top_widget); + m_templateParametersLineEdit->clear(); + } + if (m_templateParametersLineEdit->isEnabled() != isSingleSelection) + m_templateParametersLineEdit->setEnabled(isSingleSelection); + if (m_classMembersStatusLabel == 0) { + QMT_CHECK(!m_classMembersParseButton); + m_classMembersStatusLabel = new QLabel(m_topWidget); + m_classMembersParseButton = new QPushButton(QStringLiteral("Clean Up"), m_topWidget); QHBoxLayout *layout = new QHBoxLayout(); - layout->addWidget(_class_members_status_label); - layout->addWidget(_class_members_parse_button); + layout->addWidget(m_classMembersStatusLabel); + layout->addWidget(m_classMembersParseButton); layout->setStretch(0, 1); layout->setStretch(1, 0); - _top_layout->addRow(QStringLiteral(""), layout); - connect(_class_members_parse_button, SIGNAL(clicked()), this, SLOT(onParseClassMembers())); - } - if (_class_members_parse_button->isEnabled() != is_single_selection) { - _class_members_parse_button->setEnabled(is_single_selection); - } - if (_class_members_edit == 0) { - _class_members_edit = new ClassMembersEdit(_top_widget); - _class_members_edit->setLineWrapMode(QPlainTextEdit::NoWrap); - _top_layout->addRow(tr("Members:"), _class_members_edit); - connect(_class_members_edit, SIGNAL(membersChanged(QList<MClassMember>&)), this, SLOT(onClassMembersChanged(QList<MClassMember>&))); - connect(_class_members_edit, SIGNAL(statusChanged(bool)), this, SLOT(onClassMembersStatusChanged(bool))); - } - if (is_single_selection) { - if (klass->getMembers() != _class_members_edit->getMembers() && !_class_members_edit->hasFocus()) { - _class_members_edit->setMembers(klass->getMembers()); - } + m_topLayout->addRow(QStringLiteral(""), layout); + connect(m_classMembersParseButton, SIGNAL(clicked()), this, SLOT(onParseClassMembers())); + } + if (m_classMembersParseButton->isEnabled() != isSingleSelection) + m_classMembersParseButton->setEnabled(isSingleSelection); + if (m_classMembersEdit == 0) { + m_classMembersEdit = new ClassMembersEdit(m_topWidget); + m_classMembersEdit->setLineWrapMode(QPlainTextEdit::NoWrap); + m_topLayout->addRow(tr("Members:"), m_classMembersEdit); + connect(m_classMembersEdit, SIGNAL(membersChanged(QList<MClassMember>&)), + this, SLOT(onClassMembersChanged(QList<MClassMember>&))); + connect(m_classMembersEdit, SIGNAL(statusChanged(bool)), this, SLOT(onClassMembersStatusChanged(bool))); + } + if (isSingleSelection) { + if (klass->members() != m_classMembersEdit->members() && !m_classMembersEdit->hasFocus()) + m_classMembersEdit->setMembers(klass->members()); } else { - _class_members_edit->clear(); - } - if (_class_members_edit->isEnabled() != is_single_selection) { - _class_members_edit->setEnabled(is_single_selection); + m_classMembersEdit->clear(); } + if (m_classMembersEdit->isEnabled() != isSingleSelection) + m_classMembersEdit->setEnabled(isSingleSelection); } void PropertiesView::MView::visitMComponent(const MComponent *component) { - setTitle<MComponent>(_model_elements, tr("Component"), tr("Components")); + setTitle<MComponent>(m_modelElements, tr("Component"), tr("Components")); visitMObject(component); } void PropertiesView::MView::visitMDiagram(const MDiagram *diagram) { - setTitle<MDiagram>(_model_elements, tr("Diagram"), tr("Diagrams")); + setTitle<MDiagram>(m_modelElements, tr("Diagram"), tr("Diagrams")); visitMObject(diagram); #ifdef SHOW_DEBUG_PROPERTIES - if (_diagrams_label == 0) { - _diagrams_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Elements:"), _diagrams_label); + if (m_diagramsLabel == 0) { + m_diagramsLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Elements:"), m_diagramsLabel); } - _diagrams_label->setText(QString::number(diagram->getDiagramElements().size())); + m_diagramsLabel->setText(QString::number(diagram->diagramElements().size())); #endif } void PropertiesView::MView::visitMCanvasDiagram(const MCanvasDiagram *diagram) { - setTitle<MCanvasDiagram>(_model_elements, tr("Canvas Diagram"), tr("Canvas Diagrams")); + setTitle<MCanvasDiagram>(m_modelElements, tr("Canvas Diagram"), tr("Canvas Diagrams")); visitMDiagram(diagram); } void PropertiesView::MView::visitMItem(const MItem *item) { - setTitle<MItem>(item, _model_elements, tr("Item"), tr("Items")); + setTitle<MItem>(item, m_modelElements, tr("Item"), tr("Items")); visitMObject(item); - QList<MItem *> selection = filter<MItem>(_model_elements); - bool is_single_selection = selection.size() == 1; + QList<MItem *> selection = filter<MItem>(m_modelElements); + bool isSingleSelection = selection.size() == 1; if (item->isVarietyEditable()) { - if (_item_variety_edit == 0) { - _item_variety_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Variety:"), _item_variety_edit); - connect(_item_variety_edit, SIGNAL(textChanged(QString)), this, SLOT(onItemVarietyChanged(QString))); + if (m_itemVarietyEdit == 0) { + m_itemVarietyEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Variety:"), m_itemVarietyEdit); + connect(m_itemVarietyEdit, SIGNAL(textChanged(QString)), this, SLOT(onItemVarietyChanged(QString))); } - if (is_single_selection) { - if (item->getVariety() != _item_variety_edit->text() && !_item_variety_edit->hasFocus()) { - _item_variety_edit->setText(item->getVariety()); - } + if (isSingleSelection) { + if (item->variety() != m_itemVarietyEdit->text() && !m_itemVarietyEdit->hasFocus()) + m_itemVarietyEdit->setText(item->variety()); } else { - _item_variety_edit->clear(); - } - if (_item_variety_edit->isEnabled() != is_single_selection) { - _item_variety_edit->setEnabled(is_single_selection); + m_itemVarietyEdit->clear(); } + if (m_itemVarietyEdit->isEnabled() != isSingleSelection) + m_itemVarietyEdit->setEnabled(isSingleSelection); } } void PropertiesView::MView::visitMRelation(const MRelation *relation) { visitMElement(relation); - QList<MRelation *> selection = filter<MRelation>(_model_elements); - bool is_single_selection = selection.size() == 1; - if (_element_name_line_edit == 0) { - _element_name_line_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Name:"), _element_name_line_edit); - connect(_element_name_line_edit, SIGNAL(textChanged(QString)), this, SLOT(onRelationNameChanged(QString))); - } - if (is_single_selection) { - if (relation->getName() != _element_name_line_edit->text() && !_element_name_line_edit->hasFocus()) { - _element_name_line_edit->setText(relation->getName()); - } + QList<MRelation *> selection = filter<MRelation>(m_modelElements); + bool isSingleSelection = selection.size() == 1; + if (m_elementNameLineEdit == 0) { + m_elementNameLineEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Name:"), m_elementNameLineEdit); + connect(m_elementNameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(onRelationNameChanged(QString))); + } + if (isSingleSelection) { + if (relation->name() != m_elementNameLineEdit->text() && !m_elementNameLineEdit->hasFocus()) + m_elementNameLineEdit->setText(relation->name()); } else { - _element_name_line_edit->clear(); - } - if (_element_name_line_edit->isEnabled() != is_single_selection) { - _element_name_line_edit->setEnabled(is_single_selection); + m_elementNameLineEdit->clear(); } - MObject *end_a_object = _properties_view->getModelController()->findObject(relation->getEndA()); - QMT_CHECK(end_a_object); - setEndAName(tr("End A: %1").arg(end_a_object->getName())); - MObject *end_b_object = _properties_view->getModelController()->findObject(relation->getEndB()); - QMT_CHECK(end_b_object); - setEndBName(tr("End B: %1").arg(end_b_object->getName())); + if (m_elementNameLineEdit->isEnabled() != isSingleSelection) + m_elementNameLineEdit->setEnabled(isSingleSelection); + MObject *endAObject = m_propertiesView->modelController()->findObject(relation->endAUid()); + QMT_CHECK(endAObject); + setEndAName(tr("End A: %1").arg(endAObject->name())); + MObject *endBObject = m_propertiesView->modelController()->findObject(relation->endBUid()); + QMT_CHECK(endBObject); + setEndBName(tr("End B: %1").arg(endBObject->name())); } void PropertiesView::MView::visitMDependency(const MDependency *dependency) { - setTitle<MDependency>(_model_elements, tr("Dependency"), tr("Dependencies")); + setTitle<MDependency>(m_modelElements, tr("Dependency"), tr("Dependencies")); visitMRelation(dependency); - QList<MDependency *> selection = filter<MDependency>(_model_elements); - bool is_single_selection = selection.size() == 1; - if (_direction_selector == 0) { - _direction_selector = new QComboBox(_top_widget); - _direction_selector->addItems(QStringList() << QStringLiteral("->") << QStringLiteral("<-") << QStringLiteral("<->")); - _top_layout->addRow(tr("Direction:"), _direction_selector); - connect(_direction_selector, SIGNAL(activated(int)), this, SLOT(onDependencyDirectionChanged(int))); - } - if (is_single_selection) { - if ((!isValidDirectionIndex(_direction_selector->currentIndex()) || dependency->getDirection() != translateIndexToDirection(_direction_selector->currentIndex())) - && !_direction_selector->hasFocus()) { - _direction_selector->setCurrentIndex(translateDirectionToIndex(dependency->getDirection())); + QList<MDependency *> selection = filter<MDependency>(m_modelElements); + bool isSingleSelection = selection.size() == 1; + if (m_directionSelector == 0) { + m_directionSelector = new QComboBox(m_topWidget); + m_directionSelector->addItems(QStringList() + << QStringLiteral("->") << QStringLiteral("<-") << QStringLiteral("<->")); + m_topLayout->addRow(tr("Direction:"), m_directionSelector); + connect(m_directionSelector, SIGNAL(activated(int)), this, SLOT(onDependencyDirectionChanged(int))); + } + if (isSingleSelection) { + if ((!isValidDirectionIndex(m_directionSelector->currentIndex()) + || dependency->direction() != translateIndexToDirection(m_directionSelector->currentIndex())) + && !m_directionSelector->hasFocus()) { + m_directionSelector->setCurrentIndex(translateDirectionToIndex(dependency->direction())); } } else { - _direction_selector->setCurrentIndex(-1); - } - if (_direction_selector->isEnabled() != is_single_selection) { - _direction_selector->setEnabled(is_single_selection); + m_directionSelector->setCurrentIndex(-1); } + if (m_directionSelector->isEnabled() != isSingleSelection) + m_directionSelector->setEnabled(isSingleSelection); } void PropertiesView::MView::visitMInheritance(const MInheritance *inheritance) { - setTitle<MInheritance>(_model_elements, tr("Inheritance"), tr("Inheritances")); - MObject *derived_class = _properties_view->getModelController()->findObject(inheritance->getDerived()); - QMT_CHECK(derived_class); - setEndAName(tr("Derived class: %1").arg(derived_class->getName())); - MObject *base_class = _properties_view->getModelController()->findObject(inheritance->getBase()); - setEndBName(tr("Base class: %1").arg(base_class->getName())); + setTitle<MInheritance>(m_modelElements, tr("Inheritance"), tr("Inheritances")); + MObject *derivedClass = m_propertiesView->modelController()->findObject(inheritance->derived()); + QMT_CHECK(derivedClass); + setEndAName(tr("Derived class: %1").arg(derivedClass->name())); + MObject *baseClass = m_propertiesView->modelController()->findObject(inheritance->base()); + setEndBName(tr("Base class: %1").arg(baseClass->name())); visitMRelation(inheritance); } void PropertiesView::MView::visitMAssociation(const MAssociation *association) { - setTitle<MAssociation>(_model_elements, tr("Association"), tr("Associations")); + setTitle<MAssociation>(m_modelElements, tr("Association"), tr("Associations")); visitMRelation(association); - QList<MAssociation *> selection = filter<MAssociation>(_model_elements); - bool is_single_selection = selection.size() == 1; - if (_end_a_label == 0) { - _end_a_label = new QLabel(QStringLiteral("<b>") + _end_a_name + QStringLiteral("</b>")); - _top_layout->addRow(_end_a_label); - } - if (_end_a_end_name == 0) { - _end_a_end_name = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Role:"), _end_a_end_name); - connect(_end_a_end_name, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndANameChanged(QString))); - } - if (is_single_selection) { - if (association->getA().getName() != _end_a_end_name->text() && !_end_a_end_name->hasFocus()) { - _end_a_end_name->setText(association->getA().getName()); - } + QList<MAssociation *> selection = filter<MAssociation>(m_modelElements); + bool isSingleSelection = selection.size() == 1; + if (m_endALabel == 0) { + m_endALabel = new QLabel(QStringLiteral("<b>") + m_endAName + QStringLiteral("</b>")); + m_topLayout->addRow(m_endALabel); + } + if (m_endAEndName == 0) { + m_endAEndName = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Role:"), m_endAEndName); + connect(m_endAEndName, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndANameChanged(QString))); + } + if (isSingleSelection) { + if (association->endA().name() != m_endAEndName->text() && !m_endAEndName->hasFocus()) + m_endAEndName->setText(association->endA().name()); } else { - _end_a_end_name->clear(); - } - if (_end_a_end_name->isEnabled() != is_single_selection) { - _end_a_end_name->setEnabled(is_single_selection); - } - if (_end_a_cardinality == 0) { - _end_a_cardinality = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Cardinality:"), _end_a_cardinality); - connect(_end_a_cardinality, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndACardinalityChanged(QString))); - } - if (is_single_selection) { - if (association->getA().getCardinality() != _end_a_cardinality->text() && !_end_a_cardinality->hasFocus()) { - _end_a_cardinality->setText(association->getA().getCardinality()); - } + m_endAEndName->clear(); + } + if (m_endAEndName->isEnabled() != isSingleSelection) + m_endAEndName->setEnabled(isSingleSelection); + if (m_endACardinality == 0) { + m_endACardinality = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Cardinality:"), m_endACardinality); + connect(m_endACardinality, SIGNAL(textChanged(QString)), + this, SLOT(onAssociationEndACardinalityChanged(QString))); + } + if (isSingleSelection) { + if (association->endA().cardinality() != m_endACardinality->text() && !m_endACardinality->hasFocus()) + m_endACardinality->setText(association->endA().cardinality()); } else { - _end_a_cardinality->clear(); - } - if (_end_a_cardinality->isEnabled() != is_single_selection) { - _end_a_cardinality->setEnabled(is_single_selection); - } - if (_end_a_navigable == 0) { - _end_a_navigable = new QCheckBox(tr("Navigable"), _top_widget); - _top_layout->addRow(QString(), _end_a_navigable); - connect(_end_a_navigable, SIGNAL(clicked(bool)), this, SLOT(onAssociationEndANavigableChanged(bool))); - } - if (is_single_selection) { - if (association->getA().isNavigable() != _end_a_navigable->isChecked()) { - _end_a_navigable->setChecked(association->getA().isNavigable()); - } + m_endACardinality->clear(); + } + if (m_endACardinality->isEnabled() != isSingleSelection) + m_endACardinality->setEnabled(isSingleSelection); + if (m_endANavigable == 0) { + m_endANavigable = new QCheckBox(tr("Navigable"), m_topWidget); + m_topLayout->addRow(QString(), m_endANavigable); + connect(m_endANavigable, SIGNAL(clicked(bool)), this, SLOT(onAssociationEndANavigableChanged(bool))); + } + if (isSingleSelection) { + if (association->endA().isNavigable() != m_endANavigable->isChecked()) + m_endANavigable->setChecked(association->endA().isNavigable()); } else { - _end_a_navigable->setChecked(false); - } - if (_end_a_navigable->isEnabled() != is_single_selection) { - _end_a_navigable->setEnabled(is_single_selection); - } - if (_end_a_kind == 0) { - _end_a_kind = new QComboBox(_top_widget); - _end_a_kind->addItems(QStringList() << tr("Association") << tr("Aggregation") << tr("Composition")); - _top_layout->addRow(tr("Relationship:"), _end_a_kind); - connect(_end_a_kind, SIGNAL(activated(int)), this, SLOT(onAssociationEndAKindChanged(int))); - } - if (is_single_selection) { - if ((!isValidAssociationKindIndex(_end_a_kind->currentIndex()) || association->getA().getKind() != translateIndexToAssociationKind(_end_a_kind->currentIndex())) - && !_end_a_kind->hasFocus()) { - _end_a_kind->setCurrentIndex(translateAssociationKindToIndex(association->getA().getKind())); + m_endANavigable->setChecked(false); + } + if (m_endANavigable->isEnabled() != isSingleSelection) + m_endANavigable->setEnabled(isSingleSelection); + if (m_endAKind == 0) { + m_endAKind = new QComboBox(m_topWidget); + m_endAKind->addItems(QStringList() << tr("Association") << tr("Aggregation") << tr("Composition")); + m_topLayout->addRow(tr("Relationship:"), m_endAKind); + connect(m_endAKind, SIGNAL(activated(int)), this, SLOT(onAssociationEndAKindChanged(int))); + } + if (isSingleSelection) { + if ((!isValidAssociationKindIndex(m_endAKind->currentIndex()) + || association->endA().kind() != translateIndexToAssociationKind(m_endAKind->currentIndex())) + && !m_endAKind->hasFocus()) { + m_endAKind->setCurrentIndex(translateAssociationKindToIndex(association->endA().kind())); } } else { - _end_a_kind->setCurrentIndex(-1); - } - if (_end_a_kind->isEnabled() != is_single_selection) { - _end_a_kind->setEnabled(is_single_selection); + m_endAKind->setCurrentIndex(-1); } + if (m_endAKind->isEnabled() != isSingleSelection) + m_endAKind->setEnabled(isSingleSelection); - if (_end_b_label == 0) { - _end_b_label = new QLabel(QStringLiteral("<b>") + _end_b_name + QStringLiteral("</b>")); - _top_layout->addRow(_end_b_label); + if (m_endBLabel == 0) { + m_endBLabel = new QLabel(QStringLiteral("<b>") + m_endBName + QStringLiteral("</b>")); + m_topLayout->addRow(m_endBLabel); } - if (_end_b_end_name == 0) { - _end_b_end_name = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Role:"), _end_b_end_name); - connect(_end_b_end_name, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndBNameChanged(QString))); + if (m_endBEndName == 0) { + m_endBEndName = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Role:"), m_endBEndName); + connect(m_endBEndName, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndBNameChanged(QString))); } - if (is_single_selection) { - if (association->getB().getName() != _end_b_end_name->text() && !_end_b_end_name->hasFocus()) { - _end_b_end_name->setText(association->getB().getName()); - } + if (isSingleSelection) { + if (association->endB().name() != m_endBEndName->text() && !m_endBEndName->hasFocus()) + m_endBEndName->setText(association->endB().name()); } else { - _end_b_end_name->clear(); - } - if (_end_b_end_name->isEnabled() != is_single_selection) { - _end_b_end_name->setEnabled(is_single_selection); - } - if (_end_b_cardinality == 0) { - _end_b_cardinality = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Cardinality:"), _end_b_cardinality); - connect(_end_b_cardinality, SIGNAL(textChanged(QString)), this, SLOT(onAssociationEndBCardinalityChanged(QString))); - } - if (is_single_selection) { - if (association->getB().getCardinality() != _end_b_cardinality->text() && !_end_b_cardinality->hasFocus()) { - _end_b_cardinality->setText(association->getB().getCardinality()); - } + m_endBEndName->clear(); + } + if (m_endBEndName->isEnabled() != isSingleSelection) + m_endBEndName->setEnabled(isSingleSelection); + if (m_endBCardinality == 0) { + m_endBCardinality = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Cardinality:"), m_endBCardinality); + connect(m_endBCardinality, SIGNAL(textChanged(QString)), + this, SLOT(onAssociationEndBCardinalityChanged(QString))); + } + if (isSingleSelection) { + if (association->endB().cardinality() != m_endBCardinality->text() && !m_endBCardinality->hasFocus()) + m_endBCardinality->setText(association->endB().cardinality()); } else { - _end_b_cardinality->clear(); - } - if (_end_b_cardinality->isEnabled() != is_single_selection) { - _end_b_cardinality->setEnabled(is_single_selection); - } - if (_end_b_navigable == 0) { - _end_b_navigable = new QCheckBox(tr("Navigable"), _top_widget); - _top_layout->addRow(QString(), _end_b_navigable); - connect(_end_b_navigable, SIGNAL(clicked(bool)), this, SLOT(onAssociationEndBNavigableChanged(bool))); - } - if (is_single_selection) { - if (association->getB().isNavigable() != _end_b_navigable->isChecked()) { - _end_b_navigable->setChecked(association->getB().isNavigable()); - } + m_endBCardinality->clear(); + } + if (m_endBCardinality->isEnabled() != isSingleSelection) + m_endBCardinality->setEnabled(isSingleSelection); + if (m_endBNavigable == 0) { + m_endBNavigable = new QCheckBox(tr("Navigable"), m_topWidget); + m_topLayout->addRow(QString(), m_endBNavigable); + connect(m_endBNavigable, SIGNAL(clicked(bool)), this, SLOT(onAssociationEndBNavigableChanged(bool))); + } + if (isSingleSelection) { + if (association->endB().isNavigable() != m_endBNavigable->isChecked()) + m_endBNavigable->setChecked(association->endB().isNavigable()); } else { - _end_b_navigable->setChecked(false); - } - if (_end_b_navigable->isEnabled() != is_single_selection) { - _end_b_navigable->setEnabled(is_single_selection); - } - if (_end_b_kind == 0) { - _end_b_kind = new QComboBox(_top_widget); - _end_b_kind->addItems(QStringList() << tr("Association") << tr("Aggregation") << tr("Composition")); - _top_layout->addRow(tr("Relationship:"), _end_b_kind); - connect(_end_b_kind, SIGNAL(activated(int)), this, SLOT(onAssociationEndBKindChanged(int))); - } - if (is_single_selection) { - if ((!isValidAssociationKindIndex(_end_a_kind->currentIndex()) || association->getB().getKind() != translateIndexToAssociationKind(_end_b_kind->currentIndex())) - && !_end_b_kind->hasFocus()) { - _end_b_kind->setCurrentIndex(translateAssociationKindToIndex(association->getB().getKind())); + m_endBNavigable->setChecked(false); + } + if (m_endBNavigable->isEnabled() != isSingleSelection) + m_endBNavigable->setEnabled(isSingleSelection); + if (m_endBKind == 0) { + m_endBKind = new QComboBox(m_topWidget); + m_endBKind->addItems(QStringList() << tr("Association") << tr("Aggregation") << tr("Composition")); + m_topLayout->addRow(tr("Relationship:"), m_endBKind); + connect(m_endBKind, SIGNAL(activated(int)), this, SLOT(onAssociationEndBKindChanged(int))); + } + if (isSingleSelection) { + if ((!isValidAssociationKindIndex(m_endAKind->currentIndex()) + || association->endB().kind() != translateIndexToAssociationKind(m_endBKind->currentIndex())) + && !m_endBKind->hasFocus()) { + m_endBKind->setCurrentIndex(translateAssociationKindToIndex(association->endB().kind())); } } else { - _end_b_kind->setCurrentIndex(-1); - } - if (_end_b_kind->isEnabled() != is_single_selection) { - _end_b_kind->setEnabled(is_single_selection); + m_endBKind->setCurrentIndex(-1); } + if (m_endBKind->isEnabled() != isSingleSelection) + m_endBKind->setEnabled(isSingleSelection); } void PropertiesView::MView::visitDElement(const DElement *element) { Q_UNUSED(element); - if (_model_elements.size() > 0 && _model_elements.at(0)) { - _properties_title.clear(); - _model_elements.at(0)->accept(this); + if (m_modelElements.size() > 0 && m_modelElements.at(0)) { + m_propertiesTitle.clear(); + m_modelElements.at(0)->accept(this); #ifdef SHOW_DEBUG_PROPERTIES - if (_separator_line == 0) { - _separator_line = new QFrame(_top_widget); - _separator_line->setFrameShape(QFrame::StyledPanel); - _separator_line->setLineWidth(2); - _separator_line->setMinimumHeight(2); - _top_layout->addRow(_separator_line); + if (m_separatorLine == 0) { + m_separatorLine = new QFrame(m_topWidget); + m_separatorLine->setFrameShape(QFrame::StyledPanel); + m_separatorLine->setLineWidth(2); + m_separatorLine->setMinimumHeight(2); + m_topLayout->addRow(m_separatorLine); } #endif } else { @@ -821,208 +796,198 @@ void PropertiesView::MView::visitDObject(const DObject *object) { visitDElement(object); #ifdef SHOW_DEBUG_PROPERTIES - if (_pos_rect_label == 0) { - _pos_rect_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Position and size:"), _pos_rect_label); - } - _pos_rect_label->setText(QString(QStringLiteral("(%1,%2):(%3,%4)-(%5,%6)")) - .arg(object->getPos().x()) - .arg(object->getPos().y()) - .arg(object->getRect().left()) - .arg(object->getRect().top()) - .arg(object->getRect().right()) - .arg(object->getRect().bottom())); + if (m_posRectLabel == 0) { + m_posRectLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Position and size:"), m_posRectLabel); + } + m_posRectLabel->setText(QString(QStringLiteral("(%1,%2):(%3,%4)-(%5,%6)")) + .arg(object->pos().x()) + .arg(object->pos().y()) + .arg(object->rect().left()) + .arg(object->rect().top()) + .arg(object->rect().right()) + .arg(object->rect().bottom())); #endif - if (_auto_sized_checkbox == 0) { - _auto_sized_checkbox = new QCheckBox(tr("Auto sized"), _top_widget); - _top_layout->addRow(QString(), _auto_sized_checkbox); - connect(_auto_sized_checkbox, SIGNAL(clicked(bool)), this, SLOT(onAutoSizedChanged(bool))); - } - if (!_auto_sized_checkbox->hasFocus()) { - bool auto_sized; - if (haveSameValue(_diagram_elements, &DObject::hasAutoSize, &auto_sized)) { - _auto_sized_checkbox->setChecked(auto_sized); - } else { - _auto_sized_checkbox->setChecked(false); + if (m_autoSizedCheckbox == 0) { + m_autoSizedCheckbox = new QCheckBox(tr("Auto sized"), m_topWidget); + m_topLayout->addRow(QString(), m_autoSizedCheckbox); + connect(m_autoSizedCheckbox, SIGNAL(clicked(bool)), this, SLOT(onAutoSizedChanged(bool))); + } + if (!m_autoSizedCheckbox->hasFocus()) { + bool autoSized; + if (haveSameValue(m_diagramElements, &DObject::isAutoSized, &autoSized)) + m_autoSizedCheckbox->setChecked(autoSized); + else + m_autoSizedCheckbox->setChecked(false); + } + if (m_visualPrimaryRoleSelector == 0) { + m_visualPrimaryRoleSelector = new PaletteBox(m_topWidget); + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleCustom1, QColor()); + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleCustom2, QColor()); + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleCustom3, QColor()); + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleCustom4, QColor()); + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleCustom5, QColor()); + m_topLayout->addRow(tr("Color:"), m_visualPrimaryRoleSelector); + connect(m_visualPrimaryRoleSelector, SIGNAL(activated(int)), this, SLOT(onVisualPrimaryRoleChanged(int))); + } + if (!m_visualPrimaryRoleSelector->hasFocus()) { + StereotypeDisplayVisitor stereotypeDisplayVisitor; + stereotypeDisplayVisitor.setModelController(m_propertiesView->modelController()); + stereotypeDisplayVisitor.setStereotypeController(m_propertiesView->stereotypeController()); + object->accept(&stereotypeDisplayVisitor); + QString shapeId = stereotypeDisplayVisitor.shapeIconId(); + QColor baseColor; + if (!shapeId.isEmpty()) { + StereotypeIcon stereotypeIcon = m_propertiesView->stereotypeController()->findStereotypeIcon(shapeId); + baseColor = stereotypeIcon.baseColor(); } - } - if (_visual_primary_role_selector == 0) { - _visual_primary_role_selector = new PaletteBox(_top_widget); - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_CUSTOM1, QColor()); - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_CUSTOM2, QColor()); - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_CUSTOM3, QColor()); - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_CUSTOM4, QColor()); - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_CUSTOM5, QColor()); - _top_layout->addRow(tr("Color:"), _visual_primary_role_selector); - connect(_visual_primary_role_selector, SIGNAL(activated(int)), this, SLOT(onVisualPrimaryRoleChanged(int))); - } - if (!_visual_primary_role_selector->hasFocus()) { - StereotypeDisplayVisitor stereotype_display_visitor; - stereotype_display_visitor.setModelController(_properties_view->getModelController()); - stereotype_display_visitor.setStereotypeController(_properties_view->getStereotypeController()); - object->accept(&stereotype_display_visitor); - QString shape_id = stereotype_display_visitor.getShapeIconId(); - QColor base_color; - if (!shape_id.isEmpty()) { - StereotypeIcon stereotype_icon = _properties_view->getStereotypeController()->findStereotypeIcon(shape_id); - base_color = stereotype_icon.getBaseColor(); - } - setPrimaryRolePalette(_style_element_type, DObject::PRIMARY_ROLE_NORMAL, base_color); - DObject::VisualPrimaryRole visual_primary_role; - if (haveSameValue(_diagram_elements, &DObject::getVisualPrimaryRole, &visual_primary_role)) { - _visual_primary_role_selector->setCurrentIndex(translateVisualPrimaryRoleToIndex(visual_primary_role)); - } else { - _visual_primary_role_selector->setCurrentIndex(-1); - } - } - if (_visual_secondary_role_selector == 0) { - _visual_secondary_role_selector = new QComboBox(_top_widget); - _visual_secondary_role_selector->addItems(QStringList() << tr("Normal") + setPrimaryRolePalette(m_styleElementType, DObject::PrimaryRoleNormal, baseColor); + DObject::VisualPrimaryRole visualPrimaryRole; + if (haveSameValue(m_diagramElements, &DObject::visualPrimaryRole, &visualPrimaryRole)) + m_visualPrimaryRoleSelector->setCurrentIndex(translateVisualPrimaryRoleToIndex(visualPrimaryRole)); + else + m_visualPrimaryRoleSelector->setCurrentIndex(-1); + } + if (m_visualSecondaryRoleSelector == 0) { + m_visualSecondaryRoleSelector = new QComboBox(m_topWidget); + m_visualSecondaryRoleSelector->addItems(QStringList() << tr("Normal") << tr("Lighter") << tr("Darker") << tr("Soften") << tr("Outline")); - _top_layout->addRow(tr("Role:"), _visual_secondary_role_selector); - connect(_visual_secondary_role_selector, SIGNAL(activated(int)), this, SLOT(onVisualSecondaryRoleChanged(int))); - } - if (!_visual_secondary_role_selector->hasFocus()) { - DObject::VisualSecondaryRole visual_secondary_role; - if (haveSameValue(_diagram_elements, &DObject::getVisualSecondaryRole, &visual_secondary_role)) { - _visual_secondary_role_selector->setCurrentIndex(translateVisualSecondaryRoleToIndex(visual_secondary_role)); - } else { - _visual_secondary_role_selector->setCurrentIndex(-1); - } - } - if (_visual_emphasized_checkbox == 0) { - _visual_emphasized_checkbox = new QCheckBox(tr("Emphasized"), _top_widget); - _top_layout->addRow(QString(), _visual_emphasized_checkbox); - connect(_visual_emphasized_checkbox, SIGNAL(clicked(bool)), this, SLOT(onVisualEmphasizedChanged(bool))); - } - if (!_visual_emphasized_checkbox->hasFocus()) { + m_topLayout->addRow(tr("Role:"), m_visualSecondaryRoleSelector); + connect(m_visualSecondaryRoleSelector, SIGNAL(activated(int)), this, SLOT(onVisualSecondaryRoleChanged(int))); + } + if (!m_visualSecondaryRoleSelector->hasFocus()) { + DObject::VisualSecondaryRole visualSecondaryRole; + if (haveSameValue(m_diagramElements, &DObject::visualSecondaryRole, &visualSecondaryRole)) + m_visualSecondaryRoleSelector->setCurrentIndex(translateVisualSecondaryRoleToIndex(visualSecondaryRole)); + else + m_visualSecondaryRoleSelector->setCurrentIndex(-1); + } + if (m_visualEmphasizedCheckbox == 0) { + m_visualEmphasizedCheckbox = new QCheckBox(tr("Emphasized"), m_topWidget); + m_topLayout->addRow(QString(), m_visualEmphasizedCheckbox); + connect(m_visualEmphasizedCheckbox, SIGNAL(clicked(bool)), this, SLOT(onVisualEmphasizedChanged(bool))); + } + if (!m_visualEmphasizedCheckbox->hasFocus()) { bool emphasized; - if (haveSameValue(_diagram_elements, &DObject::isVisualEmphasized, &emphasized)) { - _visual_emphasized_checkbox->setChecked(emphasized); - } else { - _visual_emphasized_checkbox->setChecked(false); - } - } - if (_stereotype_display_selector == 0) { - _stereotype_display_selector = new QComboBox(_top_widget); - _stereotype_display_selector->addItems(QStringList() << tr("Smart") << tr("None") << tr("Label") + if (haveSameValue(m_diagramElements, &DObject::isVisualEmphasized, &emphasized)) + m_visualEmphasizedCheckbox->setChecked(emphasized); + else + m_visualEmphasizedCheckbox->setChecked(false); + } + if (m_stereotypeDisplaySelector == 0) { + m_stereotypeDisplaySelector = new QComboBox(m_topWidget); + m_stereotypeDisplaySelector->addItems(QStringList() << tr("Smart") << tr("None") << tr("Label") << tr("Decoration") << tr("Icon")); - _top_layout->addRow(tr("Stereotype display:"), _stereotype_display_selector); - connect(_stereotype_display_selector, SIGNAL(activated(int)), this, SLOT(onStereotypeDisplayChanged(int))); + m_topLayout->addRow(tr("Stereotype display:"), m_stereotypeDisplaySelector); + connect(m_stereotypeDisplaySelector, SIGNAL(activated(int)), this, SLOT(onStereotypeDisplayChanged(int))); } - if (!_stereotype_display_selector->hasFocus()) { - DObject::StereotypeDisplay stereotype_display; - if (haveSameValue(_diagram_elements, &DObject::getStereotypeDisplay, &stereotype_display)) { - _stereotype_display_selector->setCurrentIndex(translateStereotypeDisplayToIndex(stereotype_display)); - } else { - _stereotype_display_selector->setCurrentIndex(-1); - } + if (!m_stereotypeDisplaySelector->hasFocus()) { + DObject::StereotypeDisplay stereotypeDisplay; + if (haveSameValue(m_diagramElements, &DObject::stereotypeDisplay, &stereotypeDisplay)) + m_stereotypeDisplaySelector->setCurrentIndex(translateStereotypeDisplayToIndex(stereotypeDisplay)); + else + m_stereotypeDisplaySelector->setCurrentIndex(-1); } #ifdef SHOW_DEBUG_PROPERTIES - if (_depth_label == 0) { - _depth_label = new QLabel(_top_widget); - _top_layout->addRow(tr("Depth:"), _depth_label); + if (m_depthLabel == 0) { + m_depthLabel = new QLabel(m_topWidget); + m_topLayout->addRow(tr("Depth:"), m_depthLabel); } - _depth_label->setText(QString::number(object->getDepth())); + m_depthLabel->setText(QString::number(object->depth())); #endif } void PropertiesView::MView::visitDPackage(const DPackage *package) { - setTitle<DPackage>(_diagram_elements, tr("Package"), tr("Packages")); - setStereotypeIconElement(StereotypeIcon::ELEMENT_PACKAGE); - setStyleElementType(StyleEngine::TYPE_PACKAGE); + setTitle<DPackage>(m_diagramElements, tr("Package"), tr("Packages")); + setStereotypeIconElement(StereotypeIcon::ElementPackage); + setStyleElementType(StyleEngine::TypePackage); visitDObject(package); } void PropertiesView::MView::visitDClass(const DClass *klass) { - setTitle<DClass>(_diagram_elements, tr("Class"), tr("Classes")); - setStereotypeIconElement(StereotypeIcon::ELEMENT_CLASS); - setStyleElementType(StyleEngine::TYPE_CLASS); + setTitle<DClass>(m_diagramElements, tr("Class"), tr("Classes")); + setStereotypeIconElement(StereotypeIcon::ElementClass); + setStyleElementType(StyleEngine::TypeClass); visitDObject(klass); - if (_template_display_selector == 0) { - _template_display_selector = new QComboBox(_top_widget); - _template_display_selector->addItems(QStringList() << tr("Smart") << tr("Box") << tr("Angle Brackets")); - _top_layout->addRow(tr("Template display:"), _template_display_selector); - connect(_template_display_selector, SIGNAL(activated(int)), this, SLOT(onTemplateDisplayChanged(int))); - } - if (!_template_display_selector->hasFocus()) { - DClass::TemplateDisplay template_display; - if (haveSameValue(_diagram_elements, &DClass::getTemplateDisplay, &template_display)) { - _template_display_selector->setCurrentIndex(translateTemplateDisplayToIndex(template_display)); - } else { - _template_display_selector->setCurrentIndex(-1); - } + if (m_templateDisplaySelector == 0) { + m_templateDisplaySelector = new QComboBox(m_topWidget); + m_templateDisplaySelector->addItems(QStringList() << tr("Smart") << tr("Box") << tr("Angle Brackets")); + m_topLayout->addRow(tr("Template display:"), m_templateDisplaySelector); + connect(m_templateDisplaySelector, SIGNAL(activated(int)), this, SLOT(onTemplateDisplayChanged(int))); } - if (_show_all_members_checkbox == 0) { - _show_all_members_checkbox = new QCheckBox(tr("Show members"), _top_widget); - _top_layout->addRow(QString(), _show_all_members_checkbox); - connect(_show_all_members_checkbox, SIGNAL(clicked(bool)), this, SLOT(onShowAllMembersChanged(bool))); + if (!m_templateDisplaySelector->hasFocus()) { + DClass::TemplateDisplay templateDisplay; + if (haveSameValue(m_diagramElements, &DClass::templateDisplay, &templateDisplay)) + m_templateDisplaySelector->setCurrentIndex(translateTemplateDisplayToIndex(templateDisplay)); + else + m_templateDisplaySelector->setCurrentIndex(-1); } - if (!_show_all_members_checkbox->hasFocus()) { - bool show_all_members; - if (haveSameValue(_diagram_elements, &DClass::getShowAllMembers, &show_all_members)) { - _show_all_members_checkbox->setChecked(show_all_members); - } else { - _show_all_members_checkbox->setChecked(false); - } + if (m_showAllMembersCheckbox == 0) { + m_showAllMembersCheckbox = new QCheckBox(tr("Show members"), m_topWidget); + m_topLayout->addRow(QString(), m_showAllMembersCheckbox); + connect(m_showAllMembersCheckbox, SIGNAL(clicked(bool)), this, SLOT(onShowAllMembersChanged(bool))); + } + if (!m_showAllMembersCheckbox->hasFocus()) { + bool showAllMembers; + if (haveSameValue(m_diagramElements, &DClass::showAllMembers, &showAllMembers)) + m_showAllMembersCheckbox->setChecked(showAllMembers); + else + m_showAllMembersCheckbox->setChecked(false); } } void PropertiesView::MView::visitDComponent(const DComponent *component) { - setTitle<DComponent>(_diagram_elements, tr("Component"), tr("Components")); - setStereotypeIconElement(StereotypeIcon::ELEMENT_COMPONENT); - setStyleElementType(StyleEngine::TYPE_COMPONENT); + setTitle<DComponent>(m_diagramElements, tr("Component"), tr("Components")); + setStereotypeIconElement(StereotypeIcon::ElementComponent); + setStyleElementType(StyleEngine::TypeComponent); visitDObject(component); - if (_plain_shape_checkbox == 0) { - _plain_shape_checkbox = new QCheckBox(tr("Plain shape"), _top_widget); - _top_layout->addRow(QString(), _plain_shape_checkbox); - connect(_plain_shape_checkbox, SIGNAL(clicked(bool)), this, SLOT(onPlainShapeChanged(bool))); - } - if (!_plain_shape_checkbox->hasFocus()) { - bool plain_shape; - if (haveSameValue(_diagram_elements, &DComponent::getPlainShape, &plain_shape)) { - _plain_shape_checkbox->setChecked(plain_shape); - } else { - _plain_shape_checkbox->setChecked(false); - } + if (m_plainShapeCheckbox == 0) { + m_plainShapeCheckbox = new QCheckBox(tr("Plain shape"), m_topWidget); + m_topLayout->addRow(QString(), m_plainShapeCheckbox); + connect(m_plainShapeCheckbox, SIGNAL(clicked(bool)), this, SLOT(onPlainShapeChanged(bool))); + } + if (!m_plainShapeCheckbox->hasFocus()) { + bool plainShape; + if (haveSameValue(m_diagramElements, &DComponent::isPlainShape, &plainShape)) + m_plainShapeCheckbox->setChecked(plainShape); + else + m_plainShapeCheckbox->setChecked(false); } } void PropertiesView::MView::visitDDiagram(const DDiagram *diagram) { - setTitle<DDiagram>(_diagram_elements, tr("Diagram"), tr("Diagrams")); - setStyleElementType(StyleEngine::TYPE_OTHER); + setTitle<DDiagram>(m_diagramElements, tr("Diagram"), tr("Diagrams")); + setStyleElementType(StyleEngine::TypeOther); visitDObject(diagram); } void PropertiesView::MView::visitDItem(const DItem *item) { - setTitle<DItem>(_diagram_elements, tr("Item"), tr("Items")); - setStereotypeIconElement(StereotypeIcon::ELEMENT_ITEM); - setStyleElementType(StyleEngine::TYPE_ITEM); + setTitle<DItem>(m_diagramElements, tr("Item"), tr("Items")); + setStereotypeIconElement(StereotypeIcon::ElementItem); + setStyleElementType(StyleEngine::TypeItem); visitDObject(item); - QList<DItem *> selection = filter<DItem>(_diagram_elements); - bool is_single_selection = selection.size() == 1; + QList<DItem *> selection = filter<DItem>(m_diagramElements); + bool isSingleSelection = selection.size() == 1; if (item->isShapeEditable()) { - if (_item_shape_edit == 0) { - _item_shape_edit = new QLineEdit(_top_widget); - _top_layout->addRow(tr("Shape:"), _item_shape_edit); - connect(_item_shape_edit, SIGNAL(textChanged(QString)), this, SLOT(onItemShapeChanged(QString))); + if (m_itemShapeEdit == 0) { + m_itemShapeEdit = new QLineEdit(m_topWidget); + m_topLayout->addRow(tr("Shape:"), m_itemShapeEdit); + connect(m_itemShapeEdit, SIGNAL(textChanged(QString)), this, SLOT(onItemShapeChanged(QString))); } - if (is_single_selection) { - if (item->getShape() != _item_shape_edit->text() && !_item_shape_edit->hasFocus()) { - _item_shape_edit->setText(item->getShape()); - } + if (isSingleSelection) { + if (item->shape() != m_itemShapeEdit->text() && !m_itemShapeEdit->hasFocus()) + m_itemShapeEdit->setText(item->shape()); } else { - _item_shape_edit->clear(); - } - if (_item_shape_edit->isEnabled() != is_single_selection) { - _item_shape_edit->setEnabled(is_single_selection); + m_itemShapeEdit->clear(); } + if (m_itemShapeEdit->isEnabled() != isSingleSelection) + m_itemShapeEdit->setEnabled(isSingleSelection); } } @@ -1033,339 +998,368 @@ void PropertiesView::MView::visitDRelation(const DRelation *relation) void PropertiesView::MView::visitDInheritance(const DInheritance *inheritance) { - setTitle<DInheritance>(_diagram_elements, tr("Inheritance"), tr("Inheritances")); + setTitle<DInheritance>(m_diagramElements, tr("Inheritance"), tr("Inheritances")); visitDRelation(inheritance); } void PropertiesView::MView::visitDDependency(const DDependency *dependency) { - setTitle<DDependency>(_diagram_elements, tr("Dependency"), tr("Dependencies")); + setTitle<DDependency>(m_diagramElements, tr("Dependency"), tr("Dependencies")); visitDRelation(dependency); } void PropertiesView::MView::visitDAssociation(const DAssociation *association) { - setTitle<DAssociation>(_diagram_elements, tr("Association"), tr("Associations")); + setTitle<DAssociation>(m_diagramElements, tr("Association"), tr("Associations")); visitDRelation(association); } void PropertiesView::MView::visitDAnnotation(const DAnnotation *annotation) { - setTitle<DAnnotation>(_diagram_elements, tr("Annotation"), tr("Annotations")); + setTitle<DAnnotation>(m_diagramElements, tr("Annotation"), tr("Annotations")); visitDElement(annotation); - if (_annotation_auto_width_checkbox == 0) { - _annotation_auto_width_checkbox = new QCheckBox(tr("Auto width"), _top_widget); - _top_layout->addRow(QString(), _annotation_auto_width_checkbox); - connect(_annotation_auto_width_checkbox, SIGNAL(clicked(bool)), this, SLOT(onAutoWidthChanged(bool))); - } - if (!_annotation_auto_width_checkbox->hasFocus()) { - bool auto_sized; - if (haveSameValue(_diagram_elements, &DAnnotation::hasAutoSize, &auto_sized)) { - _annotation_auto_width_checkbox->setChecked(auto_sized); - } else { - _annotation_auto_width_checkbox->setChecked(false); - } - } - if (_annotation_visual_role_selector == 0) { - _annotation_visual_role_selector = new QComboBox(_top_widget); - _annotation_visual_role_selector->addItems(QStringList() << tr("Normal") << tr("Title") << tr("Subtitle") << tr("Emphasized") << tr("Soften") << tr("Footnote")); - _top_layout->addRow(tr("Role:"), _annotation_visual_role_selector); - connect(_annotation_visual_role_selector, SIGNAL(activated(int)), this, SLOT(onAnnotationVisualRoleChanged(int))); - } - if (!_annotation_visual_role_selector->hasFocus()) { - DAnnotation::VisualRole visual_role; - if (haveSameValue(_diagram_elements, &DAnnotation::getVisualRole, &visual_role)) { - _annotation_visual_role_selector->setCurrentIndex(translateAnnotationVisualRoleToIndex(visual_role)); - } else { - _annotation_visual_role_selector->setCurrentIndex(-1); - } + if (m_annotationAutoWidthCheckbox == 0) { + m_annotationAutoWidthCheckbox = new QCheckBox(tr("Auto width"), m_topWidget); + m_topLayout->addRow(QString(), m_annotationAutoWidthCheckbox); + connect(m_annotationAutoWidthCheckbox, SIGNAL(clicked(bool)), this, SLOT(onAutoWidthChanged(bool))); + } + if (!m_annotationAutoWidthCheckbox->hasFocus()) { + bool autoSized; + if (haveSameValue(m_diagramElements, &DAnnotation::isAutoSized, &autoSized)) + m_annotationAutoWidthCheckbox->setChecked(autoSized); + else + m_annotationAutoWidthCheckbox->setChecked(false); + } + if (m_annotationVisualRoleSelector == 0) { + m_annotationVisualRoleSelector = new QComboBox(m_topWidget); + m_annotationVisualRoleSelector->addItems(QStringList() + << tr("Normal") << tr("Title") << tr("Subtitle") + << tr("Emphasized") << tr("Soften") << tr("Footnote")); + m_topLayout->addRow(tr("Role:"), m_annotationVisualRoleSelector); + connect(m_annotationVisualRoleSelector, SIGNAL(activated(int)), this, SLOT(onAnnotationVisualRoleChanged(int))); + } + if (!m_annotationVisualRoleSelector->hasFocus()) { + DAnnotation::VisualRole visualRole; + if (haveSameValue(m_diagramElements, &DAnnotation::visualRole, &visualRole)) + m_annotationVisualRoleSelector->setCurrentIndex(translateAnnotationVisualRoleToIndex(visualRole)); + else + m_annotationVisualRoleSelector->setCurrentIndex(-1); } } void PropertiesView::MView::visitDBoundary(const DBoundary *boundary) { - setTitle<DBoundary>(_diagram_elements, tr("Boundary"), tr("Boundaries")); + setTitle<DBoundary>(m_diagramElements, tr("Boundary"), tr("Boundaries")); visitDElement(boundary); } void PropertiesView::MView::onStereotypesChanged(const QString &stereotypes) { - QList<QString> set = _stereotypes_controller->fromString(stereotypes); - assignModelElement<MElement, QList<QString> >(_model_elements, SELECTION_MULTI, set, &MElement::getStereotypes, &MElement::setStereotypes); + QList<QString> set = m_stereotypesController->fromString(stereotypes); + assignModelElement<MElement, QList<QString> >(m_modelElements, SelectionMulti, set, + &MElement::stereotypes, &MElement::setStereotypes); } void PropertiesView::MView::onObjectNameChanged(const QString &name) { - assignModelElement<MObject, QString>(_model_elements, SELECTION_SINGLE, name, &MObject::getName, &MObject::setName); + assignModelElement<MObject, QString>(m_modelElements, SelectionSingle, name, &MObject::name, &MObject::setName); } -void PropertiesView::MView::onNamespaceChanged(const QString &name_space) +void PropertiesView::MView::onNamespaceChanged(const QString ¨Namespace) { - assignModelElement<MClass, QString>(_model_elements, SELECTION_MULTI, name_space, &MClass::getNamespace, &MClass::setNamespace); + assignModelElement<MClass, QString>(m_modelElements, SelectionMulti, umlNamespace, + &MClass::umlNamespace, &MClass::setUmlNamespace); } -void PropertiesView::MView::onTemplateParametersChanged(const QString &template_parameters) +void PropertiesView::MView::onTemplateParametersChanged(const QString &templateParameters) { - QList<QString> template_parameters_list = splitTemplateParameters(template_parameters); - assignModelElement<MClass, QList<QString> >(_model_elements, SELECTION_SINGLE, template_parameters_list, &MClass::getTemplateParameters, &MClass::setTemplateParameters); + QList<QString> templateParametersList = splitTemplateParameters(templateParameters); + assignModelElement<MClass, QList<QString> >(m_modelElements, SelectionSingle, templateParametersList, + &MClass::templateParameters, &MClass::setTemplateParameters); } void PropertiesView::MView::onClassMembersStatusChanged(bool valid) { - if (valid) { - _class_members_status_label->clear(); - } else { - _class_members_status_label->setText(tr("<font color=red>Invalid syntax!</font>")); - } + if (valid) + m_classMembersStatusLabel->clear(); + else + m_classMembersStatusLabel->setText(tr("<font color=red>Invalid syntax!</font>")); } void PropertiesView::MView::onParseClassMembers() { - _class_members_edit->reparse(); + m_classMembersEdit->reparse(); } -void PropertiesView::MView::onClassMembersChanged(QList<MClassMember> &class_members) +void PropertiesView::MView::onClassMembersChanged(QList<MClassMember> &classMembers) { - assignModelElement<MClass, QList<MClassMember> >(_model_elements, SELECTION_SINGLE, class_members, &MClass::getMembers, &MClass::setMembers); + assignModelElement<MClass, QList<MClassMember> >(m_modelElements, SelectionSingle, classMembers, + &MClass::members, &MClass::setMembers); } void PropertiesView::MView::onItemVarietyChanged(const QString &variety) { - assignModelElement<MItem, QString>(_model_elements, SELECTION_SINGLE, variety, &MItem::getVariety, &MItem::setVariety); + assignModelElement<MItem, QString>(m_modelElements, SelectionSingle, variety, &MItem::variety, &MItem::setVariety); } void PropertiesView::MView::onRelationNameChanged(const QString &name) { - assignModelElement<MRelation, QString>(_model_elements, SELECTION_SINGLE, name, &MRelation::getName, &MRelation::setName); + assignModelElement<MRelation, QString>(m_modelElements, SelectionSingle, name, + &MRelation::name, &MRelation::setName); } -void PropertiesView::MView::onDependencyDirectionChanged(int direction_index) +void PropertiesView::MView::onDependencyDirectionChanged(int directionIndex) { - MDependency::Direction direction = translateIndexToDirection(direction_index); - assignModelElement<MDependency, MDependency::Direction>(_model_elements, SELECTION_SINGLE, direction, &MDependency::getDirection, &MDependency::setDirection); + MDependency::Direction direction = translateIndexToDirection(directionIndex); + assignModelElement<MDependency, MDependency::Direction>( + m_modelElements, SelectionSingle, direction, &MDependency::direction, &MDependency::setDirection); } void PropertiesView::MView::onAssociationEndANameChanged(const QString &name) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>(_model_elements, SELECTION_SINGLE, name, &MAssociation::getA, &MAssociation::setA, &MAssociationEnd::getName, &MAssociationEnd::setName); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>( + m_modelElements, SelectionSingle, name, &MAssociation::endA, &MAssociation::setEndA, + &MAssociationEnd::name, &MAssociationEnd::setName); } void PropertiesView::MView::onAssociationEndACardinalityChanged(const QString &cardinality) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>(_model_elements, SELECTION_SINGLE, cardinality, &MAssociation::getA, &MAssociation::setA, &MAssociationEnd::getCardinality, &MAssociationEnd::setCardinality); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>( + m_modelElements, SelectionSingle, cardinality, &MAssociation::endA, &MAssociation::setEndA, + &MAssociationEnd::cardinality, &MAssociationEnd::setCardinality); } void PropertiesView::MView::onAssociationEndANavigableChanged(bool navigable) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, bool>(_model_elements, SELECTION_SINGLE, navigable, &MAssociation::getA, &MAssociation::setA, &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, bool>( + m_modelElements, SelectionSingle, navigable, &MAssociation::endA, &MAssociation::setEndA, + &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable); } -void PropertiesView::MView::onAssociationEndAKindChanged(int kind_index) +void PropertiesView::MView::onAssociationEndAKindChanged(int kindIndex) { - MAssociationEnd::Kind kind = translateIndexToAssociationKind(kind_index); - assignEmbeddedModelElement<MAssociation, MAssociationEnd, MAssociationEnd::Kind>(_model_elements, SELECTION_SINGLE, kind, &MAssociation::getA, &MAssociation::setA, &MAssociationEnd::getKind, &MAssociationEnd::setKind); + MAssociationEnd::Kind kind = translateIndexToAssociationKind(kindIndex); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, MAssociationEnd::Kind>( + m_modelElements, SelectionSingle, kind, &MAssociation::endA, &MAssociation::setEndA, + &MAssociationEnd::kind, &MAssociationEnd::setKind); } void PropertiesView::MView::onAssociationEndBNameChanged(const QString &name) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>(_model_elements, SELECTION_SINGLE, name, &MAssociation::getB, &MAssociation::setB, &MAssociationEnd::getName, &MAssociationEnd::setName); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>( + m_modelElements, SelectionSingle, name, &MAssociation::endB, &MAssociation::setEndB, + &MAssociationEnd::name, &MAssociationEnd::setName); } void PropertiesView::MView::onAssociationEndBCardinalityChanged(const QString &cardinality) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>(_model_elements, SELECTION_SINGLE, cardinality, &MAssociation::getB, &MAssociation::setB, &MAssociationEnd::getCardinality, &MAssociationEnd::setCardinality); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, QString>( + m_modelElements, SelectionSingle, cardinality, &MAssociation::endB, &MAssociation::setEndB, + &MAssociationEnd::cardinality, &MAssociationEnd::setCardinality); } void PropertiesView::MView::onAssociationEndBNavigableChanged(bool navigable) { - assignEmbeddedModelElement<MAssociation, MAssociationEnd, bool>(_model_elements, SELECTION_SINGLE, navigable, &MAssociation::getB, &MAssociation::setB, &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, bool>( + m_modelElements, SelectionSingle, navigable, &MAssociation::endB, &MAssociation::setEndB, + &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable); } -void PropertiesView::MView::onAssociationEndBKindChanged(int kind_index) +void PropertiesView::MView::onAssociationEndBKindChanged(int kindIndex) { - MAssociationEnd::Kind kind = translateIndexToAssociationKind(kind_index); - assignEmbeddedModelElement<MAssociation, MAssociationEnd, MAssociationEnd::Kind>(_model_elements, SELECTION_SINGLE, kind, &MAssociation::getB, &MAssociation::setB, &MAssociationEnd::getKind, &MAssociationEnd::setKind); + MAssociationEnd::Kind kind = translateIndexToAssociationKind(kindIndex); + assignEmbeddedModelElement<MAssociation, MAssociationEnd, MAssociationEnd::Kind>( + m_modelElements, SelectionSingle, kind, &MAssociation::endB, &MAssociation::setEndB, + &MAssociationEnd::kind, &MAssociationEnd::setKind); } -void PropertiesView::MView::onAutoSizedChanged(bool auto_sized) +void PropertiesView::MView::onAutoSizedChanged(bool autoSized) { - assignModelElement<DObject, bool>(_diagram_elements, SELECTION_MULTI, auto_sized, &DObject::hasAutoSize, &DObject::setAutoSize); + assignModelElement<DObject, bool>(m_diagramElements, SelectionMulti, autoSized, + &DObject::isAutoSized, &DObject::setAutoSized); } -void PropertiesView::MView::onVisualPrimaryRoleChanged(int visual_role_index) +void PropertiesView::MView::onVisualPrimaryRoleChanged(int visualRoleIndex) { - DObject::VisualPrimaryRole visual_role = translateIndexToVisualPrimaryRole(visual_role_index); - assignModelElement<DObject, DObject::VisualPrimaryRole>(_diagram_elements, SELECTION_MULTI, visual_role, &DObject::getVisualPrimaryRole, &DObject::setVisualPrimaryRole); + DObject::VisualPrimaryRole visualRole = translateIndexToVisualPrimaryRole(visualRoleIndex); + assignModelElement<DObject, DObject::VisualPrimaryRole>( + m_diagramElements, SelectionMulti, visualRole, + &DObject::visualPrimaryRole, &DObject::setVisualPrimaryRole); } -void PropertiesView::MView::onVisualSecondaryRoleChanged(int visual_role_index) +void PropertiesView::MView::onVisualSecondaryRoleChanged(int visualRoleIndex) { - DObject::VisualSecondaryRole visual_role = translateIndexToVisualSecondaryRole(visual_role_index); - assignModelElement<DObject, DObject::VisualSecondaryRole>(_diagram_elements, SELECTION_MULTI, visual_role, &DObject::getVisualSecondaryRole, &DObject::setVisualSecondaryRole); + DObject::VisualSecondaryRole visualRole = translateIndexToVisualSecondaryRole(visualRoleIndex); + assignModelElement<DObject, DObject::VisualSecondaryRole>( + m_diagramElements, SelectionMulti, visualRole, + &DObject::visualSecondaryRole, &DObject::setVisualSecondaryRole); } -void PropertiesView::MView::onVisualEmphasizedChanged(bool visual_emphasized) +void PropertiesView::MView::onVisualEmphasizedChanged(bool visualEmphasized) { - assignModelElement<DObject, bool>(_diagram_elements, SELECTION_MULTI, visual_emphasized, &DObject::isVisualEmphasized, &DObject::setVisualEmphasized); + assignModelElement<DObject, bool>(m_diagramElements, SelectionMulti, visualEmphasized, + &DObject::isVisualEmphasized, &DObject::setVisualEmphasized); } -void PropertiesView::MView::onStereotypeDisplayChanged(int stereotype_display_index) +void PropertiesView::MView::onStereotypeDisplayChanged(int stereotypeDisplayIndex) { - DObject::StereotypeDisplay stereotype_display = translateIndexToStereotypeDisplay(stereotype_display_index); - assignModelElement<DObject, DObject::StereotypeDisplay>(_diagram_elements, SELECTION_MULTI, stereotype_display, &DObject::getStereotypeDisplay, &DObject::setStereotypeDisplay); + DObject::StereotypeDisplay stereotypeDisplay = translateIndexToStereotypeDisplay(stereotypeDisplayIndex); + assignModelElement<DObject, DObject::StereotypeDisplay>( + m_diagramElements, SelectionMulti, stereotypeDisplay, + &DObject::stereotypeDisplay, &DObject::setStereotypeDisplay); } -void PropertiesView::MView::onTemplateDisplayChanged(int template_display_index) +void PropertiesView::MView::onTemplateDisplayChanged(int templateDisplayIndex) { - DClass::TemplateDisplay template_display = translateIndexToTemplateDisplay(template_display_index); - assignModelElement<DClass, DClass::TemplateDisplay>(_diagram_elements, SELECTION_MULTI, template_display, &DClass::getTemplateDisplay, &DClass::setTemplateDisplay); + DClass::TemplateDisplay templateDisplay = translateIndexToTemplateDisplay(templateDisplayIndex); + assignModelElement<DClass, DClass::TemplateDisplay>( + m_diagramElements, SelectionMulti, templateDisplay, + &DClass::templateDisplay, &DClass::setTemplateDisplay); } -void PropertiesView::MView::onShowAllMembersChanged(bool show_all_members) +void PropertiesView::MView::onShowAllMembersChanged(bool showAllMembers) { - assignModelElement<DClass, bool>(_diagram_elements, SELECTION_MULTI, show_all_members, &DClass::getShowAllMembers, &DClass::setShowAllMembers); + assignModelElement<DClass, bool>(m_diagramElements, SelectionMulti, showAllMembers, + &DClass::showAllMembers, &DClass::setShowAllMembers); } -void PropertiesView::MView::onPlainShapeChanged(bool plain_shape) +void PropertiesView::MView::onPlainShapeChanged(bool plainShape) { - assignModelElement<DComponent, bool>(_diagram_elements, SELECTION_MULTI, plain_shape, &DComponent::getPlainShape, &DComponent::setPlainShape); + assignModelElement<DComponent, bool>(m_diagramElements, SelectionMulti, plainShape, + &DComponent::isPlainShape, &DComponent::setPlainShape); } void PropertiesView::MView::onItemShapeChanged(const QString &shape) { - assignModelElement<DItem, QString>(_diagram_elements, SELECTION_SINGLE, shape, &DItem::getShape, &DItem::setShape); + assignModelElement<DItem, QString>(m_diagramElements, SelectionSingle, shape, &DItem::shape, &DItem::setShape); } -void PropertiesView::MView::onAutoWidthChanged(bool auto_widthed) +void PropertiesView::MView::onAutoWidthChanged(bool autoWidthed) { - assignModelElement<DAnnotation, bool>(_diagram_elements, SELECTION_MULTI, auto_widthed, &DAnnotation::hasAutoSize, &DAnnotation::setAutoSize); + assignModelElement<DAnnotation, bool>(m_diagramElements, SelectionMulti, autoWidthed, + &DAnnotation::isAutoSized, &DAnnotation::setAutoSized); } -void PropertiesView::MView::onAnnotationVisualRoleChanged(int visual_role_index) +void PropertiesView::MView::onAnnotationVisualRoleChanged(int visualRoleIndex) { - DAnnotation::VisualRole visual_role = translateIndexToAnnotationVisualRole((visual_role_index)); - assignModelElement<DAnnotation, DAnnotation::VisualRole>(_diagram_elements, SELECTION_MULTI, visual_role, &DAnnotation::getVisualRole, &DAnnotation::setVisualRole); + DAnnotation::VisualRole visualRole = translateIndexToAnnotationVisualRole((visualRoleIndex)); + assignModelElement<DAnnotation, DAnnotation::VisualRole>( + m_diagramElements, SelectionMulti, visualRole, &DAnnotation::visualRole, &DAnnotation::setVisualRole); } void PropertiesView::MView::prepare() { - QMT_CHECK(!_properties_title.isEmpty()); - if (_top_widget == 0) { - _top_widget = new QWidget(); - _top_layout = new QFormLayout(_top_widget); - _top_widget->setLayout(_top_layout); + QMT_CHECK(!m_propertiesTitle.isEmpty()); + if (m_topWidget == 0) { + m_topWidget = new QWidget(); + m_topLayout = new QFormLayout(m_topWidget); + m_topWidget->setLayout(m_topLayout); } - if (_class_name_label == 0) { - _class_name_label = new QLabel(); - _top_layout->addRow(_class_name_label); - } - QString title(QStringLiteral("<b>") + _properties_title + QStringLiteral("</b>")); - if (_class_name_label->text() != title) { - _class_name_label->setText(title); + if (m_classNameLabel == 0) { + m_classNameLabel = new QLabel(); + m_topLayout->addRow(m_classNameLabel); } + QString title(QStringLiteral("<b>") + m_propertiesTitle + QStringLiteral("</b>")); + if (m_classNameLabel->text() != title) + m_classNameLabel->setText(title); } template<class T, class V> -void PropertiesView::MView::setTitle(const QList<V *> &elements, const QString &singular_title, const QString &plural_title) +void PropertiesView::MView::setTitle(const QList<V *> &elements, + const QString &singularTitle, const QString &pluralTitle) { QList<T *> filtered = filter<T>(elements); if (filtered.size() == elements.size()) { - if (elements.size() == 1) { - _properties_title = singular_title; - } else { - _properties_title = plural_title; - } + if (elements.size() == 1) + m_propertiesTitle = singularTitle; + else + m_propertiesTitle = pluralTitle; } else { - _properties_title = tr("Multi-Selection"); + m_propertiesTitle = tr("Multi-Selection"); } } template<class T, class V> -void PropertiesView::MView::setTitle(const MItem *item, const QList<V *> &elements, const QString &singular_title, const QString &plural_title) +void PropertiesView::MView::setTitle(const MItem *item, const QList<V *> &elements, + const QString &singularTitle, const QString &pluralTitle) { - if (_properties_title.isEmpty()) { + if (m_propertiesTitle.isEmpty()) { QList<T *> filtered = filter<T>(elements); if (filtered.size() == elements.size()) { if (elements.size() == 1) { if (item && !item->isVarietyEditable()) { - QString stereotype_icon_id = _properties_view->getStereotypeController()->findStereotypeIconId(StereotypeIcon::ELEMENT_ITEM, QStringList() << item->getVariety()); - if (!stereotype_icon_id.isEmpty()) { - StereotypeIcon stereotype_icon = _properties_view->getStereotypeController()->findStereotypeIcon(stereotype_icon_id); - _properties_title = stereotype_icon.getTitle(); + QString stereotypeIconId = m_propertiesView->stereotypeController()->findStereotypeIconId(StereotypeIcon::ElementItem, QStringList() << item->variety()); + if (!stereotypeIconId.isEmpty()) { + StereotypeIcon stereotypeIcon = m_propertiesView->stereotypeController()->findStereotypeIcon(stereotypeIconId); + m_propertiesTitle = stereotypeIcon.title(); } } - if (_properties_title.isEmpty()) { - _properties_title = singular_title; - } + if (m_propertiesTitle.isEmpty()) + m_propertiesTitle = singularTitle; } else { - _properties_title = plural_title; + m_propertiesTitle = pluralTitle; } } else { - _properties_title = tr("Multi-Selection"); + m_propertiesTitle = tr("Multi-Selection"); } } } -void PropertiesView::MView::setStereotypeIconElement(StereotypeIcon::Element stereotype_element) +void PropertiesView::MView::setStereotypeIconElement(StereotypeIcon::Element stereotypeElement) { - if (_stereotype_element == StereotypeIcon::ELEMENT_ANY) { - _stereotype_element = stereotype_element; - } + if (m_stereotypeElement == StereotypeIcon::ElementAny) + m_stereotypeElement = stereotypeElement; } -void PropertiesView::MView::setStyleElementType(StyleEngine::ElementType element_type) +void PropertiesView::MView::setStyleElementType(StyleEngine::ElementType elementType) { - if (_style_element_type == StyleEngine::TYPE_OTHER) { - _style_element_type = element_type; - } + if (m_styleElementType == StyleEngine::TypeOther) + m_styleElementType = elementType; } -void PropertiesView::MView::setPrimaryRolePalette(StyleEngine::ElementType element_type, DObject::VisualPrimaryRole visual_primary_role, const QColor &base_color) +void PropertiesView::MView::setPrimaryRolePalette(StyleEngine::ElementType elementType, + DObject::VisualPrimaryRole visualPrimaryRole, const QColor &baseColor) { - int index = translateVisualPrimaryRoleToIndex(visual_primary_role); - const Style *style = _properties_view->getStyleController()->adaptObjectStyle(element_type, ObjectVisuals(visual_primary_role, DObject::SECONDARY_ROLE_NONE, false, base_color, 0)); - _visual_primary_role_selector->setBrush(index, style->getFillBrush()); - _visual_primary_role_selector->setLinePen(index, style->getLinePen()); + int index = translateVisualPrimaryRoleToIndex(visualPrimaryRole); + const Style *style = m_propertiesView->styleController()->adaptObjectStyle(elementType, ObjectVisuals(visualPrimaryRole, DObject::SecondaryRoleNone, false, baseColor, 0)); + m_visualPrimaryRoleSelector->setBrush(index, style->fillBrush()); + m_visualPrimaryRoleSelector->setLinePen(index, style->linePen()); } -void PropertiesView::MView::setEndAName(const QString &end_a_name) +void PropertiesView::MView::setEndAName(const QString &endAName) { - if (_end_a_name.isEmpty()) { - _end_a_name = end_a_name; - } + if (m_endAName.isEmpty()) + m_endAName = endAName; } -void PropertiesView::MView::setEndBName(const QString &end_b_name) +void PropertiesView::MView::setEndBName(const QString &endBName) { - if (_end_b_name.isEmpty()) { - _end_b_name = end_b_name; - } + if (m_endBName.isEmpty()) + m_endBName = endBName; } -QList<QString> PropertiesView::MView::splitTemplateParameters(const QString &template_parameters) +QList<QString> PropertiesView::MView::splitTemplateParameters(const QString &templateParameters) { - QList<QString> template_parameters_list; - foreach (const QString ¶meter, template_parameters.split(QLatin1Char(','))) { + QList<QString> templateParametersList; + foreach (const QString ¶meter, templateParameters.split(QLatin1Char(','))) { const QString &p = parameter.trimmed(); - if (!p.isEmpty()) { - template_parameters_list.append(p); - } + if (!p.isEmpty()) + templateParametersList.append(p); } - return template_parameters_list; + return templateParametersList; } -QString PropertiesView::MView::formatTemplateParameters(const QList<QString> &template_parameters_list) +QString PropertiesView::MView::formatTemplateParameters(const QList<QString> &templateParametersList) { - QString template_paramters; + QString templateParamters; bool first = true; - foreach (const QString ¶meter, template_parameters_list) { - if (!first) { - template_paramters += QStringLiteral(", "); - } - template_paramters += parameter; + foreach (const QString ¶meter, templateParametersList) { + if (!first) + templateParamters += QStringLiteral(", "); + templateParamters += parameter; first = false; } - return template_paramters; + return templateParamters; } template<class T, class V> @@ -1374,102 +1368,106 @@ QList<T *> PropertiesView::MView::filter(const QList<V *> &elements) QList<T *> filtered; foreach (V *element, elements) { T *t = dynamic_cast<T *>(element); - if (t) { + if (t) filtered.append(t); - } } return filtered; } template<class T, class V, class BASE> -bool PropertiesView::MView::haveSameValue(const QList<BASE *> &base_elements, V (T::*getter)() const, V *value) +bool PropertiesView::MView::haveSameValue(const QList<BASE *> &baseElements, V (T::*getter)() const, V *value) { - QList<T *> elements = filter<T>(base_elements); + QList<T *> elements = filter<T>(baseElements); QMT_CHECK(!elements.isEmpty()); V candidate = V(); // avoid warning of reading uninitialized variable - bool have_candidate = false; + bool haveCandidate = false; foreach (T *element, elements) { - if (!have_candidate) { + if (!haveCandidate) { candidate = ((*element).*getter)(); - have_candidate = true; + haveCandidate = true; } else { - if (candidate != ((*element).*getter)()) { + if (candidate != ((*element).*getter)()) return false; - } } } - QMT_CHECK(have_candidate); - if (!have_candidate) { + QMT_CHECK(haveCandidate); + if (!haveCandidate) return false; - } - if (value) { + if (value) *value = candidate; - } return true; } template<class T, class V, class BASE> -void PropertiesView::MView::assignModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, V (T::*getter)() const, void (T::*setter)(const V &)) +void PropertiesView::MView::assignModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, V (T::*getter)() const, void (T::*setter)(const V &)) { - QList<T *> elements = filter<T>(base_elements); - if ((selection_type == SELECTION_SINGLE && elements.size() == 1) || selection_type == SELECTION_MULTI) { + QList<T *> elements = filter<T>(baseElements); + if ((selectionType == SelectionSingle && elements.size() == 1) || selectionType == SelectionMulti) { foreach (T *element, elements) { if (value != ((*element).*getter)()) { - _properties_view->beginUpdate(element); + m_propertiesView->beginUpdate(element); ((*element).*setter)(value); - _properties_view->endUpdate(element, false); + m_propertiesView->endUpdate(element, false); } } } } template<class T, class V, class BASE> -void PropertiesView::MView::assignModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, V (T::*getter)() const, void (T::*setter)(V)) +void PropertiesView::MView::assignModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, V (T::*getter)() const, void (T::*setter)(V)) { - QList<T *> elements = filter<T>(base_elements); - if ((selection_type == SELECTION_SINGLE && elements.size() == 1) || selection_type == SELECTION_MULTI) { + QList<T *> elements = filter<T>(baseElements); + if ((selectionType == SelectionSingle && elements.size() == 1) || selectionType == SelectionMulti) { foreach (T *element, elements) { if (value != ((*element).*getter)()) { - _properties_view->beginUpdate(element); + m_propertiesView->beginUpdate(element); ((*element).*setter)(value); - _properties_view->endUpdate(element, false); + m_propertiesView->endUpdate(element, false); } } } } template<class T, class E, class V, class BASE> -void PropertiesView::MView::assignEmbeddedModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, E (T::*getter)() const, void (T::*setter)(const E &), V (E::*v_getter)() const, void (E::*v_setter)(const V &)) +void PropertiesView::MView::assignEmbeddedModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, E (T::*getter)() const, + void (T::*setter)(const E &), + V (E::*vGetter)() const, void (E::*vSetter)(const V &)) { - QList<T *> elements = filter<T>(base_elements); - if ((selection_type == SELECTION_SINGLE && elements.size() == 1) || selection_type == SELECTION_MULTI) { + QList<T *> elements = filter<T>(baseElements); + if ((selectionType == SelectionSingle && elements.size() == 1) || selectionType == SelectionMulti) { foreach (T *element, elements) { E embedded = ((*element).*getter)(); - if (value != (embedded.*v_getter)()) { - _properties_view->beginUpdate(element); - (embedded.*v_setter)(value); + if (value != (embedded.*vGetter)()) { + m_propertiesView->beginUpdate(element); + (embedded.*vSetter)(value); ((*element).*setter)(embedded); - _properties_view->endUpdate(element, false); + m_propertiesView->endUpdate(element, false); } } } } template<class T, class E, class V, class BASE> -void PropertiesView::MView::assignEmbeddedModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, E (T::*getter)() const, void (T::*setter)(const E &), V (E::*v_getter)() const, void (E::*v_setter)(V)) +void PropertiesView::MView::assignEmbeddedModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, E (T::*getter)() const, + void (T::*setter)(const E &), + V (E::*vGetter)() const, void (E::*vSetter)(V)) { - QList<T *> elements = filter<T>(base_elements); - if ((selection_type == SELECTION_SINGLE && elements.size() == 1) || selection_type == SELECTION_MULTI) { + QList<T *> elements = filter<T>(baseElements); + if ((selectionType == SelectionSingle && elements.size() == 1) || selectionType == SelectionMulti) { foreach (T *element, elements) { E embedded = ((*element).*getter)(); - if (value != (embedded.*v_getter)()) { - _properties_view->beginUpdate(element); - (embedded.*v_setter)(value); + if (value != (embedded.*vGetter)()) { + m_propertiesView->beginUpdate(element); + (embedded.*vSetter)(value); ((*element).*setter)(embedded); - _properties_view->endUpdate(element, false); + m_propertiesView->endUpdate(element, false); } } } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.h b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.h index d8eaf1a07e..81947f3cc5 100644 --- a/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.h +++ b/src/libs/3rdparty/modeling/qmt/model_widgets_ui/propertiesviewmview.h @@ -54,7 +54,6 @@ class QCheckBox; class QFrame; QT_END_NAMESPACE - namespace qmt { class StereotypesController; @@ -62,265 +61,190 @@ class MClassMember; class ClassMembersEdit; class PaletteBox; - -class QMT_EXPORT PropertiesView::MView : - public QObject, - public MConstVisitor, - public DConstVisitor +class QMT_EXPORT PropertiesView::MView : public QObject, public MConstVisitor, public DConstVisitor { Q_OBJECT public: - - MView(PropertiesView *properties_view); - + MView(PropertiesView *propertiesView); ~MView(); -public: - - QWidget *getTopLevelWidget() const { return _top_widget; } - -public: + QWidget *topLevelWidget() const { return m_topWidget; } void visitMElement(const MElement *element); - void visitMObject(const MObject *object); - void visitMPackage(const MPackage *package); - void visitMClass(const MClass *klass); - void visitMComponent(const MComponent *component); - void visitMDiagram(const MDiagram *diagram); - void visitMCanvasDiagram(const MCanvasDiagram *diagram); - void visitMItem(const MItem *item); - void visitMRelation(const MRelation *relation); - void visitMDependency(const MDependency *dependency); - void visitMInheritance(const MInheritance *inheritance); - void visitMAssociation(const MAssociation *association); -public: - void visitDElement(const DElement *element); - void visitDObject(const DObject *object); - void visitDPackage(const DPackage *package); - void visitDClass(const DClass *klass); - void visitDComponent(const DComponent *component); - void visitDDiagram(const DDiagram *diagram); - void visitDItem(const DItem *item); - void visitDRelation(const DRelation *relation); - void visitDInheritance(const DInheritance *inheritance); - void visitDDependency(const DDependency *dependency); - void visitDAssociation(const DAssociation *association); - void visitDAnnotation(const DAnnotation *annotation); - void visitDBoundary(const DBoundary *boundary); -public: - - void update(QList<MElement *> &model_elements); - - void update(QList<DElement *> &diagram_elements, MDiagram *diagram); - + void update(QList<MElement *> &modelElements); + void update(QList<DElement *> &diagramElements, MDiagram *diagram); void edit(); private slots: - void onStereotypesChanged(const QString &stereotypes); - void onObjectNameChanged(const QString &name); - - void onNamespaceChanged(const QString &name_space); - - void onTemplateParametersChanged(const QString &template_parameters); - + void onNamespaceChanged(const QString ¨Namespace); + void onTemplateParametersChanged(const QString &templateParameters); void onClassMembersStatusChanged(bool valid); - void onParseClassMembers(); - - void onClassMembersChanged(QList<MClassMember> &class_members); - + void onClassMembersChanged(QList<MClassMember> &classMembers); void onItemVarietyChanged(const QString &variety); - void onRelationNameChanged(const QString &name); - - void onDependencyDirectionChanged(int direction_index); - + void onDependencyDirectionChanged(int directionIndex); void onAssociationEndANameChanged(const QString &name); - void onAssociationEndACardinalityChanged(const QString &cardinality); - void onAssociationEndANavigableChanged(bool navigable); - - void onAssociationEndAKindChanged(int kind_index); - + void onAssociationEndAKindChanged(int kindIndex); void onAssociationEndBNameChanged(const QString &name); - void onAssociationEndBCardinalityChanged(const QString &cardinality); - void onAssociationEndBNavigableChanged(bool navigable); - - void onAssociationEndBKindChanged(int kind_index); - - void onAutoSizedChanged(bool auto_sized); - - void onVisualPrimaryRoleChanged(int visual_role_index); - - void onVisualSecondaryRoleChanged(int visual_role_index); - - void onVisualEmphasizedChanged(bool visual_emphasized); - - void onStereotypeDisplayChanged(int stereotype_display_index); - - void onTemplateDisplayChanged(int template_display_index); - - void onShowAllMembersChanged(bool show_all_members); - - void onPlainShapeChanged(bool plain_shape); - + void onAssociationEndBKindChanged(int kindIndex); + void onAutoSizedChanged(bool autoSized); + void onVisualPrimaryRoleChanged(int visualRoleIndex); + void onVisualSecondaryRoleChanged(int visualRoleIndex); + void onVisualEmphasizedChanged(bool visualEmphasized); + void onStereotypeDisplayChanged(int stereotypeDisplayIndex); + void onTemplateDisplayChanged(int templateDisplayIndex); + void onShowAllMembersChanged(bool showAllMembers); + void onPlainShapeChanged(bool plainShape); void onItemShapeChanged(const QString &shape); - - void onAutoWidthChanged(bool auto_widthed); - - void onAnnotationVisualRoleChanged(int visual_role_index); + void onAutoWidthChanged(bool autoWidthed); + void onAnnotationVisualRoleChanged(int visualRoleIndex); private: - void prepare(); - template<class T, class V> - void setTitle(const QList<V *> &elements, const QString &singular_title, const QString &plural_title); - + void setTitle(const QList<V *> &elements, const QString &singularTitle, + const QString &pluralTitle); template<class T, class V> - void setTitle(const MItem *item, const QList<V *> &elements, const QString &singular_title, const QString &plural_title); - - void setStereotypeIconElement(StereotypeIcon::Element stereotype_element); - - void setStyleElementType(StyleEngine::ElementType element_type); - - void setPrimaryRolePalette(StyleEngine::ElementType element_type, DObject::VisualPrimaryRole visual_primary_role, const QColor &base_color); - - void setEndAName(const QString &end_a_name); - - void setEndBName(const QString &end_b_name); - - QList<QString> splitTemplateParameters(const QString &template_parameters); - - QString formatTemplateParameters(const QList<QString> &template_parameters_list); + void setTitle(const MItem *item, const QList<V *> &elements, + const QString &singularTitle, const QString &pluralTitle); + void setStereotypeIconElement(StereotypeIcon::Element stereotypeElement); + void setStyleElementType(StyleEngine::ElementType elementType); + void setPrimaryRolePalette(StyleEngine::ElementType elementType, + DObject::VisualPrimaryRole visualPrimaryRole, + const QColor &baseColor); + void setEndAName(const QString &endAName); + void setEndBName(const QString &endBName); + + QList<QString> splitTemplateParameters(const QString &templateParameters); + QString formatTemplateParameters(const QList<QString> &templateParametersList); enum SelectionType { - SELECTION_SINGLE, - SELECTION_MULTI + SelectionSingle, + SelectionMulti }; template<class T, class V> QList<T *> filter(const QList<V *> &elements); - template<class T, class V, class BASE> - bool haveSameValue(const QList<BASE *> &base_elements, V (T::*getter)() const, V *value); - + bool haveSameValue(const QList<BASE *> &baseElements, V (T::*getter)() const, V *value); template<class T, class V, class BASE> - void assignModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, V (T::*getter)() const, void (T::*setter)(const V &)); - + void assignModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, V (T::*getter)() const, void (T::*setter)(const V &)); template<class T, class V, class BASE> - void assignModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, V (T::*getter)() const, void (T::*setter)(V)); - + void assignModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, V (T::*getter)() const, void (T::*setter)(V)); template<class T, class E, class V, class BASE> - void assignEmbeddedModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, E (T::*getter)() const, void (T::*setter)(const E &), V (E::*v_getter)() const, void (E::*v_setter)(const V &)); - + void assignEmbeddedModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, E (T::*getter)() const, + void (T::*setter)(const E &), + V (E::*vGetter)() const, void (E::*vSetter)(const V &)); template<class T, class E, class V, class BASE> - void assignEmbeddedModelElement(const QList<BASE *> &base_elements, SelectionType selection_type, const V &value, E (T::*getter)() const, void (T::*setter)(const E &), V (E::*v_getter)() const, void (E::*v_setter)(V)); - -private: - PropertiesView *_properties_view; - - QList<MElement *> _model_elements; - - QList<DElement *> _diagram_elements; - MDiagram *_diagram; - - StereotypesController *_stereotypes_controller; - - QWidget *_top_widget; - QFormLayout *_top_layout; - QString _properties_title; + void assignEmbeddedModelElement(const QList<BASE *> &baseElements, SelectionType selectionType, + const V &value, E (T::*getter)() const, + void (T::*setter)(const E &), + V (E::*vGetter)() const, void (E::*vSetter)(V)); + + PropertiesView *m_propertiesView; + QList<MElement *> m_modelElements; + QList<DElement *> m_diagramElements; + MDiagram *m_diagram; + StereotypesController *m_stereotypesController; + QWidget *m_topWidget; + QFormLayout *m_topLayout; + QString m_propertiesTitle; // MElement - StereotypeIcon::Element _stereotype_element; - QLabel *_class_name_label; - QComboBox *_stereotype_combo_box; - QLabel *_reverse_engineered_label; + StereotypeIcon::Element m_stereotypeElement; + QLabel *m_classNameLabel; + QComboBox *m_stereotypeComboBox; + QLabel *m_reverseEngineeredLabel; // MObject - QLineEdit *_element_name_line_edit; - QLabel *_children_label; - QLabel *_relations_label; + QLineEdit *m_elementNameLineEdit; + QLabel *m_childrenLabel; + QLabel *m_relationsLabel; // MClass - QLineEdit *_namespace_line_edit; - QLineEdit *_template_parameters_line_edit; - QLabel *_class_members_status_label; - QPushButton *_class_members_parse_button; - ClassMembersEdit *_class_members_edit; + QLineEdit *m_namespaceLineEdit; + QLineEdit *m_templateParametersLineEdit; + QLabel *m_classMembersStatusLabel; + QPushButton *m_classMembersParseButton; + ClassMembersEdit *m_classMembersEdit; // MDiagram - QLabel *_diagrams_label; + QLabel *m_diagramsLabel; // MItem - QLineEdit *_item_variety_edit; + QLineEdit *m_itemVarietyEdit; // MRelation - QString _end_a_name; - QLabel *_end_a_label; - QString _end_b_name; - QLabel *_end_b_label; + QString m_endAName; + QLabel *m_endALabel; + QString m_endBName; + QLabel *m_endBLabel; // MDependency - QComboBox *_direction_selector; + QComboBox *m_directionSelector; // MAssociation - QLineEdit *_end_a_end_name; - QLineEdit *_end_a_cardinality; - QCheckBox *_end_a_navigable; - QComboBox *_end_a_kind; - QLineEdit *_end_b_end_name; - QLineEdit *_end_b_cardinality; - QCheckBox *_end_b_navigable; - QComboBox *_end_b_kind; + QLineEdit *m_endAEndName; + QLineEdit *m_endACardinality; + QCheckBox *m_endANavigable; + QComboBox *m_endAKind; + QLineEdit *m_endBEndName; + QLineEdit *m_endBCardinality; + QCheckBox *m_endBNavigable; + QComboBox *m_endBKind; // DElement - QFrame *_separator_line; + QFrame *m_separatorLine; // DObject - StyleEngine::ElementType _style_element_type; - QLabel *_pos_rect_label; - QCheckBox *_auto_sized_checkbox; - PaletteBox *_visual_primary_role_selector; - QComboBox *_visual_secondary_role_selector; - QCheckBox *_visual_emphasized_checkbox; - QComboBox *_stereotype_display_selector; - QLabel *_depth_label; + StyleEngine::ElementType m_styleElementType; + QLabel *m_posRectLabel; + QCheckBox *m_autoSizedCheckbox; + PaletteBox *m_visualPrimaryRoleSelector; + QComboBox *m_visualSecondaryRoleSelector; + QCheckBox *m_visualEmphasizedCheckbox; + QComboBox *m_stereotypeDisplaySelector; + QLabel *m_depthLabel; // DClass - QComboBox *_template_display_selector; - QCheckBox *_show_all_members_checkbox; + QComboBox *m_templateDisplaySelector; + QCheckBox *m_showAllMembersCheckbox; // DComponent - QCheckBox *_plain_shape_checkbox; + QCheckBox *m_plainShapeCheckbox; // DItem - QLineEdit *_item_shape_edit; + QLineEdit *m_itemShapeEdit; // DAnnotation - QCheckBox *_annotation_auto_width_checkbox; - QComboBox *_annotation_visual_role_selector; + QCheckBox *m_annotationAutoWidthCheckbox; + QComboBox *m_annotationVisualRoleSelector; }; -} +} // namespace qmt #endif // QMT_PROPERTIESVIEWMVIEW_H diff --git a/src/libs/3rdparty/modeling/qmt/project/project.cpp b/src/libs/3rdparty/modeling/qmt/project/project.cpp index 6ebfc48e20..d949489b4b 100644 --- a/src/libs/3rdparty/modeling/qmt/project/project.cpp +++ b/src/libs/3rdparty/modeling/qmt/project/project.cpp @@ -30,7 +30,6 @@ #include "project.h" - namespace qmt { Project::Project() @@ -43,22 +42,22 @@ Project::~Project() void Project::setUid(const Uid &uid) { - _uid = uid; + m_uid = uid; } bool Project::hasFileName() const { - return !_file_name.isEmpty(); + return !m_fileName.isEmpty(); } -void Project::setFileName(const QString &file_name) +void Project::setFileName(const QString &fileName) { - _file_name = file_name; + m_fileName = fileName; } -void Project::setRootPackage(MPackage *root_package) +void Project::setRootPackage(MPackage *rootPackage) { - _root_package = root_package; + m_rootPackage = rootPackage; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/project/project.h b/src/libs/3rdparty/modeling/qmt/project/project.h index 5474c3c71e..17f5ccc6d0 100644 --- a/src/libs/3rdparty/modeling/qmt/project/project.h +++ b/src/libs/3rdparty/modeling/qmt/project/project.h @@ -35,42 +35,30 @@ #include <QString> - namespace qmt { class MPackage; - class QMT_EXPORT Project { public: Project(); - ~Project(); - Uid getUid() const { return _uid; } - + Uid uid() const { return m_uid; } void setUid(const Uid &uid); - bool hasFileName() const; - - QString getFileName() const { return _file_name; } - - void setFileName(const QString &file_name); - - MPackage *getRootPackage() const { return _root_package; } - - void setRootPackage(MPackage *root_package); + QString fileName() const { return m_fileName; } + void setFileName(const QString &fileName); + MPackage *rootPackage() const { return m_rootPackage; } + void setRootPackage(MPackage *rootPackage); private: - - Uid _uid; - - QString _file_name; - - MPackage *_root_package; + Uid m_uid; + QString m_fileName; + MPackage *m_rootPackage; }; -} +} // namespace qmt #endif // QMT_PROJECT_H diff --git a/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.cpp b/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.cpp index 16eecf5b57..f53d3dc3dd 100644 --- a/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.cpp @@ -35,7 +35,6 @@ #include "qmt/model/mpackage.h" - namespace qmt { NoFileNameException::NoFileNameException() @@ -43,16 +42,14 @@ NoFileNameException::NoFileNameException() { } - ProjectIsModifiedException::ProjectIsModifiedException() : Exception(ProjectController::tr("Project is modified.")) { } - ProjectController::ProjectController(QObject *parent) : QObject(parent), - _is_modified(false) + m_isModified(false) { } @@ -60,64 +57,61 @@ ProjectController::~ProjectController() { } -void ProjectController::newProject(const QString &file_name) +void ProjectController::newProject(const QString &fileName) { - _project.reset(new Project()); - MPackage *root_package = new MPackage(); - root_package->setName(tr("Model")); - _project->setRootPackage(root_package); - _project->setFileName(file_name); - _is_modified = false; - emit fileNameChanged(_project->getFileName()); + m_project.reset(new Project()); + MPackage *rootPackage = new MPackage(); + rootPackage->setName(tr("Model")); + m_project->setRootPackage(rootPackage); + m_project->setFileName(fileName); + m_isModified = false; + emit fileNameChanged(m_project->fileName()); emit changed(); } -void ProjectController::setFileName(const QString &file_name) +void ProjectController::setFileName(const QString &fileName) { - if (file_name != _project->getFileName()) { - _project->setFileName(file_name); + if (fileName != m_project->fileName()) { + m_project->setFileName(fileName); setModified(); - emit fileNameChanged(_project->getFileName()); + emit fileNameChanged(m_project->fileName()); } } void ProjectController::setModified() { - if (!_is_modified) { - _is_modified = true; + if (!m_isModified) { + m_isModified = true; emit changed(); } } void ProjectController::load() { - if (isModified()) { + if (isModified()) throw ProjectIsModifiedException(); - } - if (!_project->hasFileName()) { + if (!m_project->hasFileName()) throw NoFileNameException(); - } ProjectSerializer serializer; - serializer.load(_project->getFileName(), _project.data()); - _is_modified = false; + serializer.load(m_project->fileName(), m_project.data()); + m_isModified = false; emit changed(); } void ProjectController::save() { - if (!_project->hasFileName()) { + if (!m_project->hasFileName()) throw NoFileNameException(); - } ProjectSerializer serializer; - serializer.save(_project->getFileName(), _project.data()); - _is_modified = false; + serializer.save(m_project->fileName(), m_project.data()); + m_isModified = false; emit changed(); } -void ProjectController::saveAs(const QString &file_name) +void ProjectController::saveAs(const QString &fileName) { - setFileName(file_name); + setFileName(fileName); save(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.h b/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.h index 67791949f3..3655a627c7 100644 --- a/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.h +++ b/src/libs/3rdparty/modeling/qmt/project_controller/projectcontroller.h @@ -37,68 +37,52 @@ #include <QObject> #include <QString> - namespace qmt { class Project; - -class QMT_EXPORT NoFileNameException : - public Exception +class QMT_EXPORT NoFileNameException : public Exception { public: NoFileNameException(); }; -class QMT_EXPORT ProjectIsModifiedException : - public Exception +class QMT_EXPORT ProjectIsModifiedException : public Exception { public: ProjectIsModifiedException(); }; - -class QMT_EXPORT ProjectController : - public QObject +class QMT_EXPORT ProjectController : public QObject { Q_OBJECT public: explicit ProjectController(QObject *parent = 0); - ~ProjectController(); signals: - void changed(); - - void fileNameChanged(const QString &file_name); + void fileNameChanged(const QString &fileName); public: - - Project *getProject() const { return _project.data(); } - - bool isModified() const { return _is_modified; } + Project *project() const { return m_project.data(); } + bool isModified() const { return m_isModified; } public slots: - - void newProject(const QString &file_name); - - void setFileName(const QString &file_name); - + void newProject(const QString &fileName); + void setFileName(const QString &fileName); void setModified(); void load(); - void save(); - - void saveAs(const QString &file_name); + void saveAs(const QString &fileName); private: - QScopedPointer<Project> _project; - bool _is_modified; + QScopedPointer<Project> m_project; + bool m_isModified; }; -} +} // namespace qmt #endif // PROJECTCONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.cpp b/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.cpp index bf0b684add..92150bf39f 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.cpp +++ b/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.cpp @@ -56,10 +56,8 @@ using namespace qmt; - namespace qark { - // DElement QARK_REGISTER_TYPE_NAME(DElement, "DElement") @@ -69,45 +67,44 @@ template<class Archive> inline void Access<Archive, DElement>::serialize(Archive &archive, DElement &element) { archive || tag(element) - || attr(QStringLiteral("uid"), element, &DElement::getUid, &DElement::setUid) + || attr(QStringLiteral("uid"), element, &DElement::uid, &DElement::setUid) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DElement) - // DObject // functions for backward compatibility to old visual role -static DObject::VisualPrimaryRole getVisualRole(const DObject &object) +static DObject::VisualPrimaryRole visualRole(const DObject &object) { - DObject::VisualPrimaryRole visual_role = object.getVisualPrimaryRole(); - if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_DARKER - || visual_role == DObject::DEPRECATED_PRIMARY_ROLE_LIGHTER - || visual_role == DObject::DEPRECATED_PRIMARY_ROLE_OUTLINE - || visual_role == DObject::DEPRECATED_PRIMARY_ROLE_SOFTEN) { + DObject::VisualPrimaryRole visualRole = object.visualPrimaryRole(); + if (visualRole == DObject::DeprecatedPrimaryRoleDarker + || visualRole == DObject::DeprecatedPrimaryRoleLighter + || visualRole == DObject::DeprecatedPrimaryRoleOutline + || visualRole == DObject::DeprecatedPrimaryRoleSoften) { QMT_CHECK(false); - visual_role = DObject::PRIMARY_ROLE_NORMAL; + visualRole = DObject::PrimaryRoleNormal; } - return visual_role; + return visualRole; } -static void setVisualRole(DObject &object, DObject::VisualPrimaryRole visual_role) +static void setVisualRole(DObject &object, DObject::VisualPrimaryRole visualRole) { - if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_DARKER) { - object.setVisualPrimaryRole(DObject::PRIMARY_ROLE_NORMAL); - object.setVisualSecondaryRole(DObject::SECONDARY_ROLE_DARKER); - } else if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_LIGHTER) { - object.setVisualPrimaryRole(DObject::PRIMARY_ROLE_NORMAL); - object.setVisualSecondaryRole(DObject::SECONDARY_ROLE_LIGHTER); - } else if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_OUTLINE) { - object.setVisualPrimaryRole(DObject::PRIMARY_ROLE_NORMAL); - object.setVisualSecondaryRole(DObject::SECONDARY_ROLE_OUTLINE); - } else if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_SOFTEN) { - object.setVisualPrimaryRole(DObject::PRIMARY_ROLE_NORMAL); - object.setVisualSecondaryRole(DObject::SECONDARY_ROLE_SOFTEN); + if (visualRole == DObject::DeprecatedPrimaryRoleDarker) { + object.setVisualPrimaryRole(DObject::PrimaryRoleNormal); + object.setVisualSecondaryRole(DObject::SecondaryRoleDarker); + } else if (visualRole == DObject::DeprecatedPrimaryRoleLighter) { + object.setVisualPrimaryRole(DObject::PrimaryRoleNormal); + object.setVisualSecondaryRole(DObject::SecondaryRoleLighter); + } else if (visualRole == DObject::DeprecatedPrimaryRoleOutline) { + object.setVisualPrimaryRole(DObject::PrimaryRoleNormal); + object.setVisualSecondaryRole(DObject::SecondaryRoleOutline); + } else if (visualRole == DObject::DeprecatedPrimaryRoleSoften) { + object.setVisualPrimaryRole(DObject::PrimaryRoleNormal); + object.setVisualSecondaryRole(DObject::SecondaryRoleSoften); } else { - object.setVisualPrimaryRole(visual_role); + object.setVisualPrimaryRole(visualRole); } } @@ -120,24 +117,23 @@ inline void Access<Archive, DObject>::serialize(Archive &archive, DObject &objec { archive || tag(object) || base<DElement>(object) - || attr(QStringLiteral("object"), object, &DObject::getModelUid, &DObject::setModelUid) - || attr(QStringLiteral("stereotypes"), object, &DObject::getStereotypes, &DObject::setStereotypes) - || attr(QStringLiteral("context"), object, &DObject::getContext, &DObject::setContext) - || attr(QStringLiteral("name"), object, &DObject::getName, &DObject::setName) - || attr(QStringLiteral("pos"), object, &DObject::getPos, &DObject::setPos) - || attr(QStringLiteral("rect"), object, &DObject::getRect, &DObject::setRect) - || attr(QStringLiteral("auto-sized"), object, &DObject::hasAutoSize, &DObject::setAutoSize) - || attr(QStringLiteral("visual-role"), object, &getVisualRole, &setVisualRole) - || attr(QStringLiteral("visual-role2"), object, &DObject::getVisualSecondaryRole, &DObject::setVisualSecondaryRole) + || attr(QStringLiteral("object"), object, &DObject::modelUid, &DObject::setModelUid) + || attr(QStringLiteral("stereotypes"), object, &DObject::stereotypes, &DObject::setStereotypes) + || attr(QStringLiteral("context"), object, &DObject::context, &DObject::setContext) + || attr(QStringLiteral("name"), object, &DObject::name, &DObject::setName) + || attr(QStringLiteral("pos"), object, &DObject::pos, &DObject::setPos) + || attr(QStringLiteral("rect"), object, &DObject::rect, &DObject::setRect) + || attr(QStringLiteral("auto-sized"), object, &DObject::isAutoSized, &DObject::setAutoSized) + || attr(QStringLiteral("visual-role"), object, &visualRole, &setVisualRole) + || attr(QStringLiteral("visual-role2"), object, &DObject::visualSecondaryRole, &DObject::setVisualSecondaryRole) || attr(QStringLiteral("visual-emphasized"), object, &DObject::isVisualEmphasized, &DObject::setVisualEmphasized) - || attr(QStringLiteral("stereotype-display"), object, &DObject::getStereotypeDisplay, &DObject::setStereotypeDisplay) + || attr(QStringLiteral("stereotype-display"), object, &DObject::stereotypeDisplay, &DObject::setStereotypeDisplay) // depth is not persistent || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DObject) - // DPackage QARK_REGISTER_TYPE_NAME(DPackage, "DPackage") @@ -155,7 +151,6 @@ inline void Access<Archive, DPackage>::serialize(Archive &archive, DPackage &pac QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DPackage) - // DClass QARK_REGISTER_TYPE_NAME(DClass, "DClass") @@ -168,17 +163,16 @@ inline void Access<Archive, DClass>::serialize(Archive &archive, DClass &klass) { archive || tag(klass) || base<DObject>(klass) - || attr(QStringLiteral("namespace"), klass, &DClass::getNamespace, &DClass::setNamespace) - || attr(QStringLiteral("template"), klass, &DClass::getTemplateParameters, &DClass::setTemplateParameters) - || attr(QStringLiteral("template-display"), klass, &DClass::getTemplateDisplay, &DClass::setTemplateDisplay) - || attr(QStringLiteral("show-all-members"), klass, &DClass::getShowAllMembers, &DClass::setShowAllMembers) - || attr(QStringLiteral("visible-members"), klass, &DClass::getVisibleMembers, &DClass::setVisibleMembers) + || attr(QStringLiteral("namespace"), klass, &DClass::umlNamespace, &DClass::setUmlNamespace) + || attr(QStringLiteral("template"), klass, &DClass::templateParameters, &DClass::setTemplateParameters) + || attr(QStringLiteral("template-display"), klass, &DClass::templateDisplay, &DClass::setTemplateDisplay) + || attr(QStringLiteral("show-all-members"), klass, &DClass::showAllMembers, &DClass::setShowAllMembers) + || attr(QStringLiteral("visible-members"), klass, &DClass::visibleMembers, &DClass::setVisibleMembers) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DClass) - // DComponent QARK_REGISTER_TYPE_NAME(DComponent, "DComponent") @@ -191,13 +185,12 @@ inline void Access<Archive, DComponent>::serialize(Archive &archive, DComponent { archive || tag(component) || base<DObject>(component) - || attr(QStringLiteral("plain-shape"), component, &DComponent::getPlainShape, &DComponent::setPlainShape) + || attr(QStringLiteral("plain-shape"), component, &DComponent::isPlainShape, &DComponent::setPlainShape) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DComponent) - // DDiagram QARK_REGISTER_TYPE_NAME(DDiagram, "DDiagram") @@ -215,7 +208,6 @@ inline void Access<Archive, DDiagram>::serialize(Archive &archive, DDiagram &dia QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DDiagram) - // DItem QARK_REGISTER_TYPE_NAME(DItem, "DItem") @@ -228,15 +220,14 @@ inline void Access<Archive, DItem>::serialize(Archive &archive, DItem &item) { archive || tag(item) || base<DObject>(item) - || attr(QStringLiteral("variety"), item, &DItem::getVariety, &DItem::setVariety) + || attr(QStringLiteral("variety"), item, &DItem::variety, &DItem::setVariety) || attr(QStringLiteral("shape-editable"), item, &DItem::isShapeEditable, &DItem::setShapeEditable) - || attr(QStringLiteral("shape"), item, &DItem::getShape, &DItem::setShape) + || attr(QStringLiteral("shape"), item, &DItem::shape, &DItem::setShape) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DItem) - // DRelation QARK_REGISTER_TYPE_NAME(DRelation, "DRelation") @@ -248,18 +239,17 @@ inline void Access<Archive, DRelation>::serialize(Archive &archive, DRelation &r { archive || tag(relation) || base<DElement>(relation) - || attr(QStringLiteral("object"), relation, &DRelation::getModelUid, &DRelation::setModelUid) - || attr(QStringLiteral("stereotypes"), relation, &DRelation::getStereotypes, &DRelation::setStereotypes) - || attr(QStringLiteral("a"), relation, &DRelation::getEndA, &DRelation::setEndA) - || attr(QStringLiteral("b"), relation, &DRelation::getEndB, &DRelation::setEndB) - || attr(QStringLiteral("name"), relation, &DRelation::getName, &DRelation::setName) - || attr(QStringLiteral("points"), relation, &DRelation::getIntermediatePoints, &DRelation::setIntermediatePoints) + || attr(QStringLiteral("object"), relation, &DRelation::modelUid, &DRelation::setModelUid) + || attr(QStringLiteral("stereotypes"), relation, &DRelation::stereotypes, &DRelation::setStereotypes) + || attr(QStringLiteral("a"), relation, &DRelation::endAUid, &DRelation::setEndAUid) + || attr(QStringLiteral("b"), relation, &DRelation::endBUid, &DRelation::setEndBUid) + || attr(QStringLiteral("name"), relation, &DRelation::name, &DRelation::setName) + || attr(QStringLiteral("points"), relation, &DRelation::intermediatePoints, &DRelation::setIntermediatePoints) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DRelation) - // DRelation::IntermediatePoint QARK_REGISTER_TYPE_NAME(DRelation::IntermediatePoint, "DRelation--IntermediatePoint") @@ -269,13 +259,12 @@ template<class Archive> inline void Access<Archive, DRelation::IntermediatePoint>::serialize(Archive &archive, DRelation::IntermediatePoint &point) { archive || tag(point) - || attr(QStringLiteral("pos"), point, &DRelation::IntermediatePoint::getPos, &DRelation::IntermediatePoint::setPos) + || attr(QStringLiteral("pos"), point, &DRelation::IntermediatePoint::pos, &DRelation::IntermediatePoint::setPos) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DRelation::IntermediatePoint) - // DInheritance QARK_REGISTER_TYPE_NAME(DInheritance, "DInheritance") @@ -293,7 +282,6 @@ inline void Access<Archive, DInheritance>::serialize(Archive &archive, DInherita QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DInheritance) - // DDependency QARK_REGISTER_TYPE_NAME(DDependency, "DDependency") @@ -306,26 +294,25 @@ inline void Access<Archive, DDependency>::serialize(Archive &archive, DDependenc { archive || tag(dependency) || base<DRelation>(dependency) - || attr(QStringLiteral("direction"), dependency, &DDependency::getDirection, &DDependency::setDirection) + || attr(QStringLiteral("direction"), dependency, &DDependency::direction, &DDependency::setDirection) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DDependency) - // DAssociation QARK_REGISTER_TYPE_NAME(DAssociationEnd, "DAssociationEnd") QARK_ACCESS_SERIALIZE(DAssociationEnd) template<class Archive> -inline void Access<Archive, DAssociationEnd>::serialize(Archive &archive, DAssociationEnd &association_end) +inline void Access<Archive, DAssociationEnd>::serialize(Archive &archive, DAssociationEnd &associationEnd) { - archive || tag(association_end) - || attr(QStringLiteral("name"), association_end, &DAssociationEnd::getName, &DAssociationEnd::setName) - || attr(QStringLiteral("cradinality"), association_end, &DAssociationEnd::getCardinality, &DAssociationEnd::setCardinatlity) - || attr(QStringLiteral("navigable"), association_end, &DAssociationEnd::isNavigable, &DAssociationEnd::setNavigable) - || attr(QStringLiteral("kind"), association_end, &DAssociationEnd::getKind, &DAssociationEnd::setKind) + archive || tag(associationEnd) + || attr(QStringLiteral("name"), associationEnd, &DAssociationEnd::name, &DAssociationEnd::setName) + || attr(QStringLiteral("cradinality"), associationEnd, &DAssociationEnd::cardinality, &DAssociationEnd::setCardinatlity) + || attr(QStringLiteral("navigable"), associationEnd, &DAssociationEnd::isNavigable, &DAssociationEnd::setNavigable) + || attr(QStringLiteral("kind"), associationEnd, &DAssociationEnd::kind, &DAssociationEnd::setKind) || end; } @@ -339,15 +326,14 @@ inline void Access<Archive, DAssociation>::serialize(Archive &archive, DAssociat { archive || tag(association) || base<DRelation>(association) - || attr(QStringLiteral("class"), association, &DAssociation::getAssoicationClassUid, &DAssociation::setAssociationClassUid) - || attr(QStringLiteral("a"), association, &DAssociation::getA, &DAssociation::setA) - || attr(QStringLiteral("b"), association, &DAssociation::getB, &DAssociation::setB) + || attr(QStringLiteral("class"), association, &DAssociation::assoicationClassUid, &DAssociation::setAssociationClassUid) + || attr(QStringLiteral("a"), association, &DAssociation::endA, &DAssociation::setEndA) + || attr(QStringLiteral("b"), association, &DAssociation::endB, &DAssociation::setEndB) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DAssociation) - // DAnnotation QARK_REGISTER_TYPE_NAME(DAnnotation, "DAnnotation") @@ -359,17 +345,16 @@ inline void Access<Archive, DAnnotation>::serialize(Archive &archive, DAnnotatio { archive || tag(annotation) || base<DElement>(annotation) - || attr(QStringLiteral("text"), annotation, &DAnnotation::getText, &DAnnotation::setText) - || attr(QStringLiteral("pos"), annotation, &DAnnotation::getPos, &DAnnotation::setPos) - || attr(QStringLiteral("rect"), annotation, &DAnnotation::getRect, &DAnnotation::setRect) - || attr(QStringLiteral("auto-sized"), annotation, &DAnnotation::hasAutoSize, &DAnnotation::setAutoSize) - || attr(QStringLiteral("visual-role"), annotation, &DAnnotation::getVisualRole, &DAnnotation::setVisualRole) + || attr(QStringLiteral("text"), annotation, &DAnnotation::text, &DAnnotation::setText) + || attr(QStringLiteral("pos"), annotation, &DAnnotation::pos, &DAnnotation::setPos) + || attr(QStringLiteral("rect"), annotation, &DAnnotation::rect, &DAnnotation::setRect) + || attr(QStringLiteral("auto-sized"), annotation, &DAnnotation::isAutoSized, &DAnnotation::setAutoSized) + || attr(QStringLiteral("visual-role"), annotation, &DAnnotation::visualRole, &DAnnotation::setVisualRole) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DAnnotation) - // DBoundary QARK_REGISTER_TYPE_NAME(DBoundary, "DBoundary") @@ -381,12 +366,12 @@ inline void Access<Archive, DBoundary>::serialize(Archive &archive, DBoundary &b { archive || tag(boundary) || base<DElement>(boundary) - || attr(QStringLiteral("text"), boundary, &DBoundary::getText, &DBoundary::setText) - || attr(QStringLiteral("pos"), boundary, &DBoundary::getPos, &DBoundary::setPos) - || attr(QStringLiteral("rect"), boundary, &DBoundary::getRect, &DBoundary::setRect) + || attr(QStringLiteral("text"), boundary, &DBoundary::text, &DBoundary::setText) + || attr(QStringLiteral("pos"), boundary, &DBoundary::pos, &DBoundary::setPos) + || attr(QStringLiteral("rect"), boundary, &DBoundary::rect, &DBoundary::setRect) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, DBoundary) -} +} // namespace qark diff --git a/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.h b/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.h index 18cdc4ceea..7954eac3a8 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.h +++ b/src/libs/3rdparty/modeling/qmt/serializer/diagramserializer.h @@ -40,15 +40,11 @@ namespace qark { QARK_SERIALIZE_ENUM(qmt::DObject::VisualPrimaryRole) - QARK_SERIALIZE_ENUM(qmt::DObject::VisualSecondaryRole) - QARK_SERIALIZE_ENUM(qmt::DObject::StereotypeDisplay) - QARK_SERIALIZE_ENUM(qmt::DClass::TemplateDisplay) - QARK_SERIALIZE_ENUM(qmt::DAnnotation::VisualRole) -} +} // namespace qark #endif // QMT_DIAGRAMSERIALIZER_H diff --git a/src/libs/3rdparty/modeling/qmt/serializer/infrastructureserializer.h b/src/libs/3rdparty/modeling/qmt/serializer/infrastructureserializer.h index 53b38d0609..8ac21377a4 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/infrastructureserializer.h +++ b/src/libs/3rdparty/modeling/qmt/serializer/infrastructureserializer.h @@ -40,7 +40,6 @@ #include "qark/serialize.h" #include "qark/access.h" - namespace qark { // Uid @@ -59,19 +58,17 @@ inline void load(Archive &archive, qmt::Uid &uid) uid.fromString(s); } - // Handle template<class Archive, class T> inline void serialize(Archive &archive, qmt::Handle<T> &handle) { archive || tag(QStringLiteral("handle"), handle) - || attr(QStringLiteral("uid"), handle, &qmt::Handle<T>::getUid, &qmt::Handle<T>::setUid) - || attr(QStringLiteral("target"), handle, &qmt::Handle<T>::getTarget, &qmt::Handle<T>::setTarget) + || attr(QStringLiteral("uid"), handle, &qmt::Handle<T>::uid, &qmt::Handle<T>::setUid) + || attr(QStringLiteral("target"), handle, &qmt::Handle<T>::target, &qmt::Handle<T>::setTarget) || end; } - // Handles template<class Archive, class T> @@ -82,6 +79,6 @@ inline void serialize(Archive &archive, qmt::Handles<T> &handles) || end; } -} +} // namespace qark #endif // QMT_INFRASTRUCTURESERIALIZER_H diff --git a/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.cpp b/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.cpp index e1a697d7fe..43cbc349a3 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.cpp +++ b/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.cpp @@ -42,7 +42,6 @@ #include "qmt/model/mdiagram.h" #include "qmt/model/mcanvasdiagram.h" #include "qmt/model/mitem.h" - #include "qmt/model/mrelation.h" #include "qmt/model/mdependency.h" #include "qmt/model/massociation.h" @@ -59,7 +58,6 @@ // namespace qualifiers in typenames within xml file (which breaks xml syntax) using namespace qmt; - namespace qark { // MExpansion @@ -75,7 +73,6 @@ inline void Access<Archive, MExpansion>::serialize(Archive &archive, MExpansion QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MExpansion) - // MSourceExpansion QARK_REGISTER_TYPE_NAME(MSourceExpansion, "MSourceExpansion") @@ -83,18 +80,17 @@ QARK_REGISTER_DERIVED_CLASS(QXmlInArchive, QXmlOutArchive, MSourceExpansion, MEx QARK_ACCESS_SERIALIZE(MSourceExpansion) template<class Archive> -inline void Access<Archive, MSourceExpansion>::serialize(Archive &archive, MSourceExpansion &source_expansion) +inline void Access<Archive, MSourceExpansion>::serialize(Archive &archive, MSourceExpansion &sourceExpansion) { - archive || tag(source_expansion) - || base<MExpansion>(source_expansion) - || attr(QStringLiteral("source"), source_expansion, &MSourceExpansion::getSourceId, &MSourceExpansion::setSourceId) - || attr(QStringLiteral("transient"), source_expansion, &MSourceExpansion::isTransient, &MSourceExpansion::setTransient) + archive || tag(sourceExpansion) + || base<MExpansion>(sourceExpansion) + || attr(QStringLiteral("source"), sourceExpansion, &MSourceExpansion::sourceId, &MSourceExpansion::setSourceId) + || attr(QStringLiteral("transient"), sourceExpansion, &MSourceExpansion::isTransient, &MSourceExpansion::setTransient) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MSourceExpansion) - // MElement QARK_REGISTER_TYPE_NAME(MElement, "MElement") @@ -104,16 +100,15 @@ template<class Archive> inline void Access<Archive, MElement>::serialize(Archive &archive, MElement &element) { archive || tag(element) - || attr(QStringLiteral("uid"), element, &MElement::getUid, &MElement::setUid) - || attr(QStringLiteral("flags"), element, &MElement::getFlags, &MElement::setFlags) - || attr(QStringLiteral("expansion"), element, &MElement::getExpansion, &MElement::setExpansion) - || attr(QStringLiteral("stereotypes"), element, &MElement::getStereotypes, &MElement::setStereotypes) + || attr(QStringLiteral("uid"), element, &MElement::uid, &MElement::setUid) + || attr(QStringLiteral("flags"), element, &MElement::flags, &MElement::setFlags) + || attr(QStringLiteral("expansion"), element, &MElement::expansion, &MElement::setExpansion) + || attr(QStringLiteral("stereotypes"), element, &MElement::stereotypes, &MElement::setStereotypes) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MElement) - // MObject QARK_REGISTER_TYPE_NAME(MObject, "MObject") @@ -125,15 +120,14 @@ inline void Access<Archive, MObject>::serialize(Archive &archive, MObject &objec { archive || tag(object) || base<MElement>(object) - || attr(QStringLiteral("name"), object, &MObject::getName, &MObject::setName) - || attr(QStringLiteral("children"), object, &MObject::getChildren, &MObject::setChildren) - || attr(QStringLiteral("relations"), object, &MObject::getRelations, &MObject::setRelations) + || attr(QStringLiteral("name"), object, &MObject::name, &MObject::setName) + || attr(QStringLiteral("children"), object, &MObject::children, &MObject::setChildren) + || attr(QStringLiteral("relations"), object, &MObject::relations, &MObject::setRelations) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MObject) - // MPackage QARK_REGISTER_TYPE_NAME(MPackage, "MPackage") @@ -151,7 +145,6 @@ inline void Access<Archive, MPackage>::serialize(Archive &archive, MPackage &pac QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MPackage) - // MClass QARK_REGISTER_TYPE_NAME(MClass, "MClass") @@ -164,15 +157,14 @@ inline void Access<Archive, MClass>::serialize(Archive &archive, MClass &klass) { archive || tag(klass) || base<MObject>(klass) - || attr(QStringLiteral("namespace"), klass, &MClass::getNamespace, &MClass::setNamespace) - || attr(QStringLiteral("template"), klass, &MClass::getTemplateParameters, &MClass::setTemplateParameters) - || attr(QStringLiteral("members"), klass, &MClass::getMembers, &MClass::setMembers) + || attr(QStringLiteral("namespace"), klass, &MClass::umlNamespace, &MClass::setUmlNamespace) + || attr(QStringLiteral("template"), klass, &MClass::templateParameters, &MClass::setTemplateParameters) + || attr(QStringLiteral("members"), klass, &MClass::members, &MClass::setMembers) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MClass) - // MClassMember QARK_REGISTER_TYPE_NAME(MClassMember, "MClassMember") @@ -182,19 +174,18 @@ template<class Archive> inline void Access<Archive, MClassMember>::serialize(Archive &archive, MClassMember &member) { archive || tag(member) - || attr(QStringLiteral("uid"), member, &MClassMember::getUid, &MClassMember::setUid) - || attr(QStringLiteral("stereotypes"), member, &MClassMember::getStereotypes, &MClassMember::setStereotypes) - || attr(QStringLiteral("group"), member, &MClassMember::getGroup, &MClassMember::setGroup) - || attr(QStringLiteral("visibility"), member, &MClassMember::getVisibility, &MClassMember::setVisibility) - || attr(QStringLiteral("type"), member, &MClassMember::getMemberType, &MClassMember::setMemberType) - || attr(QStringLiteral("properties"), member, &MClassMember::getProperties, &MClassMember::setProperties) - || attr(QStringLiteral("declaration"), member, &MClassMember::getDeclaration, &MClassMember::setDeclaration) + || attr(QStringLiteral("uid"), member, &MClassMember::uid, &MClassMember::setUid) + || attr(QStringLiteral("stereotypes"), member, &MClassMember::stereotypes, &MClassMember::setStereotypes) + || attr(QStringLiteral("group"), member, &MClassMember::group, &MClassMember::setGroup) + || attr(QStringLiteral("visibility"), member, &MClassMember::visibility, &MClassMember::setVisibility) + || attr(QStringLiteral("type"), member, &MClassMember::memberType, &MClassMember::setMemberType) + || attr(QStringLiteral("properties"), member, &MClassMember::properties, &MClassMember::setProperties) + || attr(QStringLiteral("declaration"), member, &MClassMember::declaration, &MClassMember::setDeclaration) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MClassMember) - // MComponent QARK_REGISTER_TYPE_NAME(MComponent, "MComponent") @@ -212,7 +203,6 @@ inline void Access<Archive, MComponent>::serialize(Archive &archive, MComponent QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MComponent) - // MDiagram QARK_REGISTER_TYPE_NAME(MDiagram, "MDiagram") @@ -225,14 +215,13 @@ inline void Access<Archive, MDiagram>::serialize(Archive &archive, MDiagram &dia { archive || tag(diagram) || base<MObject>(diagram) - || attr(QStringLiteral("elements"), diagram, &MDiagram::getDiagramElements, &MDiagram::setDiagramElements) - || attr(QStringLiteral("last-modified"), diagram, &MDiagram::getLastModified, &MDiagram::setLastModified) + || attr(QStringLiteral("elements"), diagram, &MDiagram::diagramElements, &MDiagram::setDiagramElements) + || attr(QStringLiteral("last-modified"), diagram, &MDiagram::lastModified, &MDiagram::setLastModified) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MDiagram) - // MCanvasDiagram QARK_REGISTER_TYPE_NAME(MCanvasDiagram, "MCanvasDiagram") @@ -251,7 +240,6 @@ inline void Access<Archive, MCanvasDiagram>::serialize(Archive &archive, MCanvas QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MCanvasDiagram) - // MItem QARK_REGISTER_TYPE_NAME(MItem, "MItem") @@ -265,14 +253,13 @@ inline void Access<Archive, MItem>::serialize(Archive &archive, MItem &item) archive || tag(item) || base<MObject>(item) || attr(QStringLiteral("variety-editable"), item, &MItem::isVarietyEditable, &MItem::setVarietyEditable) - || attr(QStringLiteral("variety"), item, &MItem::getVariety, &MItem::setVariety) + || attr(QStringLiteral("variety"), item, &MItem::variety, &MItem::setVariety) || attr(QStringLiteral("shape-editable"), item, &MItem::isShapeEditable, &MItem::setShapeEditable) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MItem) - // MRelation QARK_REGISTER_TYPE_NAME(MRelation, "MRelation") @@ -284,15 +271,14 @@ inline void Access<Archive, MRelation>::serialize(Archive &archive, MRelation &r { archive || tag(relation) || base<MElement>(relation) - || attr(QStringLiteral("name"), relation, &MRelation::getName, &MRelation::setName) - || attr(QStringLiteral("a"), relation, &MRelation::getEndA, &MRelation::setEndA) - || attr(QStringLiteral("b"), relation, &MRelation::getEndB, &MRelation::setEndB) + || attr(QStringLiteral("name"), relation, &MRelation::name, &MRelation::setName) + || attr(QStringLiteral("a"), relation, &MRelation::endAUid, &MRelation::setEndAUid) + || attr(QStringLiteral("b"), relation, &MRelation::endBUid, &MRelation::setEndBUid) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MRelation) - // MInheritance QARK_REGISTER_TYPE_NAME(MInheritance, "MInheritance") @@ -310,7 +296,6 @@ inline void Access<Archive, MInheritance>::serialize(Archive &archive, MInherita QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MInheritance) - // MDependency QARK_REGISTER_TYPE_NAME(MDependency, "MDependency") @@ -323,30 +308,28 @@ inline void Access<Archive, MDependency>::serialize(Archive &archive, MDependenc { archive || tag(dependency) || base<MRelation>(dependency) - || attr(QStringLiteral("direction"), dependency, &MDependency::getDirection, &MDependency::setDirection) + || attr(QStringLiteral("direction"), dependency, &MDependency::direction, &MDependency::setDirection) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MDependency) - // MAssociation QARK_REGISTER_TYPE_NAME(MAssociationEnd, "MAssociationEnd") QARK_ACCESS_SERIALIZE(MAssociationEnd) template<class Archive> -inline void Access<Archive, MAssociationEnd>::serialize(Archive &archive, MAssociationEnd &association_end) +inline void Access<Archive, MAssociationEnd>::serialize(Archive &archive, MAssociationEnd &associationEnd) { - archive || tag(association_end) - || attr(QStringLiteral("name"), association_end, &MAssociationEnd::getName, &MAssociationEnd::setName) - || attr(QStringLiteral("cardinality"), association_end, &MAssociationEnd::getCardinality, &MAssociationEnd::setCardinality) - || attr(QStringLiteral("navigable"), association_end, &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable) - || attr(QStringLiteral("kind"), association_end, &MAssociationEnd::getKind, &MAssociationEnd::setKind) + archive || tag(associationEnd) + || attr(QStringLiteral("name"), associationEnd, &MAssociationEnd::name, &MAssociationEnd::setName) + || attr(QStringLiteral("cardinality"), associationEnd, &MAssociationEnd::cardinality, &MAssociationEnd::setCardinality) + || attr(QStringLiteral("navigable"), associationEnd, &MAssociationEnd::isNavigable, &MAssociationEnd::setNavigable) + || attr(QStringLiteral("kind"), associationEnd, &MAssociationEnd::kind, &MAssociationEnd::setKind) || end; } - QARK_REGISTER_TYPE_NAME(MAssociation, "MAssociation") QARK_REGISTER_DERIVED_CLASS(QXmlInArchive, QXmlOutArchive, MAssociation, MElement) QARK_REGISTER_DERIVED_CLASS(QXmlInArchive, QXmlOutArchive, MAssociation, MRelation) @@ -357,12 +340,12 @@ inline void Access<Archive, MAssociation>::serialize(Archive &archive, MAssociat { archive || tag(association) || base<MRelation>(association) - || attr(QStringLiteral("class"), association, &MAssociation::getAssoicationClassUid, &MAssociation::setAssociationClassUid) - || attr(QStringLiteral("a"), association, &MAssociation::getA, &MAssociation::setA) - || attr(QStringLiteral("b"), association, &MAssociation::getB, &MAssociation::setB) + || attr(QStringLiteral("class"), association, &MAssociation::assoicationClassUid, &MAssociation::setAssociationClassUid) + || attr(QStringLiteral("a"), association, &MAssociation::endA, &MAssociation::setEndA) + || attr(QStringLiteral("b"), association, &MAssociation::endB, &MAssociation::setEndB) || end; } QARK_ACCESS_SPECIALIZE(QXmlInArchive, QXmlOutArchive, MAssociation) -} +} // namespace qark diff --git a/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.h b/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.h index f08f256ed9..6d9b81ea39 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.h +++ b/src/libs/3rdparty/modeling/qmt/serializer/modelserializer.h @@ -43,11 +43,9 @@ namespace qark { QARK_SERIALIZE_ENUM(qmt::MClassMember::MemberType) QARK_SERIALIZE_ENUM(qmt::MClassMember::Property) QARK_SERIALIZE_ENUM(qmt::MClassMember::Visibility) - QARK_SERIALIZE_ENUM(qmt::MDependency::Direction) - QARK_SERIALIZE_ENUM(qmt::MAssociationEnd::Kind) -} +} // namespace qark #endif // QMT_MODELSERIALIZER_H diff --git a/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.cpp b/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.cpp index 05e0633748..7b9e69628b 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.cpp +++ b/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.cpp @@ -30,12 +30,9 @@ #include "projectserializer.h" -//#define USE_COMPRESSED_FILES - #include "infrastructureserializer.h" #include "qmt/project/project.h" - #include "qmt/model/mpackage.h" #include "qark/qxmloutarchive.h" @@ -50,7 +47,6 @@ #include <QFile> - namespace qark { using namespace qmt; @@ -61,13 +57,12 @@ template<class Archive> void serialize(Archive &archive, Project &project) { archive || qark::tag(QStringLiteral("project"), project) - || qark::attr(QStringLiteral("uid"), project, &Project::getUid, &Project::setUid) - || qark::attr(QStringLiteral("root-package"), project, &Project::getRootPackage, &Project::setRootPackage) + || qark::attr(QStringLiteral("uid"), project, &Project::uid, &Project::setUid) + || qark::attr(QStringLiteral("root-package"), project, &Project::rootPackage, &Project::setRootPackage) || qark::end; } -} - +} // namespace qark namespace qmt { @@ -79,26 +74,24 @@ ProjectSerializer::~ProjectSerializer() { } -void ProjectSerializer::save(const QString &file_name, const Project *project) +void ProjectSerializer::save(const QString &fileName, const Project *project) { QMT_CHECK(project); - QFile file(file_name); - if (!file.open(QIODevice::WriteOnly)) { - throw FileCreationException(file_name); - } + QFile file(fileName); + if (!file.open(QIODevice::WriteOnly)) + throw FileCreationException(fileName); - QIODevice *xml_device = &file; + QIODevice *xmlDevice = &file; #ifdef USE_COMPRESSED_FILES qmt::QCompressedDevice compressor(&file); - if (!compressor.open(QIODevice::WriteOnly)) { + if (!compressor.open(QIODevice::WriteOnly)) throw IOException("Unable to create compressed file"); - } - xml_device = &compressor; + xmlDevice = &compressor; #endif - QXmlStreamWriter writer(xml_device); + QXmlStreamWriter writer(xmlDevice); write(&writer, project); #ifdef USE_COMPRESSED_FILES @@ -117,26 +110,24 @@ QByteArray ProjectSerializer::save(const Project *project) return buffer; } -void ProjectSerializer::load(const QString &file_name, Project *project) +void ProjectSerializer::load(const QString &fileName, Project *project) { QMT_CHECK(project); - QFile file(file_name); - if (!file.open(QIODevice::ReadOnly)) { - throw FileNotFoundException(file_name); - } + QFile file(fileName); + if (!file.open(QIODevice::ReadOnly)) + throw FileNotFoundException(fileName); - QIODevice *xml_device = &file; + QIODevice *xmlDevice = &file; #ifdef USE_COMPRESSED_FILES qmt::QCompressedDevice uncompressor(&file); - if (!uncompressor.open(QIODevice::ReadOnly)) { + if (!uncompressor.open(QIODevice::ReadOnly)) throw IOException("Unable to access compressed file"); - } - xml_device = &uncompressor; + xmlDevice = &uncompressor; #endif - QXmlStreamReader reader(xml_device); + QXmlStreamReader reader(xmlDevice); try { qark::QXmlInArchive archive(reader); @@ -146,9 +137,9 @@ void ProjectSerializer::load(const QString &file_name, Project *project) archive >> qark::end; archive.endDocument(); } catch (const qark::QXmlInArchive::FileFormatException &) { - throw FileIOException(QStringLiteral("illegal file format"), file_name); + throw FileIOException(QStringLiteral("illegal file format"), fileName); } catch (...) { - throw FileIOException(QStringLiteral("serialization error"), file_name); + throw FileIOException(QStringLiteral("serialization error"), fileName); } #ifdef USE_COMPRESSED_FILES @@ -172,7 +163,6 @@ void ProjectSerializer::write(QXmlStreamWriter *writer, const Project *project) } catch (...) { throw IOException(QStringLiteral("serialization error")); } - } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.h b/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.h index 065f73cc4d..f4ff6e58c9 100644 --- a/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.h +++ b/src/libs/3rdparty/modeling/qmt/serializer/projectserializer.h @@ -39,34 +39,25 @@ QT_BEGIN_NAMESPACE class QXmlStreamWriter; QT_END_NAMESPACE - namespace qmt { class Project; - class QMT_EXPORT ProjectSerializer { public: - ProjectSerializer(); - ~ProjectSerializer(); -public: - - void save(const QString &file_name, const Project *project); - + void save(const QString &fileName, const Project *project); QByteArray save(const Project *project); - - void load(const QString &file_name, Project *project); + void load(const QString &fileName, Project *project); private: - void write(QXmlStreamWriter *writer, const Project *project); }; -} +} // namespace qmt #endif // QMT_PROJECTSERIALIZER_H diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.cpp index 758c447921..bf99729ba4 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.cpp @@ -38,62 +38,60 @@ #include <QList> #include <QPainter> - template<class T> QList<T *> CloneAll(const QList<T *> &rhs) { QList<T *> result; - foreach (T *t, rhs) { + foreach (T *t, rhs) result.append(t != 0 ? t->Clone() : 0); - } return result; } namespace qmt { -struct IconShape::IconShapePrivate { +class IconShape::IconShapePrivate +{ +public: IconShapePrivate() { } IconShapePrivate(const IconShapePrivate &rhs) - : _shapes(CloneAll(rhs._shapes)) + : m_shapes(CloneAll(rhs.m_shapes)) { } ~IconShapePrivate() { - qDeleteAll(_shapes); + qDeleteAll(m_shapes); } IconShapePrivate &operator=(const IconShapePrivate &rhs) { if (this != &rhs) { - qDeleteAll(_shapes); - _shapes = CloneAll(rhs._shapes); + qDeleteAll(m_shapes); + m_shapes = CloneAll(rhs.m_shapes); } return *this; } - PathShape *getActivePath(); + PathShape *activePath(); - QList<IShape *> _shapes; + QList<IShape *> m_shapes; }; -PathShape *IconShape::IconShapePrivate::getActivePath() +PathShape *IconShape::IconShapePrivate::activePath() { - PathShape *path_shape = 0; - if (_shapes.count() > 0) { - path_shape = dynamic_cast<PathShape *>(_shapes.last()); - } - if (path_shape == 0) { - path_shape = new PathShape(); - _shapes.append(path_shape); + PathShape *pathShape = 0; + if (m_shapes.count() > 0) + pathShape = dynamic_cast<PathShape *>(m_shapes.last()); + if (pathShape == 0) { + pathShape = new PathShape(); + m_shapes.append(pathShape); } - return path_shape; + return pathShape; } - IconShape::IconShape() : d(new IconShapePrivate) { @@ -111,72 +109,70 @@ IconShape::~IconShape() IconShape &IconShape::operator=(const IconShape &rhs) { - if (this != &rhs) { + if (this != &rhs) *d = *rhs.d; - } return *this; } void IconShape::addLine(const ShapePointF &pos1, const ShapePointF &pos2) { - d->_shapes.append(new LineShape(pos1, pos2)); + d->m_shapes.append(new LineShape(pos1, pos2)); } void IconShape::addRect(const ShapePointF &pos, const ShapeSizeF &size) { - d->_shapes.append(new RectShape(pos, size)); + d->m_shapes.append(new RectShape(pos, size)); } void IconShape::addRoundedRect(const ShapePointF &pos, const ShapeSizeF &size, const ShapeValueF &radius) { - d->_shapes.append(new RoundedRectShape(pos, size, radius)); + d->m_shapes.append(new RoundedRectShape(pos, size, radius)); } void IconShape::addCircle(const ShapePointF ¢er, const ShapeValueF &radius) { - d->_shapes.append(new CircleShape(center, radius)); + d->m_shapes.append(new CircleShape(center, radius)); } void IconShape::addEllipse(const ShapePointF ¢er, const ShapeSizeF &radius) { - d->_shapes.append(new EllipseShape(center, radius)); + d->m_shapes.append(new EllipseShape(center, radius)); } -void IconShape::addArc(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal span_angle) +void IconShape::addArc(const ShapePointF ¢er, const ShapeSizeF &radius, qreal startAngle, qreal spanAngle) { - d->_shapes.append(new ArcShape(center, radius, start_angle, span_angle)); + d->m_shapes.append(new ArcShape(center, radius, startAngle, spanAngle)); } void IconShape::moveTo(const ShapePointF &pos) { - d->getActivePath()->moveTo(pos); + d->activePath()->moveTo(pos); } void IconShape::lineTo(const ShapePointF &pos) { - d->getActivePath()->lineTo(pos); + d->activePath()->lineTo(pos); } void IconShape::arcMoveTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal angle) { - d->getActivePath()->arcMoveTo(center, radius, angle); + d->activePath()->arcMoveTo(center, radius, angle); } -void IconShape::arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal sweep_length) +void IconShape::arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal startAngle, qreal sweepLength) { - d->getActivePath()->arcTo(center, radius, start_angle, sweep_length); + d->activePath()->arcTo(center, radius, startAngle, sweepLength); } void IconShape::closePath() { - d->getActivePath()->close(); + d->activePath()->close(); } void IconShape::visitShapes(ShapeConstVisitor *visitor) const { - foreach (IShape *p, d->_shapes) { + foreach (IShape *p, d->m_shapes) p->accept(visitor); - } } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.h b/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.h index 8ac0aebd1e..c36be1fa10 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/iconshape.h @@ -41,61 +41,39 @@ class ShapePointF; class ShapeSizeF; class ShapeConstVisitor; - class QMT_EXPORT IconShape { - struct IconShapePrivate; + class IconShapePrivate; public: - IconShape(); - IconShape(const IconShape &rhs); - ~IconShape(); -public: - IconShape &operator=(const IconShape &rhs); -public: - - QSizeF getSize() const; - + QSizeF size() const; void setSize(const QSizeF &size); -public: - void addLine(const ShapePointF &pos1, const ShapePointF &pos2); - void addRect(const ShapePointF &pos, const ShapeSizeF &size); - void addRoundedRect(const ShapePointF &pos, const ShapeSizeF &size, const ShapeValueF &radius); - void addCircle(const ShapePointF ¢er, const ShapeValueF &radius); - void addEllipse(const ShapePointF ¢er, const ShapeSizeF &radius); - - void addArc(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal span_angle); + void addArc(const ShapePointF ¢er, const ShapeSizeF &radius, + qreal startAngle, qreal spanAngle); void moveTo(const ShapePointF &pos); - void lineTo(const ShapePointF &pos); - void arcMoveTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal angle); - - void arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal sweep_length); - + void arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, + qreal startAngle, qreal sweepLength); void closePath(); -public: - void visitShapes(ShapeConstVisitor *visitor) const; private: - IconShapePrivate *d; - }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shape.h b/src/libs/3rdparty/modeling/qmt/stereotype/shape.h index d862bc4ec6..3b3e60da87 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shape.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shape.h @@ -36,24 +36,16 @@ namespace qmt { class ShapeVisitor; class ShapeConstVisitor; - class IShape { public: - virtual ~IShape() { } -public: - virtual IShape *Clone() const = 0; - -public: - virtual void accept(ShapeVisitor *visitor) = 0; - virtual void accept(ShapeConstVisitor *visitor) const = 0; }; -} +} // namespace qmt #endif // QMT_SHAPE_H diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.cpp index 977d7eb05e..abed374eee 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.cpp @@ -34,201 +34,201 @@ namespace qmt { -ShapePaintVisitor::ShapePaintVisitor(QPainter *painter, const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &size) - : _painter(painter), - _scaled_origin(scaled_origin), - _original_size(original_size), - _base_size(base_size), - _size(size) +ShapePaintVisitor::ShapePaintVisitor(QPainter *painter, const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &baseSize, const QSizeF &size) + : m_painter(painter), + m_scaledOrigin(scaledOrigin), + m_originalSize(originalSize), + m_baseSize(baseSize), + m_size(size) { } -void ShapePaintVisitor::visitLine(const LineShape *shape_line) +void ShapePaintVisitor::visitLine(const LineShape *shapeLine) { - QPointF p1 = shape_line->getPos1().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - QPointF p2 = shape_line->getPos2().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, p1.x() != p2.x() && p1.y() != p2.y()); - _painter->drawLine(p1, p2); - _painter->restore(); + QPointF p1 = shapeLine->pos1().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + QPointF p2 = shapeLine->pos2().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, p1.x() != p2.x() && p1.y() != p2.y()); + m_painter->drawLine(p1, p2); + m_painter->restore(); } -void ShapePaintVisitor::visitRect(const RectShape *shape_rect) +void ShapePaintVisitor::visitRect(const RectShape *shapeRect) { - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, false); - _painter->drawRect(QRectF(shape_rect->getPos().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_rect->getSize().mapScaledTo(_scaled_origin, _original_size, _base_size, _size))); - _painter->restore(); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, false); + m_painter->drawRect(QRectF(shapeRect->pos().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeRect->size().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size))); + m_painter->restore(); } -void ShapePaintVisitor::visitRoundedRect(const RoundedRectShape *shape_rounded_rect) +void ShapePaintVisitor::visitRoundedRect(const RoundedRectShape *shapeRoundedRect) { - qreal radius_x = shape_rounded_rect->getRadius().mapScaledTo(0, _original_size.width(), _base_size.width(), _size.width()); - qreal radius_y = shape_rounded_rect->getRadius().mapScaledTo(0, _original_size.height(), _base_size.height(), _size.height()); - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, true); - _painter->drawRoundedRect(QRectF(shape_rounded_rect->getPos().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_rounded_rect->getSize().mapScaledTo(_scaled_origin, _original_size, _base_size, _size)), - radius_x, radius_y); - _painter->restore(); + qreal radiusX = shapeRoundedRect->radius().mapScaledTo(0, m_originalSize.width(), m_baseSize.width(), m_size.width()); + qreal radiusY = shapeRoundedRect->radius().mapScaledTo(0, m_originalSize.height(), m_baseSize.height(), m_size.height()); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, true); + m_painter->drawRoundedRect(QRectF(shapeRoundedRect->pos().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeRoundedRect->size().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)), + radiusX, radiusY); + m_painter->restore(); } -void ShapePaintVisitor::visitCircle(const CircleShape *shape_circle) +void ShapePaintVisitor::visitCircle(const CircleShape *shapeCircle) { - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, true); - _painter->drawEllipse(shape_circle->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_circle->getRadius().mapScaledTo(_scaled_origin.x(), _original_size.width(), _base_size.width(), _size.width()), - shape_circle->getRadius().mapScaledTo(_scaled_origin.y(), _original_size.height(), _base_size.height(), _size.height())); - _painter->restore(); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, true); + m_painter->drawEllipse(shapeCircle->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeCircle->radius().mapScaledTo(m_scaledOrigin.x(), m_originalSize.width(), m_baseSize.width(), m_size.width()), + shapeCircle->radius().mapScaledTo(m_scaledOrigin.y(), m_originalSize.height(), m_baseSize.height(), m_size.height())); + m_painter->restore(); } -void ShapePaintVisitor::visitEllipse(const EllipseShape *shape_ellipse) +void ShapePaintVisitor::visitEllipse(const EllipseShape *shapeEllipse) { - QSizeF radius = shape_ellipse->getRadius().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, true); - _painter->drawEllipse(shape_ellipse->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), + QSizeF radius = shapeEllipse->radius().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, true); + m_painter->drawEllipse(shapeEllipse->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), radius.width(), radius.height()); - _painter->restore(); + m_painter->restore(); } -void ShapePaintVisitor::visitArc(const ArcShape *shape_arc) +void ShapePaintVisitor::visitArc(const ArcShape *shapeArc) { - QSizeF radius = shape_arc->getRadius().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, true); - _painter->drawArc(QRectF(shape_arc->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), radius * 2.0), - shape_arc->getStartAngle() * 16, shape_arc->getSpanAngle() * 16); - _painter->restore(); + QSizeF radius = shapeArc->radius().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, true); + m_painter->drawArc(QRectF(shapeArc->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0), + shapeArc->startAngle() * 16, shapeArc->spanAngle() * 16); + m_painter->restore(); } -void ShapePaintVisitor::visitPath(const PathShape *shape_path) +void ShapePaintVisitor::visitPath(const PathShape *shapePath) { - _painter->save(); - _painter->setRenderHint(QPainter::Antialiasing, true); + m_painter->save(); + m_painter->setRenderHint(QPainter::Antialiasing, true); QPainterPath path; - foreach (const PathShape::Element &element, shape_path->getElements()) { - switch (element._element_type) { - case PathShape::TYPE_NONE: + foreach (const PathShape::Element &element, shapePath->elements()) { + switch (element.m_elementType) { + case PathShape::TypeNone: // nothing to do break; - case PathShape::TYPE_MOVETO: - path.moveTo(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + case PathShape::TypeMoveto: + path.moveTo(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); break; - case PathShape::TYPE_LINETO: - path.lineTo(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + case PathShape::TypeLineto: + path.lineTo(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); break; - case PathShape::TYPE_ARCMOVETO: + case PathShape::TypeArcmoveto: { - QSizeF radius = element._size.mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - path.arcMoveTo(QRectF(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), + QSizeF radius = element.m_size.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + path.arcMoveTo(QRectF(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0), - element._angle1); + element.m_angle1); break; } - case PathShape::TYPE_ARCTO: + case PathShape::TypeArcto: { - QSizeF radius = element._size.mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - path.arcTo(QRectF(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), + QSizeF radius = element.m_size.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + path.arcTo(QRectF(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0), - element._angle1, element._angle2); + element.m_angle1, element.m_angle2); break; } - case PathShape::TYPE_CLOSE: + case PathShape::TypeClose: path.closeSubpath(); break; } } - _painter->drawPath(path); - _painter->restore(); + m_painter->drawPath(path); + m_painter->restore(); } - -ShapeSizeVisitor::ShapeSizeVisitor(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &size) - : _scaled_origin(scaled_origin), - _original_size(original_size), - _base_size(base_size), - _size(size) +ShapeSizeVisitor::ShapeSizeVisitor(const QPointF &scaledOrigin, const QSizeF &originalSize, const QSizeF &baseSize, + const QSizeF &size) + : m_scaledOrigin(scaledOrigin), + m_originalSize(originalSize), + m_baseSize(baseSize), + m_size(size) { } -void ShapeSizeVisitor::visitLine(const LineShape *shape_line) +void ShapeSizeVisitor::visitLine(const LineShape *shapeLine) { - _bounding_rect |= QRectF(shape_line->getPos1().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_line->getPos2().mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + m_boundingRect |= QRectF(shapeLine->pos1().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeLine->pos2().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); } -void ShapeSizeVisitor::visitRect(const RectShape *shape_rect) +void ShapeSizeVisitor::visitRect(const RectShape *shapeRect) { - _bounding_rect |= QRectF(shape_rect->getPos().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_rect->getSize().mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + m_boundingRect |= QRectF(shapeRect->pos().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeRect->size().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); } -void ShapeSizeVisitor::visitRoundedRect(const RoundedRectShape *shape_rounded_rect) +void ShapeSizeVisitor::visitRoundedRect(const RoundedRectShape *shapeRoundedRect) { - _bounding_rect |= QRectF(shape_rounded_rect->getPos().mapScaledTo(_scaled_origin, _original_size, _base_size, _size), - shape_rounded_rect->getSize().mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + m_boundingRect |= QRectF(shapeRoundedRect->pos().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size), + shapeRoundedRect->size().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); } -void ShapeSizeVisitor::visitCircle(const CircleShape *shape_circle) +void ShapeSizeVisitor::visitCircle(const CircleShape *shapeCircle) { - QSizeF radius = QSizeF(shape_circle->getRadius().mapScaledTo(_scaled_origin.x(), _original_size.width(), _base_size.width(), _size.width()), - shape_circle->getRadius().mapScaledTo(_scaled_origin.y(), _original_size.height(), _base_size.height(), _size.height())); - _bounding_rect |= QRectF(shape_circle->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), radius * 2.0); + QSizeF radius = QSizeF(shapeCircle->radius().mapScaledTo(m_scaledOrigin.x(), m_originalSize.width(), m_baseSize.width(), m_size.width()), + shapeCircle->radius().mapScaledTo(m_scaledOrigin.y(), m_originalSize.height(), m_baseSize.height(), m_size.height())); + m_boundingRect |= QRectF(shapeCircle->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0); } -void ShapeSizeVisitor::visitEllipse(const EllipseShape *shape_ellipse) +void ShapeSizeVisitor::visitEllipse(const EllipseShape *shapeEllipse) { - QSizeF radius = shape_ellipse->getRadius().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - _bounding_rect |= QRectF(shape_ellipse->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), radius * 2.0); + QSizeF radius = shapeEllipse->radius().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + m_boundingRect |= QRectF(shapeEllipse->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0); } -void ShapeSizeVisitor::visitArc(const ArcShape *shape_arc) +void ShapeSizeVisitor::visitArc(const ArcShape *shapeArc) { // TODO this is the max bound rect; not the minimal one - QSizeF radius = shape_arc->getRadius().mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - _bounding_rect |= QRectF(shape_arc->getCenter().mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), radius * 2.0); + QSizeF radius = shapeArc->radius().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + m_boundingRect |= QRectF(shapeArc->center().mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0); } -void ShapeSizeVisitor::visitPath(const PathShape *shape_path) +void ShapeSizeVisitor::visitPath(const PathShape *shapePath) { QPainterPath path; - foreach (const PathShape::Element &element, shape_path->getElements()) { - switch (element._element_type) { - case PathShape::TYPE_NONE: + foreach (const PathShape::Element &element, shapePath->elements()) { + switch (element.m_elementType) { + case PathShape::TypeNone: // nothing to do break; - case PathShape::TYPE_MOVETO: - path.moveTo(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + case PathShape::TypeMoveto: + path.moveTo(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); break; - case PathShape::TYPE_LINETO: - path.lineTo(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size)); + case PathShape::TypeLineto: + path.lineTo(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size)); break; - case PathShape::TYPE_ARCMOVETO: + case PathShape::TypeArcmoveto: { - QSizeF radius = element._size.mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - path.arcMoveTo(QRectF(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), + QSizeF radius = element.m_size.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + path.arcMoveTo(QRectF(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0), - element._angle1); + element.m_angle1); break; } - case PathShape::TYPE_ARCTO: + case PathShape::TypeArcto: { - QSizeF radius = element._size.mapScaledTo(_scaled_origin, _original_size, _base_size, _size); - path.arcTo(QRectF(element._position.mapScaledTo(_scaled_origin, _original_size, _base_size, _size) - QPointF(radius.width(), radius.height()), + QSizeF radius = element.m_size.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size); + path.arcTo(QRectF(element.m_position.mapScaledTo(m_scaledOrigin, m_originalSize, m_baseSize, m_size) - QPointF(radius.width(), radius.height()), radius * 2.0), - element._angle1, element._angle2); + element.m_angle1, element.m_angle2); break; } - case PathShape::TYPE_CLOSE: + case PathShape::TypeClose: path.closeSubpath(); break; } } - _bounding_rect |= path.boundingRect(); + m_boundingRect |= path.boundingRect(); } - } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.h b/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.h index 0d4074cd99..c8c588b86c 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapepaintvisitor.h @@ -38,85 +38,52 @@ #include <QPointF> #include <QSizeF> - namespace qmt { -class QMT_EXPORT ShapePaintVisitor - : public ShapeConstVisitor { +class QMT_EXPORT ShapePaintVisitor : public ShapeConstVisitor +{ public: + ShapePaintVisitor(QPainter *painter, const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &baseSize, const QSizeF &size); - ShapePaintVisitor(QPainter *painter, const QPointF &scaled_origin, const QSizeF &original_size, - const QSizeF &base_size, const QSizeF &size); - -public: - - void visitLine(const LineShape *shape_line); - - void visitRect(const RectShape *shape_rect); - - void visitRoundedRect(const RoundedRectShape *shape_rounded_rect); - - void visitCircle(const CircleShape *shape_circle); - - void visitEllipse(const EllipseShape *shape_ellipse); - - void visitArc(const ArcShape *shape_arc); - - void visitPath(const PathShape *shape_path); + void visitLine(const LineShape *shapeLine); + void visitRect(const RectShape *shapeRect); + void visitRoundedRect(const RoundedRectShape *shapeRoundedRect); + void visitCircle(const CircleShape *shapeCircle); + void visitEllipse(const EllipseShape *shapeEllipse); + void visitArc(const ArcShape *shapeArc); + void visitPath(const PathShape *shapePath); private: - - QPainter *_painter; - - QPointF _scaled_origin; - - QSizeF _original_size; - - QSizeF _base_size; - - QSizeF _size; - + QPainter *m_painter; + QPointF m_scaledOrigin; + QSizeF m_originalSize; + QSizeF m_baseSize; + QSizeF m_size; }; - -class QMT_EXPORT ShapeSizeVisitor - : public ShapeConstVisitor { +class QMT_EXPORT ShapeSizeVisitor : public ShapeConstVisitor +{ public: + ShapeSizeVisitor(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &baseSize, const QSizeF &size); - ShapeSizeVisitor(const QPointF &scaled_origin, const QSizeF &original_size, - const QSizeF &base_size, const QSizeF &size); + QRectF boundingRect() const { return m_boundingRect; } -public: - - QRectF getBoundingRect() const { return _bounding_rect; } - -public: - - void visitLine(const LineShape *shape_line); - - void visitRect(const RectShape *shape_rect); - - void visitRoundedRect(const RoundedRectShape *shape_rounded_rect); - - void visitCircle(const CircleShape *shape_circle); - - void visitEllipse(const EllipseShape *shape_ellipse); - - void visitArc(const ArcShape *shape_arc); - - void visitPath(const PathShape *shape_path); + void visitLine(const LineShape *shapeLine); + void visitRect(const RectShape *shapeRect); + void visitRoundedRect(const RoundedRectShape *shapeRoundedRect); + void visitCircle(const CircleShape *shapeCircle); + void visitEllipse(const EllipseShape *shapeEllipse); + void visitArc(const ArcShape *shapeArc); + void visitPath(const PathShape *shapePath); private: - - QPointF _scaled_origin; - - QSizeF _original_size; - - QSizeF _base_size; - - QSizeF _size; - - QRectF _bounding_rect; + QPointF m_scaledOrigin; + QSizeF m_originalSize; + QSizeF m_baseSize; + QSizeF m_size; + QRectF m_boundingRect; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapes.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/shapes.cpp index 21fa0cba1b..00ac021f3b 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapes.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapes.cpp @@ -147,41 +147,41 @@ void PathShape::accept(ShapeConstVisitor *visitor) const void PathShape::moveTo(const ShapePointF &pos) { - Element element(TYPE_MOVETO); - element._position = pos; - _elements.append(element); + Element element(TypeMoveto); + element.m_position = pos; + m_elements.append(element); } void PathShape::lineTo(const ShapePointF &pos) { - Element element(TYPE_LINETO); - element._position = pos; - _elements.append(element); + Element element(TypeLineto); + element.m_position = pos; + m_elements.append(element); } void PathShape::arcMoveTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal angle) { - Element element(TYPE_ARCMOVETO); - element._position = center; - element._size = radius; - element._angle1 = angle; - _elements.append(element); + Element element(TypeArcmoveto); + element.m_position = center; + element.m_size = radius; + element.m_angle1 = angle; + m_elements.append(element); } -void PathShape::arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal sweep_length) +void PathShape::arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal startAngle, qreal sweepLength) { - Element element(TYPE_ARCTO); - element._position = center; - element._size = radius; - element._angle1 = start_angle; - element._angle2 = sweep_length; - _elements.append(element); + Element element(TypeArcto); + element.m_position = center; + element.m_size = radius; + element.m_angle1 = startAngle; + element.m_angle2 = sweepLength; + m_elements.append(element); } void PathShape::close() { - Element element(TYPE_CLOSE); - _elements.append(element); + Element element(TypeClose); + m_elements.append(element); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapes.h b/src/libs/3rdparty/modeling/qmt/stereotype/shapes.h index f739ff6916..8dd9d6892d 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapes.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapes.h @@ -39,167 +39,112 @@ #include <QList> - namespace qmt { -class QMT_EXPORT LineShape - : public IShape +class QMT_EXPORT LineShape : public IShape { public: - LineShape() { } LineShape(const ShapePointF &pos1, const ShapePointF &pos2) - : _pos1(pos1), - _pos2(pos2) + : m_pos1(pos1), + m_pos2(pos2) { } -public: - - ShapePointF getPos1() const { return _pos1; } - - ShapePointF getPos2() const { return _pos2; } - -public: + ShapePointF pos1() const { return m_pos1; } + ShapePointF pos2() const { return m_pos2; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _pos1; - ShapePointF _pos2; + ShapePointF m_pos1; + ShapePointF m_pos2; }; - -class QMT_EXPORT RectShape - : public IShape +class QMT_EXPORT RectShape : public IShape { public: - RectShape() { } RectShape(const ShapePointF &pos, const ShapeSizeF &size) - : _pos(pos), - _size(size) + : m_pos(pos), + m_size(size) { } -public: - - ShapePointF getPos() const { return _pos; } - - ShapeSizeF getSize() const { return _size; } - -public: + ShapePointF pos() const { return m_pos; } + ShapeSizeF size() const { return m_size; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _pos; - ShapeSizeF _size; + ShapePointF m_pos; + ShapeSizeF m_size; }; - -class QMT_EXPORT RoundedRectShape - : public IShape +class QMT_EXPORT RoundedRectShape : public IShape { public: - RoundedRectShape() { } RoundedRectShape(const ShapePointF &pos, const ShapeSizeF &size, const ShapeValueF &radius) - : _pos(pos), - _size(size), - _radius(radius) + : m_pos(pos), + m_size(size), + m_radius(radius) { } -public: - - ShapePointF getPos() const { return _pos; } - - ShapeSizeF getSize() const { return _size; } - - ShapeValueF getRadius() const { return _radius; } - -public: + ShapePointF pos() const { return m_pos; } + ShapeSizeF size() const { return m_size; } + ShapeValueF radius() const { return m_radius; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _pos; - ShapeSizeF _size; - ShapeValueF _radius; + ShapePointF m_pos; + ShapeSizeF m_size; + ShapeValueF m_radius; }; - -class QMT_EXPORT CircleShape - : public IShape +class QMT_EXPORT CircleShape : public IShape { public: - CircleShape() { } CircleShape(const ShapePointF ¢er, const ShapeValueF &radius) - : _center(center), - _radius(radius) + : m_center(center), + m_radius(radius) { } -public: - - ShapePointF getCenter() const { return _center; } - - ShapeValueF getRadius() const { return _radius; } - -public: + ShapePointF center() const { return m_center; } + ShapeValueF radius() const { return m_radius; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _center; - ShapeValueF _radius; + ShapePointF m_center; + ShapeValueF m_radius; }; - -class QMT_EXPORT EllipseShape - : public IShape +class QMT_EXPORT EllipseShape : public IShape { public: EllipseShape() @@ -207,145 +152,103 @@ public: } EllipseShape(const ShapePointF ¢er, const ShapeSizeF &radius) - : _center(center), - _radius(radius) + : m_center(center), + m_radius(radius) { } -public: - - ShapePointF getCenter() const { return _center; } - - ShapeSizeF getRadius() const { return _radius; } - -public: + ShapePointF center() const { return m_center; } + ShapeSizeF radius() const { return m_radius; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _center; - ShapeSizeF _radius; + ShapePointF m_center; + ShapeSizeF m_radius; }; - -class QMT_EXPORT ArcShape - : public IShape +class QMT_EXPORT ArcShape : public IShape { public: ArcShape() { } - ArcShape(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal span_angle) - : _center(center), - _radius(radius), - _start_angle(start_angle), - _span_angle(span_angle) + ArcShape(const ShapePointF ¢er, const ShapeSizeF &radius, qreal startAngle, qreal spanAngle) + : m_center(center), + m_radius(radius), + m_startAngle(startAngle), + m_spanAngle(spanAngle) { } -public: - - ShapePointF getCenter() const { return _center; } - - ShapeSizeF getRadius() const { return _radius; } - - qreal getStartAngle() const { return _start_angle; } - - qreal getSpanAngle() const { return _span_angle; } - -public: + ShapePointF center() const { return m_center; } + ShapeSizeF radius() const { return m_radius; } + qreal startAngle() const { return m_startAngle; } + qreal spanAngle() const { return m_spanAngle; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; private: - - ShapePointF _center; - ShapeSizeF _radius; - qreal _start_angle; - qreal _span_angle; + ShapePointF m_center; + ShapeSizeF m_radius; + qreal m_startAngle; + qreal m_spanAngle; }; - -class QMT_EXPORT PathShape - : public IShape +class QMT_EXPORT PathShape : public IShape { public: - enum ElementType { - TYPE_NONE, - TYPE_MOVETO, - TYPE_LINETO, - TYPE_ARCMOVETO, - TYPE_ARCTO, - TYPE_CLOSE + TypeNone, + TypeMoveto, + TypeLineto, + TypeArcmoveto, + TypeArcto, + TypeClose }; - struct Element { - explicit Element(ElementType element = TYPE_NONE) - : _element_type(element), - _angle1(0.0), - _angle2(0.0) + class Element + { + public: + explicit Element(ElementType element = TypeNone) + : m_elementType(element), + m_angle1(0.0), + m_angle2(0.0) { } - ElementType _element_type; - ShapePointF _position; - ShapeSizeF _size; - qreal _angle1; - qreal _angle2; + ElementType m_elementType; + ShapePointF m_position; + ShapeSizeF m_size; + qreal m_angle1; + qreal m_angle2; }; -public: PathShape(); - ~PathShape(); -public: - - QList<Element> getElements() const { return _elements; } - -public: + QList<Element> elements() const { return m_elements; } IShape *Clone() const; - -public: - void accept(ShapeVisitor *visitor); - void accept(ShapeConstVisitor *visitor) const; -public: - void moveTo(const ShapePointF &pos); - void lineTo(const ShapePointF &pos); - void arcMoveTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal angle); - - void arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, qreal start_angle, qreal sweep_length); - + void arcTo(const ShapePointF ¢er, const ShapeSizeF &radius, + qreal startAngle, qreal sweepLength); void close(); private: - - QList<Element> _elements; - + QList<Element> m_elements; }; -} +} // namespace qmt #endif // QMT_SHAPES_H diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.cpp index 07a29c1330..fd3ea8a898 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.cpp @@ -37,88 +37,88 @@ qreal ShapeValueF::mapTo(qreal origin, qreal size) const return mapScaledTo(origin, size, size, size); } -qreal ShapeValueF::mapScaledTo(qreal scaled_origin, qreal original_size, qreal actual_size) const +qreal ShapeValueF::mapScaledTo(qreal scaledOrigin, qreal originalSize, qreal actualSize) const { - return mapScaledTo(scaled_origin, original_size, original_size, actual_size); + return mapScaledTo(scaledOrigin, originalSize, originalSize, actualSize); } -qreal ShapeValueF::mapScaledTo(qreal scaled_origin, qreal original_size, qreal base_size, qreal actual_size) const +qreal ShapeValueF::mapScaledTo(qreal scaledOrigin, qreal originalSize, qreal baseSize, qreal actualSize) const { qreal v = 0.0; - switch (_unit) { - case UNIT_ABSOLUTE: - v = _value; + switch (m_unit) { + case UnitAbsolute: + v = m_value; break; - case UNIT_RELATIVE: - v = original_size != 0 ? (_value * base_size / original_size) : _value; + case UnitRelative: + v = originalSize != 0 ? (m_value * baseSize / originalSize) : m_value; break; - case UNIT_SCALED: - v = original_size != 0 ? (_value * actual_size / original_size) : _value; + case UnitScaled: + v = originalSize != 0 ? (m_value * actualSize / originalSize) : m_value; break; - case UNIT_PERCENTAGE: - v = _value * actual_size; + case UnitPercentage: + v = m_value * actualSize; break; } - switch (_origin) { - case ORIGIN_SMART: - v = scaled_origin + v; + switch (m_origin) { + case OriginSmart: + v = scaledOrigin + v; break; - case ORIGIN_TOP_OR_LEFT: - v = scaled_origin + v; + case OriginTopOrLeft: + v = scaledOrigin + v; break; - case ORIGIN_BOTTOM_OR_RIGHT: - v = actual_size - v; + case OriginBottomOrRight: + v = actualSize - v; break; - case ORIGIN_CENTER: - v = actual_size * 0.5 + v; + case OriginCenter: + v = actualSize * 0.5 + v; break; } return v; } - - QPointF ShapePointF::mapTo(const QPointF &origin, const QSizeF &size) const { - qreal x = _x.mapTo(origin.x(), size.width()); - qreal y = _y.mapTo(origin.y(), size.height()); + qreal x = m_x.mapTo(origin.x(), size.width()); + qreal y = m_y.mapTo(origin.y(), size.height()); return QPointF(x, y); } -QPointF ShapePointF::mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &actual_size) const +QPointF ShapePointF::mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &actualSize) const { - qreal x = _x.mapScaledTo(scaled_origin.x(), original_size.width(), actual_size.width()); - qreal y = _y.mapScaledTo(scaled_origin.y(), original_size.height(), actual_size.height()); + qreal x = m_x.mapScaledTo(scaledOrigin.x(), originalSize.width(), actualSize.width()); + qreal y = m_y.mapScaledTo(scaledOrigin.y(), originalSize.height(), actualSize.height()); return QPointF(x, y); } -QPointF ShapePointF::mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &actual_size) const +QPointF ShapePointF::mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, const QSizeF &baseSize, + const QSizeF &actualSize) const { - qreal x = _x.mapScaledTo(scaled_origin.x(), original_size.width(), base_size.width(), actual_size.width()); - qreal y = _y.mapScaledTo(scaled_origin.y(), original_size.height(), base_size.height(), actual_size.height()); + qreal x = m_x.mapScaledTo(scaledOrigin.x(), originalSize.width(), baseSize.width(), actualSize.width()); + qreal y = m_y.mapScaledTo(scaledOrigin.y(), originalSize.height(), baseSize.height(), actualSize.height()); return QPointF(x, y); } QSizeF ShapeSizeF::mapTo(const QPointF &origin, const QSizeF &size) const { - qreal w = _width.mapTo(origin.x(), size.width()); - qreal h = _height.mapTo(origin.y(), size.height()); + qreal w = m_width.mapTo(origin.x(), size.width()); + qreal h = m_height.mapTo(origin.y(), size.height()); return QSizeF(w, h); } -QSizeF ShapeSizeF::mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &actual_size) const +QSizeF ShapeSizeF::mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, const QSizeF &actualSize) const { - qreal w = _width.mapScaledTo(scaled_origin.x(), original_size.width(), actual_size.width()); - qreal h = _height.mapScaledTo(scaled_origin.y(), original_size.height(), actual_size.height()); + qreal w = m_width.mapScaledTo(scaledOrigin.x(), originalSize.width(), actualSize.width()); + qreal h = m_height.mapScaledTo(scaledOrigin.y(), originalSize.height(), actualSize.height()); return QSizeF(w, h); } -QSizeF ShapeSizeF::mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &actual_size) const +QSizeF ShapeSizeF::mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, const QSizeF &baseSize, + const QSizeF &actualSize) const { - qreal w = _width.mapScaledTo(scaled_origin.x(), original_size.width(), base_size.width(), actual_size.width()); - qreal h = _height.mapScaledTo(scaled_origin.y(), original_size.height(), base_size.height(), actual_size.height()); + qreal w = m_width.mapScaledTo(scaledOrigin.x(), originalSize.width(), baseSize.width(), actualSize.width()); + qreal h = m_height.mapScaledTo(scaledOrigin.y(), originalSize.height(), baseSize.height(), actualSize.height()); return QSizeF(w, h); } - } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.h b/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.h index 1322986191..b8443ee1c0 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapevalue.h @@ -36,154 +36,117 @@ #include <QPointF> #include <QSizeF> - namespace qmt { -class QMT_EXPORT ShapeValueF { - +class QMT_EXPORT ShapeValueF +{ public: - enum Origin { - ORIGIN_SMART, - ORIGIN_TOP, - ORIGIN_LEFT = ORIGIN_TOP, - ORIGIN_TOP_OR_LEFT = ORIGIN_TOP, - ORIGIN_BOTTOM, - ORIGIN_RIGHT = ORIGIN_BOTTOM, - ORIGIN_BOTTOM_OR_RIGHT = ORIGIN_BOTTOM, - ORIGIN_CENTER + OriginSmart, + OriginTop, + OriginLeft = OriginTop, + OriginTopOrLeft = OriginTop, + OriginBottom, + OriginRight = OriginBottom, + OriginBottomOrRight = OriginBottom, + OriginCenter }; enum Unit { - UNIT_ABSOLUTE, - UNIT_RELATIVE, - UNIT_SCALED, - UNIT_PERCENTAGE + UnitAbsolute, + UnitRelative, + UnitScaled, + UnitPercentage }; -public: - ShapeValueF() - : _value(0.0), - _unit(UNIT_RELATIVE), - _origin(ORIGIN_SMART) + : m_value(0.0), + m_unit(UnitRelative), + m_origin(OriginSmart) { } - ShapeValueF(qreal value, Unit unit = UNIT_RELATIVE, Origin origin = ORIGIN_SMART) - : _value(value), - _unit(unit), - _origin(origin) + ShapeValueF(qreal value, Unit unit = UnitRelative, Origin origin = OriginSmart) + : m_value(value), + m_unit(unit), + m_origin(origin) { } -public: - - qreal getValue() const { return _value; } - - void setValue(qreal value) { _value = value; } - - Unit getUnit() const { return _unit; } - - void setUnit(Unit unit) { _unit = unit; } - - Origin getOrigin() const { return _origin; } - - void setOrigin(Origin origin) { _origin = origin; } - -public: + qreal value() const { return m_value; } + void setValue(qreal value) { m_value = value; } + Unit unit() const { return m_unit; } + void setUnit(Unit unit) { m_unit = unit; } + Origin origin() const { return m_origin; } + void setOrigin(Origin origin) { m_origin = origin; } qreal mapTo(qreal origin, qreal size) const; - - qreal mapScaledTo(qreal scaled_origin, qreal original_size, qreal actual_size) const; - - qreal mapScaledTo(qreal scaled_origin, qreal original_size, qreal base_size, qreal actual_size) const; + qreal mapScaledTo(qreal scaledOrigin, qreal originalSize, qreal actualSize) const; + qreal mapScaledTo(qreal scaledOrigin, qreal originalSize, qreal baseSize, + qreal actualSize) const; private: - - qreal _value; - - Unit _unit; - - Origin _origin; + qreal m_value; + Unit m_unit; + Origin m_origin; }; - -class QMT_EXPORT ShapePointF { +class QMT_EXPORT ShapePointF +{ public: - ShapePointF() { } ShapePointF(const ShapeValueF &x, const ShapeValueF &y) - : _x(x), - _y(y) + : m_x(x), + m_y(y) { } -public: - - ShapeValueF getX() const { return _x; } - - void setX(const ShapeValueF &x) { _x = x; } - - ShapeValueF getY() const { return _y; } - - void setY(const ShapeValueF &y) { _y = y; } - -public: + ShapeValueF x() const { return m_x; } + void setX(const ShapeValueF &x) { m_x = x; } + ShapeValueF y() const { return m_y; } + void setY(const ShapeValueF &y) { m_y = y; } QPointF mapTo(const QPointF &origin, const QSizeF &size) const; - - QPointF mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &actual_size) const; - - QPointF mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &actual_size) const; + QPointF mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &actualSize) const; + QPointF mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &baseSize, const QSizeF &actualSize) const; private: - - ShapeValueF _x; - - ShapeValueF _y; + ShapeValueF m_x; + ShapeValueF m_y; }; - -class QMT_EXPORT ShapeSizeF { +class QMT_EXPORT ShapeSizeF +{ public: - ShapeSizeF() { } ShapeSizeF(const ShapeValueF &width, const ShapeValueF &height) - : _width(width), - _height(height) + : m_width(width), + m_height(height) { } -public: - - ShapeValueF getWidth() const { return _width; } - - void setWidth(const ShapeValueF &width) { _width = width; } - - ShapeValueF getHeight() const { return _height; } - - void setHeight(const ShapeValueF &height) { _height = height; } - -public: + ShapeValueF width() const { return m_width; } + void setWidth(const ShapeValueF &width) { m_width = width; } + ShapeValueF height() const { return m_height; } + void setHeight(const ShapeValueF &height) { m_height = height; } QSizeF mapTo(const QPointF &origin, const QSizeF &size) const; - - QSizeF mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &actual_size) const; - - QSizeF mapScaledTo(const QPointF &scaled_origin, const QSizeF &original_size, const QSizeF &base_size, const QSizeF &actual_size) const; + QSizeF mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &actualSize) const; + QSizeF mapScaledTo(const QPointF &scaledOrigin, const QSizeF &originalSize, + const QSizeF &baseSize, const QSizeF &actualSize) const; private: - - ShapeValueF _width; - - ShapeValueF _height; + ShapeValueF m_width; + ShapeValueF m_height; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/shapevisitor.h b/src/libs/3rdparty/modeling/qmt/stereotype/shapevisitor.h index 3af085c799..b4df075d5e 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/shapevisitor.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/shapevisitor.h @@ -44,50 +44,31 @@ class PathShape; class ShapeVisitor { public: - ~ShapeVisitor() { } -public: - - virtual void visitLine(LineShape *shape_line) = 0; - - virtual void visitRect(RectShape *shape_rect) = 0; - - virtual void visitRoundedRect(RoundedRectShape *shape_rounded_rect) = 0; - - virtual void visitCircle(CircleShape *shape_circle) = 0; - - virtual void visitEllipse(EllipseShape *shape_ellipse) = 0; - - virtual void visitArc(ArcShape *shape_arc) = 0; - - virtual void visitPath(PathShape *shape_path) = 0; + virtual void visitLine(LineShape *shapeLine) = 0; + virtual void visitRect(RectShape *shapeRect) = 0; + virtual void visitRoundedRect(RoundedRectShape *shapeRoundedRect) = 0; + virtual void visitCircle(CircleShape *shapeCircle) = 0; + virtual void visitEllipse(EllipseShape *shapeEllipse) = 0; + virtual void visitArc(ArcShape *shapeArc) = 0; + virtual void visitPath(PathShape *shapePath) = 0; }; - class ShapeConstVisitor { public: - ~ShapeConstVisitor() { } -public: - - virtual void visitLine(const LineShape *shape_line) = 0; - - virtual void visitRect(const RectShape *shape_rect) = 0; - - virtual void visitRoundedRect(const RoundedRectShape *shape_rounded_rect) = 0; - - virtual void visitCircle(const CircleShape *shape_circle) = 0; - - virtual void visitEllipse(const EllipseShape *shape_ellipse) = 0; - - virtual void visitArc(const ArcShape *shape_arc) = 0; - - virtual void visitPath(const PathShape *shape_path) = 0; + virtual void visitLine(const LineShape *shapeLine) = 0; + virtual void visitRect(const RectShape *shapeRect) = 0; + virtual void visitRoundedRect(const RoundedRectShape *shapeRoundedRect) = 0; + virtual void visitCircle(const CircleShape *shapeCircle) = 0; + virtual void visitEllipse(const EllipseShape *shapeEllipse) = 0; + virtual void visitArc(const ArcShape *shapeArc) = 0; + virtual void visitPath(const PathShape *shapePath) = 0; }; -} +} // namespace qmt #endif // QMT_SHAPEVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.cpp index 6eb1a33db9..fb196546cf 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.cpp @@ -46,15 +46,16 @@ namespace qmt { -struct StereotypeController::StereotypeControllerPrivate +class StereotypeController::StereotypeControllerPrivate { +public: StereotypeControllerPrivate() { } - QHash<QPair<StereotypeIcon::Element, QString>, QString> _stereotype_to_icon_id_map; - QHash<QString, StereotypeIcon> _icon_id_to_stereotype_icons_map; - QList<Toolbar> _toolbars; + QHash<QPair<StereotypeIcon::Element, QString>, QString> m_stereotypeToIconIdMap; + QHash<QString, StereotypeIcon> m_iconIdToStereotypeIconsMap; + QList<Toolbar> m_toolbars; }; StereotypeController::StereotypeController(QObject *parent) : @@ -68,132 +69,129 @@ StereotypeController::~StereotypeController() delete d; } -QList<StereotypeIcon> StereotypeController::getStereotypeIcons() const +QList<StereotypeIcon> StereotypeController::stereotypeIcons() const { - return d->_icon_id_to_stereotype_icons_map.values(); + return d->m_iconIdToStereotypeIconsMap.values(); } -QList<Toolbar> StereotypeController::getToolbars() const +QList<Toolbar> StereotypeController::toolbars() const { - return d->_toolbars; + return d->m_toolbars; } -QList<QString> StereotypeController::getKnownStereotypes(StereotypeIcon::Element stereotype_element) const +QList<QString> StereotypeController::knownStereotypes(StereotypeIcon::Element stereotypeElement) const { QSet<QString> stereotypes; - foreach (const StereotypeIcon &icon, d->_icon_id_to_stereotype_icons_map.values()) { - if (icon.getElements().isEmpty() || icon.getElements().contains(stereotype_element)) { - stereotypes += icon.getStereotypes(); - } + foreach (const StereotypeIcon &icon, d->m_iconIdToStereotypeIconsMap.values()) { + if (icon.elements().isEmpty() || icon.elements().contains(stereotypeElement)) + stereotypes += icon.stereotypes(); } QList<QString> list = stereotypes.toList(); std::sort(list.begin(), list.end()); return list; } -QString StereotypeController::findStereotypeIconId(StereotypeIcon::Element element, const QList<QString> &stereotypes) const +QString StereotypeController::findStereotypeIconId(StereotypeIcon::Element element, + const QList<QString> &stereotypes) const { foreach (const QString &stereotype, stereotypes) { - if (d->_stereotype_to_icon_id_map.contains(qMakePair(element, stereotype))) { - return d->_stereotype_to_icon_id_map.value(qMakePair(element, stereotype)); - } else if (d->_stereotype_to_icon_id_map.contains(qMakePair(StereotypeIcon::ELEMENT_ANY, stereotype))) { - return d->_stereotype_to_icon_id_map.value(qMakePair(StereotypeIcon::ELEMENT_ANY, stereotype)); - } + if (d->m_stereotypeToIconIdMap.contains(qMakePair(element, stereotype))) + return d->m_stereotypeToIconIdMap.value(qMakePair(element, stereotype)); + else if (d->m_stereotypeToIconIdMap.contains(qMakePair(StereotypeIcon::ElementAny, stereotype))) + return d->m_stereotypeToIconIdMap.value(qMakePair(StereotypeIcon::ElementAny, stereotype)); } return QString(); } -QList<QString> StereotypeController::filterStereotypesByIconId(const QString &stereotype_icon_id, const QList<QString> &stereotypes) const +QList<QString> StereotypeController::filterStereotypesByIconId(const QString &stereotypeIconId, + const QList<QString> &stereotypes) const { - if (!d->_icon_id_to_stereotype_icons_map.contains(stereotype_icon_id)) { + if (!d->m_iconIdToStereotypeIconsMap.contains(stereotypeIconId)) return stereotypes; - } - QList<QString> filtered_stereotypes = stereotypes; - foreach (const QString &stereotype, d->_icon_id_to_stereotype_icons_map.value(stereotype_icon_id).getStereotypes()) { - filtered_stereotypes.removeAll(stereotype); - } - return filtered_stereotypes; + QList<QString> filteredStereotypes = stereotypes; + foreach (const QString &stereotype, d->m_iconIdToStereotypeIconsMap.value(stereotypeIconId).stereotypes()) + filteredStereotypes.removeAll(stereotype); + return filteredStereotypes; } -StereotypeIcon StereotypeController::findStereotypeIcon(const QString &stereotype_icon_id) +StereotypeIcon StereotypeController::findStereotypeIcon(const QString &stereotypeIconId) { - QMT_CHECK(d->_icon_id_to_stereotype_icons_map.contains(stereotype_icon_id)); - return d->_icon_id_to_stereotype_icons_map.value(stereotype_icon_id); + QMT_CHECK(d->m_iconIdToStereotypeIconsMap.contains(stereotypeIconId)); + return d->m_iconIdToStereotypeIconsMap.value(stereotypeIconId); } -QIcon StereotypeController::createIcon(StereotypeIcon::Element element, const QList<QString> &stereotypes, const QString &default_icon_path, - const Style *style, const QSize &size, const QMarginsF &margins) +QIcon StereotypeController::createIcon(StereotypeIcon::Element element, const QList<QString> &stereotypes, + const QString &defaultIconPath, const Style *style, const QSize &size, + const QMarginsF &margins) { - // TODO implement cache with key build from element, stereotypes, default_icon_path, style, size and margins + // TODO implement cache with key build from element, stereotypes, defaultIconPath, style, size and margins // TODO implement unique id for style which can be used as key // TODO fix rendering of icon which negativ extension of bounding box (e.g. stereotype "component") QIcon icon; - QString stereotype_icon_id = findStereotypeIconId(element, stereotypes); - if (!stereotype_icon_id.isEmpty()) { - StereotypeIcon stereotype_icon = findStereotypeIcon(stereotype_icon_id); + QString stereotypeIconId = findStereotypeIconId(element, stereotypes); + if (!stereotypeIconId.isEmpty()) { + StereotypeIcon stereotypeIcon = findStereotypeIcon(stereotypeIconId); qreal width = size.width() - margins.left() - margins.right(); qreal height = size.height() - margins.top() - margins.bottom(); - qreal ratio_width = height * stereotype_icon.getWidth() / stereotype_icon.getHeight(); - qreal ratio_height = width * stereotype_icon.getHeight() / stereotype_icon.getWidth(); - if (ratio_width > width) { - height = ratio_height; - } else if (ratio_height > height) { - width = ratio_width; - } - QSizeF shape_size(width, height); - - ShapeSizeVisitor size_visitor(QPointF(0.0, 0.0), - QSizeF(stereotype_icon.getWidth(), stereotype_icon.getHeight()), - shape_size, shape_size); - stereotype_icon.getIconShape().visitShapes(&size_visitor); - QRectF icon_bounding_rect = size_visitor.getBoundingRect(); - QPixmap pixmap(icon_bounding_rect.width() + margins.left() + margins.right(), icon_bounding_rect.height() + margins.top() + margins.bottom()); + qreal ratioWidth = height * stereotypeIcon.width() / stereotypeIcon.height(); + qreal ratioHeight = width * stereotypeIcon.height() / stereotypeIcon.width(); + if (ratioWidth > width) + height = ratioHeight; + else if (ratioHeight > height) + width = ratioWidth; + QSizeF shapeSize(width, height); + + ShapeSizeVisitor sizeVisitor(QPointF(0.0, 0.0), + QSizeF(stereotypeIcon.width(), stereotypeIcon.height()), + shapeSize, shapeSize); + stereotypeIcon.iconShape().visitShapes(&sizeVisitor); + QRectF iconBoundingRect = sizeVisitor.boundingRect(); + QPixmap pixmap(iconBoundingRect.width() + margins.left() + margins.right(), + iconBoundingRect.height() + margins.top() + margins.bottom()); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.setBrush(Qt::NoBrush); - painter.translate(-icon_bounding_rect.topLeft() + QPointF(margins.left(), margins.top())); - QPen line_pen = style->getLinePen(); - line_pen.setWidthF(2.0); - painter.setPen(line_pen); - painter.setBrush(style->getFillBrush()); + painter.translate(-iconBoundingRect.topLeft() + QPointF(margins.left(), margins.top())); + QPen linePen = style->linePen(); + linePen.setWidthF(2.0); + painter.setPen(linePen); + painter.setBrush(style->fillBrush()); ShapePaintVisitor visitor(&painter, QPointF(0.0, 0.0), - QSizeF(stereotype_icon.getWidth(), stereotype_icon.getHeight()), - shape_size, shape_size); - stereotype_icon.getIconShape().visitShapes(&visitor); - - QPixmap icon_pixmap(size); - icon_pixmap.fill(Qt::transparent); - QPainter icon_painter(&icon_pixmap); - icon_painter.drawPixmap((icon_pixmap.width() - pixmap.width()) / 2, (icon_pixmap.width() - pixmap.height()) / 2, pixmap); - icon = QIcon(icon_pixmap); - } - if (icon.isNull() && !default_icon_path.isEmpty()) { - icon = QIcon(default_icon_path); + QSizeF(stereotypeIcon.width(), stereotypeIcon.height()), + shapeSize, shapeSize); + stereotypeIcon.iconShape().visitShapes(&visitor); + + QPixmap iconPixmap(size); + iconPixmap.fill(Qt::transparent); + QPainter iconPainter(&iconPixmap); + iconPainter.drawPixmap((iconPixmap.width() - pixmap.width()) / 2, + (iconPixmap.width() - pixmap.height()) / 2, pixmap); + icon = QIcon(iconPixmap); } + if (icon.isNull() && !defaultIconPath.isEmpty()) + icon = QIcon(defaultIconPath); return icon; } -void StereotypeController::addStereotypeIcon(const StereotypeIcon &stereotype_icon) +void StereotypeController::addStereotypeIcon(const StereotypeIcon &stereotypeIcon) { - if (stereotype_icon.getElements().isEmpty()) { - foreach (const QString &stereotype, stereotype_icon.getStereotypes()) { - d->_stereotype_to_icon_id_map.insert(qMakePair(StereotypeIcon::ELEMENT_ANY, stereotype), stereotype_icon.getId()); - } + if (stereotypeIcon.elements().isEmpty()) { + foreach (const QString &stereotype, stereotypeIcon.stereotypes()) + d->m_stereotypeToIconIdMap.insert(qMakePair(StereotypeIcon::ElementAny, stereotype), stereotypeIcon.id()); } else { - foreach (StereotypeIcon::Element element, stereotype_icon.getElements()) { - foreach (const QString &stereotype, stereotype_icon.getStereotypes()) { - d->_stereotype_to_icon_id_map.insert(qMakePair(element, stereotype), stereotype_icon.getId()); - } + foreach (StereotypeIcon::Element element, stereotypeIcon.elements()) { + foreach (const QString &stereotype, stereotypeIcon.stereotypes()) + d->m_stereotypeToIconIdMap.insert(qMakePair(element, stereotype), stereotypeIcon.id()); } } - d->_icon_id_to_stereotype_icons_map.insert(stereotype_icon.getId(), stereotype_icon); + d->m_iconIdToStereotypeIconsMap.insert(stereotypeIcon.id(), stereotypeIcon); } void StereotypeController::addToolbar(const Toolbar &toolbar) { - d->_toolbars.append(toolbar); + d->m_toolbars.append(toolbar); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.h b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.h index a225b7558f..8340a00bbd 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypecontroller.h @@ -37,55 +37,38 @@ #include <QMarginsF> - namespace qmt { class Toolbar; class Style; -class QMT_EXPORT StereotypeController : - public QObject +class QMT_EXPORT StereotypeController : public QObject { Q_OBJECT - - struct StereotypeControllerPrivate; + class StereotypeControllerPrivate; public: explicit StereotypeController(QObject *parent = 0); - ~StereotypeController(); -signals: - -public: - - QList<StereotypeIcon> getStereotypeIcons() const; - - QList<Toolbar> getToolbars() const; - - QList<QString> getKnownStereotypes(StereotypeIcon::Element stereotype_element) const; - -public: - - QString findStereotypeIconId(StereotypeIcon::Element element, const QList<QString> &stereotypes) const; - - QList<QString> filterStereotypesByIconId(const QString &stereotype_icon_id, const QList<QString> &stereotypes) const; + QList<StereotypeIcon> stereotypeIcons() const; + QList<Toolbar> toolbars() const; + QList<QString> knownStereotypes(StereotypeIcon::Element stereotypeElement) const; - StereotypeIcon findStereotypeIcon(const QString &stereotype_icon_id); - - QIcon createIcon(StereotypeIcon::Element element, const QList<QString> &stereotypes, const QString &default_icon_path, - const Style *style, const QSize &size, const QMarginsF &margins); - -public: - - void addStereotypeIcon(const StereotypeIcon &stereotype_icon); + QString findStereotypeIconId(StereotypeIcon::Element element, + const QList<QString> &stereotypes) const; + QList<QString> filterStereotypesByIconId(const QString &stereotypeIconId, + const QList<QString> &stereotypes) const; + StereotypeIcon findStereotypeIcon(const QString &stereotypeIconId); + QIcon createIcon(StereotypeIcon::Element element, const QList<QString> &stereotypes, + const QString &defaultIconPath, const Style *style, + const QSize &size, const QMarginsF &margins); + void addStereotypeIcon(const StereotypeIcon &stereotypeIcon); void addToolbar(const Toolbar &toolbar); private: - StereotypeControllerPrivate *d; - }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.cpp index 06bee1590d..654b162832 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.cpp @@ -33,13 +33,13 @@ namespace qmt { StereotypeIcon::StereotypeIcon() - : _width(100.0), - _height(100.0), - _min_width(-1), - _min_height(-1), - _size_lock(LOCK_NONE), - _display(DISPLAY_SMART), - _text_alignment(TEXTALIGN_BELOW) + : m_width(100.0), + m_height(100.0), + m_minWidth(-1), + m_minHeight(-1), + m_sizeLock(LockNone), + m_display(DisplaySmart), + m_textAlignment(TextalignBelow) { } @@ -49,75 +49,74 @@ StereotypeIcon::~StereotypeIcon() void StereotypeIcon::setId(const QString &id) { - _id = id; + m_id = id; } -QString StereotypeIcon::getTitle() const +QString StereotypeIcon::title() const { - if (_title.isEmpty()) { - return _id; - } - return _title; + if (m_title.isEmpty()) + return m_id; + return m_title; } void StereotypeIcon::setTitle(const QString &title) { - _title = title; + m_title = title; } void StereotypeIcon::setElements(const QSet<Element> &elements) { - _elements = elements; + m_elements = elements; } void StereotypeIcon::setStereotypes(const QSet<QString> &stereotypes) { - _stereotypes = stereotypes; + m_stereotypes = stereotypes; } void StereotypeIcon::setWidth(qreal width) { - _width = width; + m_width = width; } void StereotypeIcon::setHeight(qreal height) { - _height = height; + m_height = height; } -void StereotypeIcon::setMinWidth(qreal min_width) +void StereotypeIcon::setMinWidth(qreal minWidth) { - _min_width = min_width; + m_minWidth = minWidth; } -void StereotypeIcon::setMinHeight(qreal min_height) +void StereotypeIcon::setMinHeight(qreal minHeight) { - _min_height = min_height; + m_minHeight = minHeight; } -void StereotypeIcon::setSizeLock(StereotypeIcon::SizeLock size_lock) +void StereotypeIcon::setSizeLock(StereotypeIcon::SizeLock sizeLock) { - _size_lock = size_lock; + m_sizeLock = sizeLock; } void StereotypeIcon::setDisplay(StereotypeIcon::Display display) { - _display = display; + m_display = display; } -void StereotypeIcon::setTextAlignment(StereotypeIcon::TextAlignment text_alignment) +void StereotypeIcon::setTextAlignment(StereotypeIcon::TextAlignment textAlignment) { - _text_alignment = text_alignment; + m_textAlignment = textAlignment; } -void StereotypeIcon::setBaseColor(const QColor &base_color) +void StereotypeIcon::setBaseColor(const QColor &baseColor) { - _base_color = base_color; + m_baseColor = baseColor; } -void StereotypeIcon::setIconShape(const IconShape &icon_shape) +void StereotypeIcon::setIconShape(const IconShape &iconShape) { - _icon_shape = icon_shape; + m_iconShape = iconShape; } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.h b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.h index ccbbfba5d2..ecfe92317e 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/stereotypeicon.h @@ -37,135 +37,88 @@ #include <QSet> #include <QColor> - namespace qmt { class QMT_EXPORT StereotypeIcon { public: - enum Element { - ELEMENT_ANY, - ELEMENT_PACKAGE, - ELEMENT_COMPONENT, - ELEMENT_CLASS, - ELEMENT_DIAGRAM, - ELEMENT_ITEM + ElementAny, + ElementPackage, + ElementComponent, + ElementClass, + ElementDiagram, + ElementItem }; enum Display { - DISPLAY_NONE, - DISPLAY_LABEL, - DISPLAY_DECORATION, - DISPLAY_ICON, - DISPLAY_SMART + DisplayNone, + DisplayLabel, + DisplayDecoration, + DisplayIcon, + DisplaySmart }; enum SizeLock { - LOCK_NONE, - LOCK_WIDTH, - LOCK_HEIGHT, - LOCK_SIZE, - LOCK_RATIO + LockNone, + LockWidth, + LockHeight, + LockSize, + LockRatio }; enum TextAlignment { - TEXTALIGN_BELOW, - TEXTALIGN_CENTER, - TEXTALIGN_NONE + TextalignBelow, + TextalignCenter, + TextalignNone }; -public: - StereotypeIcon(); - ~StereotypeIcon(); -public: - - QString getId() const { return _id; } - + QString id() const { return m_id; } void setId(const QString &id); - - QString getTitle() const; - + QString title() const; void setTitle(const QString &title); - - QSet<Element> getElements() const { return _elements; } - + QSet<Element> elements() const { return m_elements; } void setElements(const QSet<Element> &elements); - - QSet<QString> getStereotypes() const { return _stereotypes; } - + QSet<QString> stereotypes() const { return m_stereotypes; } void setStereotypes(const QSet<QString> &stereotypes); - - qreal getWidth() const { return _width; } - + qreal width() const { return m_width; } void setWidth(qreal width); - - qreal getHeight() const { return _height; } - + qreal height() const { return m_height; } void setHeight(qreal height); - - bool hasMinWidth() const { return _min_width > 0; } - - qreal getMinWidth() const { return _min_width; } - - void setMinWidth(qreal min_width); - - bool hasMinHeight() const { return _min_height > 0; } - - qreal getMinHeight() const { return _min_height; } - - void setMinHeight(qreal min_height); - - SizeLock getSizeLock() const { return _size_lock; } - - void setSizeLock(SizeLock size_lock); - - Display getDisplay() const { return _display; } - + bool hasMinWidth() const { return m_minWidth > 0; } + qreal minWidth() const { return m_minWidth; } + void setMinWidth(qreal minWidth); + bool hasMinHeight() const { return m_minHeight > 0; } + qreal minHeight() const { return m_minHeight; } + void setMinHeight(qreal minHeight); + SizeLock sizeLock() const { return m_sizeLock; } + void setSizeLock(SizeLock sizeLock); + Display display() const { return m_display; } void setDisplay(Display display); - - TextAlignment getTextAlignment() const { return _text_alignment; } - - void setTextAlignment(TextAlignment text_alignment); - - QColor getBaseColor() const { return _base_color; } - - void setBaseColor(const QColor &base_color); - - IconShape getIconShape() const { return _icon_shape; } - - void setIconShape(const IconShape &icon_shape); + TextAlignment textAlignment() const { return m_textAlignment; } + void setTextAlignment(TextAlignment textAlignment); + QColor baseColor() const { return m_baseColor; } + void setBaseColor(const QColor &baseColor); + IconShape iconShape() const { return m_iconShape; } + void setIconShape(const IconShape &iconShape); private: - - QString _id; - - QString _title; - - QSet<Element> _elements; - - QSet<QString> _stereotypes; - - qreal _width; - - qreal _height; - - qreal _min_width; - - qreal _min_height; - - SizeLock _size_lock; - - Display _display; - - TextAlignment _text_alignment; - - QColor _base_color; - - IconShape _icon_shape; + QString m_id; + QString m_title; + QSet<Element> m_elements; + QSet<QString> m_stereotypes; + qreal m_width; + qreal m_height; + qreal m_minWidth; + qreal m_minHeight; + SizeLock m_sizeLock; + Display m_display; + TextAlignment m_textAlignment; + QColor m_baseColor; + IconShape m_iconShape; }; } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.cpp b/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.cpp index fbab6d6e31..889481bac4 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.cpp +++ b/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.cpp @@ -33,7 +33,7 @@ namespace qmt { Toolbar::Toolbar() - : _priority(-1) + : m_priority(-1) { } @@ -43,17 +43,17 @@ Toolbar::~Toolbar() void Toolbar::setId(const QString &id) { - _id = id; + m_id = id; } void Toolbar::setPriority(int priority) { - _priority = priority; + m_priority = priority; } void Toolbar::setTools(const QList<Toolbar::Tool> &tools) { - _tools = tools; + m_tools = tools; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.h b/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.h index 268d1cf6e8..c57be7cdc7 100644 --- a/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.h +++ b/src/libs/3rdparty/modeling/qmt/stereotype/toolbar.h @@ -36,66 +36,55 @@ #include <QString> #include <QList> - namespace qmt { class QMT_EXPORT Toolbar { public: - enum ToolType { - TOOLTYPE_TOOL, - TOOLTYPE_SEPARATOR + TooltypeTool, + TooltypeSeparator }; - struct Tool { + class Tool + { + public: Tool() - : _tool_type(TOOLTYPE_SEPARATOR) + : m_toolType(TooltypeSeparator) { } - Tool(const QString &name, const QString &element_type, const QString &stereotype = QString::null) - : _tool_type(TOOLTYPE_TOOL), - _name(name), - _element_type(element_type), - _stereotype(stereotype) + Tool(const QString &name, const QString &elementType, + const QString &stereotype = QString::null) + : m_toolType(TooltypeTool), + m_name(name), + m_elementType(elementType), + m_stereotype(stereotype) { } - ToolType _tool_type; - QString _name; - QString _element_type; - QString _stereotype; + ToolType m_toolType; + QString m_name; + QString m_elementType; + QString m_stereotype; }; -public: Toolbar(); - ~Toolbar(); -public: - - QString getId() const { return _id; } - + QString id() const { return m_id; } void setId(const QString &id); - - int getPriority() const { return _priority; } - + int priority() const { return m_priority; } void setPriority(int priority); - - QList<Tool> getTools() const { return _tools; } - + QList<Tool> tools() const { return m_tools; } void setTools(const QList<Tool> &tools); private: - - QString _id; - - int _priority; - - QList<Tool> _tools; + QString m_id; + int m_priority; + QList<Tool> m_tools; }; -} +} // namespace qmt #endif // QMT_TOOLBAR_H diff --git a/src/libs/3rdparty/modeling/qmt/style/defaultstyle.cpp b/src/libs/3rdparty/modeling/qmt/style/defaultstyle.cpp index 6fd1738345..a0214b03d3 100644 --- a/src/libs/3rdparty/modeling/qmt/style/defaultstyle.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/defaultstyle.cpp @@ -35,34 +35,34 @@ namespace qmt { DefaultStyle::DefaultStyle() : Style(GlobalStyle) { - QPen line_pen; - line_pen.setColor("black"); - line_pen.setWidth(1); - setLinePen(line_pen); - setOuterLinePen(line_pen); - setInnerLinePen(line_pen); - setExtraLinePen(line_pen); + QPen linePen; + linePen.setColor("black"); + linePen.setWidth(1); + setLinePen(linePen); + setOuterLinePen(linePen); + setInnerLinePen(linePen); + setExtraLinePen(linePen); setTextBrush(QBrush(QColor("black"))); setFillBrush(QBrush(QColor("yellow"))); setExtraFillBrush(QBrush(QColor("white"))); - QFont normal_font; + QFont normalFont; // TODO the standard font family is "MS Shell Dlg 2" which is not good for small fonts in diagrams - //normal_font.setFamily(QStringLiteral("ModelEditor")); - //normal_font.setPointSizeF(9.0); - normal_font.setPixelSize(11); - setNormalFont(normal_font); - QFont small_font(normal_font); - //small_font.setPointSizeF(normal_font.pointSizeF() * 0.80); - small_font.setPixelSize(9); - setSmallFont(small_font); - QFont header_font(normal_font); - //header_font.setPointSizeF(normal_font.pointSizeF() * 1.4); - header_font.setPixelSize(16); - setHeaderFont(header_font); + //normalFont.setFamily(QStringLiteral("ModelEditor")); + //normalFont.setPointSizeF(9.0); + normalFont.setPixelSize(11); + setNormalFont(normalFont); + QFont smallFont(normalFont); + //smallFont.setPointSizeF(normalFont.pointSizeF() * 0.80); + smallFont.setPixelSize(9); + setSmallFont(smallFont); + QFont headerFont(normalFont); + //headerFont.setPointSizeF(normalFont.pointSizeF() * 1.4); + headerFont.setPixelSize(16); + setHeaderFont(headerFont); } DefaultStyle::~DefaultStyle() { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/defaultstyle.h b/src/libs/3rdparty/modeling/qmt/style/defaultstyle.h index c6a74533b6..d2d6f4b88e 100644 --- a/src/libs/3rdparty/modeling/qmt/style/defaultstyle.h +++ b/src/libs/3rdparty/modeling/qmt/style/defaultstyle.h @@ -33,21 +33,15 @@ #include "style.h" - namespace qmt { -class QMT_EXPORT DefaultStyle : - public Style +class QMT_EXPORT DefaultStyle : public Style { public: DefaultStyle(); - ~DefaultStyle(); - -public: - }; -} +} // namespace qmt #endif // QMT_DEFAULTSTYLE_H diff --git a/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.cpp b/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.cpp index f6fd332bad..ffeeaa4fce 100644 --- a/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.cpp @@ -49,82 +49,90 @@ namespace qmt { // TODO use tuple instead of these 4 explicit key classes -struct ObjectStyleKey { +class ObjectStyleKey +{ +public: ObjectStyleKey() - : _element_type(StyleEngine::TYPE_OTHER) + : m_elementType(StyleEngine::TypeOther) { } - ObjectStyleKey(StyleEngine::ElementType element_type, const ObjectVisuals &object_visuals) - : _element_type(element_type), - _object_visuals(object_visuals) + ObjectStyleKey(StyleEngine::ElementType elementType, const ObjectVisuals &objectVisuals) + : m_elementType(elementType), + m_objectVisuals(objectVisuals) { } - StyleEngine::ElementType _element_type; - ObjectVisuals _object_visuals; + StyleEngine::ElementType m_elementType; + ObjectVisuals m_objectVisuals; }; -uint qHash(const ObjectStyleKey &style_key) +uint qHash(const ObjectStyleKey &styleKey) { - return ::qHash(style_key._element_type) ^ qHash(style_key._object_visuals); + return ::qHash(styleKey.m_elementType) ^ qHash(styleKey.m_objectVisuals); } bool operator==(const ObjectStyleKey &lhs, const ObjectStyleKey &rhs) { - return lhs._element_type == rhs._element_type && lhs._object_visuals == rhs._object_visuals; + return lhs.m_elementType == rhs.m_elementType && lhs.m_objectVisuals == rhs.m_objectVisuals; } - -struct RelationStyleKey { - RelationStyleKey(StyleEngine::ElementType element_type = StyleEngine::TYPE_OTHER, - DObject::VisualPrimaryRole visual_primary_role = DObject::PRIMARY_ROLE_NORMAL) - : _element_type(element_type), - _visual_primary_role(visual_primary_role) +class RelationStyleKey +{ +public: + RelationStyleKey(StyleEngine::ElementType elementType = StyleEngine::TypeOther, + DObject::VisualPrimaryRole visualPrimaryRole = DObject::PrimaryRoleNormal) + : m_elementType(elementType), + m_visualPrimaryRole(visualPrimaryRole) { } - StyleEngine::ElementType _element_type; - DObject::VisualPrimaryRole _visual_primary_role; + StyleEngine::ElementType m_elementType; + DObject::VisualPrimaryRole m_visualPrimaryRole; }; -uint qHash(const RelationStyleKey &style_key) { - return ::qHash(style_key._element_type) ^ ::qHash(style_key._visual_primary_role); +uint qHash(const RelationStyleKey &styleKey) +{ + return ::qHash(styleKey.m_elementType) ^ ::qHash(styleKey.m_visualPrimaryRole); } bool operator==(const RelationStyleKey &lhs, const RelationStyleKey &rhs) { - return lhs._element_type == rhs._element_type && lhs._visual_primary_role == rhs._visual_primary_role; + return lhs.m_elementType == rhs.m_elementType && lhs.m_visualPrimaryRole == rhs.m_visualPrimaryRole; } - -struct AnnotationStyleKey { - AnnotationStyleKey(DAnnotation::VisualRole visual_role = DAnnotation::ROLE_NORMAL) - : _visual_role(visual_role) +class AnnotationStyleKey +{ +public: + AnnotationStyleKey(DAnnotation::VisualRole visualRole = DAnnotation::RoleNormal) + : m_visualRole(visualRole) { } - DAnnotation::VisualRole _visual_role; + DAnnotation::VisualRole m_visualRole; }; -uint qHash(const AnnotationStyleKey &style_key) { - return ::qHash(style_key._visual_role); +uint qHash(const AnnotationStyleKey &styleKey) +{ + return ::qHash(styleKey.m_visualRole); } bool operator==(const AnnotationStyleKey &lhs, const AnnotationStyleKey &rhs) { - return lhs._visual_role == rhs._visual_role; + return lhs.m_visualRole == rhs.m_visualRole; } - -struct BoundaryStyleKey { +class BoundaryStyleKey +{ +public: BoundaryStyleKey() { } }; -uint qHash(const BoundaryStyleKey &style_key) { - Q_UNUSED(style_key); +uint qHash(const BoundaryStyleKey &styleKey) +{ + Q_UNUSED(styleKey); return 1; } @@ -137,149 +145,159 @@ bool operator==(const BoundaryStyleKey &lhs, const BoundaryStyleKey &rhs) return true; } - DefaultStyleEngine::DefaultStyleEngine() { } DefaultStyleEngine::~DefaultStyleEngine() { - qDeleteAll(_object_style_map); - qDeleteAll(_relation_style_map); - qDeleteAll(_annotation_style_map); - qDeleteAll(_boundary_style_map); + qDeleteAll(m_objectStyleMap); + qDeleteAll(m_relationStyleMap); + qDeleteAll(m_annotationStyleMap); + qDeleteAll(m_boundaryStyleMap); } -const Style *DefaultStyleEngine::applyStyle(const Style *base_style, StyleEngine::ElementType element_type, const StyleEngine::Parameters *parameters) +const Style *DefaultStyleEngine::applyStyle(const Style *baseStyle, StyleEngine::ElementType elementType, + const StyleEngine::Parameters *parameters) { - switch (element_type) { - case TYPE_ANNOTATION: - return applyAnnotationStyle(base_style, DAnnotation::ROLE_NORMAL, parameters); - case TYPE_BOUNDARY: - return applyBoundaryStyle(base_style, parameters); - case TYPE_RELATION: + switch (elementType) { + case TypeAnnotation: + return applyAnnotationStyle(baseStyle, DAnnotation::RoleNormal, parameters); + case TypeBoundary: + return applyBoundaryStyle(baseStyle, parameters); + case TypeRelation: break; - case TYPE_CLASS: - case TYPE_COMPONENT: - case TYPE_ITEM: - case TYPE_PACKAGE: - return applyObjectStyle(base_style, element_type, ObjectVisuals(DObject::PRIMARY_ROLE_NORMAL, DObject::SECONDARY_ROLE_NONE, false, QColor(), 0), parameters); - case TYPE_OTHER: + case TypeClass: + case TypeComponent: + case TypeItem: + case TypePackage: + return applyObjectStyle( + baseStyle, elementType, + ObjectVisuals(DObject::PrimaryRoleNormal, DObject::SecondaryRoleNone, false, QColor(), 0), + parameters); + case TypeOther: break; } - return base_style; + return baseStyle; } -const Style *DefaultStyleEngine::applyObjectStyle(const Style *base_style, StyleEngine::ElementType element_type, const ObjectVisuals &object_visuals, const StyleEngine::Parameters *parameters) +const Style *DefaultStyleEngine::applyObjectStyle(const Style *baseStyle, StyleEngine::ElementType elementType, + const ObjectVisuals &objectVisuals, + const StyleEngine::Parameters *parameters) { - ObjectStyleKey key(element_type, object_visuals); - const Style *derived_style = _object_style_map.value(key); - if (!derived_style) { - int line_width = 1; - - QColor fill_color = getFillColor(element_type, object_visuals); - QColor line_color = getLineColor(element_type, object_visuals); - QColor text_color = getTextColor(element_type, object_visuals); - - QFont normal_font = base_style->getNormalFont(); - QFont header_font = base_style->getNormalFont(); - if (object_visuals.isEmphasized()) { - line_width = 2; - header_font.setBold(true); + ObjectStyleKey key(elementType, objectVisuals); + const Style *derivedStyle = m_objectStyleMap.value(key); + if (!derivedStyle) { + int lineWidth = 1; + + QColor fillColor = DefaultStyleEngine::fillColor(elementType, objectVisuals); + QColor lineColor = DefaultStyleEngine::lineColor(elementType, objectVisuals); + QColor textColor = DefaultStyleEngine::textColor(elementType, objectVisuals); + + QFont normalFont = baseStyle->normalFont(); + QFont headerFont = baseStyle->normalFont(); + if (objectVisuals.isEmphasized()) { + lineWidth = 2; + headerFont.setBold(true); } - Style *style = new Style(base_style->getType()); - QPen line_pen = base_style->getLinePen(); - line_pen.setColor(line_color); - line_pen.setWidth(line_width); - style->setLinePen(line_pen); - style->setInnerLinePen(line_pen); - style->setOuterLinePen(line_pen); - style->setExtraLinePen(line_pen); - style->setTextBrush(QBrush(text_color)); - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_OUTLINE) { + Style *style = new Style(baseStyle->type()); + QPen linePen = baseStyle->linePen(); + linePen.setColor(lineColor); + linePen.setWidth(lineWidth); + style->setLinePen(linePen); + style->setInnerLinePen(linePen); + style->setOuterLinePen(linePen); + style->setExtraLinePen(linePen); + style->setTextBrush(QBrush(textColor)); + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleOutline) { style->setFillBrush(QBrush(Qt::white)); } else { if (!parameters->suppressGradients()) { - QLinearGradient fill_gradient(0.0, 0.0, 0.0, 1.0); - fill_gradient.setCoordinateMode(QGradient::ObjectBoundingMode); - fill_gradient.setColorAt(0.0, fill_color.lighter(110)); - fill_gradient.setColorAt(1.0, fill_color.darker(110)); - style->setFillBrush(QBrush(fill_gradient)); + QLinearGradient fillGradient(0.0, 0.0, 0.0, 1.0); + fillGradient.setCoordinateMode(QGradient::ObjectBoundingMode); + fillGradient.setColorAt(0.0, fillColor.lighter(110)); + fillGradient.setColorAt(1.0, fillColor.darker(110)); + style->setFillBrush(QBrush(fillGradient)); } else { - style->setFillBrush(QBrush(fill_color)); + style->setFillBrush(QBrush(fillColor)); } } - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_OUTLINE) { + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleOutline) style->setExtraFillBrush(QBrush(Qt::white)); - } else { - style->setExtraFillBrush(QBrush(fill_color.darker(120))); - } - style->setNormalFont(normal_font); - style->setSmallFont(base_style->getSmallFont()); - style->setHeaderFont(header_font); - _object_style_map.insert(key, style); - derived_style = style; + else + style->setExtraFillBrush(QBrush(fillColor.darker(120))); + style->setNormalFont(normalFont); + style->setSmallFont(baseStyle->smallFont()); + style->setHeaderFont(headerFont); + m_objectStyleMap.insert(key, style); + derivedStyle = style; } - return derived_style; + return derivedStyle; } -const Style *DefaultStyleEngine::applyObjectStyle(const Style *base_style, const StyledObject &styled_object, const Parameters *parameters) +const Style *DefaultStyleEngine::applyObjectStyle(const Style *baseStyle, const StyledObject &styledObject, + const Parameters *parameters) { - ElementType element_type = getObjectType(styled_object.getObject()); + ElementType elementType = objectType(styledObject.object()); - struct DepthProperties { + class DepthProperties + { + public: DepthProperties() - : _element_type(TYPE_OTHER), - _visual_primary_role(DObject::PRIMARY_ROLE_NORMAL), - _visual_secondary_role(DObject::SECONDARY_ROLE_NONE) + : m_elementType(TypeOther), + m_visualPrimaryRole(DObject::PrimaryRoleNormal), + m_visualSecondaryRole(DObject::SecondaryRoleNone) { } - DepthProperties(ElementType element_type, DObject::VisualPrimaryRole visual_primary_role, DObject::VisualSecondaryRole visual_secondary_role) - : _element_type(element_type), - _visual_primary_role(visual_primary_role), - _visual_secondary_role(visual_secondary_role) + DepthProperties(ElementType elementType, DObject::VisualPrimaryRole visualPrimaryRole, + DObject::VisualSecondaryRole visualSecondaryRole) + : m_elementType(elementType), + m_visualPrimaryRole(visualPrimaryRole), + m_visualSecondaryRole(visualSecondaryRole) { } - ElementType _element_type; - DObject::VisualPrimaryRole _visual_primary_role; - DObject::VisualSecondaryRole _visual_secondary_role; + ElementType m_elementType; + DObject::VisualPrimaryRole m_visualPrimaryRole; + DObject::VisualSecondaryRole m_visualSecondaryRole; }; // find colliding elements which best match visual appearance of styled object - DObject::VisualPrimaryRole styled_visual_primary_role = styled_object.getObjectVisuals().getVisualPrimaryRole(); - DObject::VisualSecondaryRole styled_visual_secondary_role = styled_object.getObjectVisuals().getVisualSecondaryRole(); + DObject::VisualPrimaryRole styledVisualPrimaryRole = styledObject.objectVisuals().visualPrimaryRole(); + DObject::VisualSecondaryRole styledVisualSecondaryRole = styledObject.objectVisuals().visualSecondaryRole(); QHash<int, DepthProperties> depths; - foreach (const DObject *colliding_object, styled_object.getCollidingObjects()) { - int colliding_depth = colliding_object->getDepth(); - if (colliding_depth < styled_object.getObject()->getDepth()) { - ElementType colliding_element_type = getObjectType(colliding_object); - DObject::VisualPrimaryRole colliding_visual_primary_role = colliding_object->getVisualPrimaryRole(); - DObject::VisualSecondaryRole colliding_visual_secondary_role = colliding_object->getVisualSecondaryRole(); - if (!depths.contains(colliding_depth)) { - depths.insert(colliding_depth, DepthProperties(colliding_element_type, colliding_visual_primary_role, colliding_visual_secondary_role)); + foreach (const DObject *collidingObject, styledObject.collidingObjects()) { + int collidingDepth = collidingObject->depth(); + if (collidingDepth < styledObject.object()->depth()) { + ElementType collidingElementType = objectType(collidingObject); + DObject::VisualPrimaryRole collidingVisualPrimaryRole = collidingObject->visualPrimaryRole(); + DObject::VisualSecondaryRole collidingVisualSecondaryRole = collidingObject->visualSecondaryRole(); + if (!depths.contains(collidingDepth)) { + depths.insert(collidingDepth, DepthProperties(collidingElementType, collidingVisualPrimaryRole, + collidingVisualSecondaryRole)); } else { - bool update_properties = false; - DepthProperties properties = depths.value(colliding_depth); - if (properties._element_type != element_type && colliding_element_type == element_type) { - properties._element_type = colliding_element_type; - properties._visual_primary_role = colliding_visual_primary_role; - properties._visual_secondary_role = colliding_visual_secondary_role; - update_properties = true; - } else if (properties._element_type == element_type && colliding_element_type == element_type) { - if ((properties._visual_primary_role != styled_visual_primary_role || properties._visual_secondary_role != styled_visual_secondary_role) - && colliding_visual_primary_role == styled_visual_primary_role && colliding_visual_secondary_role == styled_visual_secondary_role) { - properties._visual_primary_role = colliding_visual_primary_role; - properties._visual_secondary_role = colliding_visual_secondary_role; - update_properties = true; + bool updateProperties = false; + DepthProperties properties = depths.value(collidingDepth); + if (properties.m_elementType != elementType && collidingElementType == elementType) { + properties.m_elementType = collidingElementType; + properties.m_visualPrimaryRole = collidingVisualPrimaryRole; + properties.m_visualSecondaryRole = collidingVisualSecondaryRole; + updateProperties = true; + } else if (properties.m_elementType == elementType && collidingElementType == elementType) { + if ((properties.m_visualPrimaryRole != styledVisualPrimaryRole + || properties.m_visualSecondaryRole != styledVisualSecondaryRole) + && collidingVisualPrimaryRole == styledVisualPrimaryRole + && collidingVisualSecondaryRole == styledVisualSecondaryRole) { + properties.m_visualPrimaryRole = collidingVisualPrimaryRole; + properties.m_visualSecondaryRole = collidingVisualSecondaryRole; + updateProperties = true; } } - if (update_properties) { - depths.insert(colliding_depth, properties); - } + if (updateProperties) + depths.insert(collidingDepth, properties); } } } @@ -289,7 +307,9 @@ const Style *DefaultStyleEngine::applyObjectStyle(const Style *base_style, const qSort(keys); foreach (int d, keys) { DepthProperties properties = depths.value(d); - if (properties._element_type == element_type && areStackingRoles(properties._visual_primary_role, properties._visual_secondary_role, styled_visual_primary_role, styled_visual_secondary_role)) { + if (properties.m_elementType == elementType + && areStackingRoles(properties.m_visualPrimaryRole, properties.m_visualSecondaryRole, + styledVisualPrimaryRole, styledVisualSecondaryRole)) { ++depth; } else { depth = 0; @@ -297,197 +317,201 @@ const Style *DefaultStyleEngine::applyObjectStyle(const Style *base_style, const } } - return applyObjectStyle(base_style, element_type, - ObjectVisuals(styled_visual_primary_role, - styled_visual_secondary_role, - styled_object.getObjectVisuals().isEmphasized(), - styled_object.getObjectVisuals().getBaseColor(), + return applyObjectStyle(baseStyle, elementType, + ObjectVisuals(styledVisualPrimaryRole, + styledVisualSecondaryRole, + styledObject.objectVisuals().isEmphasized(), + styledObject.objectVisuals().baseColor(), depth), parameters); } -const Style *DefaultStyleEngine::applyRelationStyle(const Style *base_style, const StyledRelation &styled_relation, const Parameters *parameters) +const Style *DefaultStyleEngine::applyRelationStyle(const Style *baseStyle, const StyledRelation &styledRelation, + const Parameters *parameters) { Q_UNUSED(parameters); - ElementType element_type = getObjectType(styled_relation.getEndA()); - RelationStyleKey key(element_type, styled_relation.getEndA() ? styled_relation.getEndA()->getVisualPrimaryRole() : DObject::PRIMARY_ROLE_NORMAL); - const Style *derived_style = _relation_style_map.value(key); - if (!derived_style) { - Style *style = new Style(base_style->getType()); + ElementType elementType = objectType(styledRelation.endA()); + RelationStyleKey key(elementType, styledRelation.endA() ? styledRelation.endA()->visualPrimaryRole() : DObject::PrimaryRoleNormal); + const Style *derivedStyle = m_relationStyleMap.value(key); + if (!derivedStyle) { + Style *style = new Style(baseStyle->type()); - const DObject *object = styled_relation.getEndA(); - ObjectVisuals object_visuals(object ? object->getVisualPrimaryRole() : DObject::PRIMARY_ROLE_NORMAL, - object ? object->getVisualSecondaryRole() : DObject::SECONDARY_ROLE_NONE, + const DObject *object = styledRelation.endA(); + ObjectVisuals objectVisuals(object ? object->visualPrimaryRole() : DObject::PrimaryRoleNormal, + object ? object->visualSecondaryRole() : DObject::SecondaryRoleNone, object ? object->isVisualEmphasized() : false, Qt::black, // TODO STyledRelation should get an EndAObjectVisuals - object ? object->getDepth() : 0); - QColor line_color = getLineColor(getObjectType(object), object_visuals); - QColor fill_color = line_color; - - QPen line_pen = base_style->getLinePen(); - line_pen.setWidth(1); - line_pen.setColor(line_color); - style->setLinePen(line_pen); - QBrush text_brush = base_style->getTextBrush(); - text_brush.setColor(QColor("black")); - style->setTextBrush(text_brush); - QBrush brush = base_style->getFillBrush(); - brush.setColor(fill_color); + object ? object->depth() : 0); + QColor lineColor = DefaultStyleEngine::lineColor(objectType(object), objectVisuals); + QColor fillColor = lineColor; + + QPen linePen = baseStyle->linePen(); + linePen.setWidth(1); + linePen.setColor(lineColor); + style->setLinePen(linePen); + QBrush textBrush = baseStyle->textBrush(); + textBrush.setColor(QColor("black")); + style->setTextBrush(textBrush); + QBrush brush = baseStyle->fillBrush(); + brush.setColor(fillColor); brush.setStyle(Qt::SolidPattern); style->setFillBrush(brush); - style->setNormalFont(base_style->getNormalFont()); - style->setSmallFont(base_style->getSmallFont()); - style->setHeaderFont(base_style->getHeaderFont()); - _relation_style_map.insert(key, style); - derived_style = style; + style->setNormalFont(baseStyle->normalFont()); + style->setSmallFont(baseStyle->smallFont()); + style->setHeaderFont(baseStyle->headerFont()); + m_relationStyleMap.insert(key, style); + derivedStyle = style; } - return derived_style; + return derivedStyle; } -const Style *DefaultStyleEngine::applyAnnotationStyle(const Style *base_style, const DAnnotation *annotation, const Parameters *parameters) +const Style *DefaultStyleEngine::applyAnnotationStyle(const Style *baseStyle, const DAnnotation *annotation, + const Parameters *parameters) { - DAnnotation::VisualRole visual_role = annotation ? annotation->getVisualRole() : DAnnotation::ROLE_NORMAL; - return applyAnnotationStyle(base_style, visual_role, parameters); + DAnnotation::VisualRole visualRole = annotation ? annotation->visualRole() : DAnnotation::RoleNormal; + return applyAnnotationStyle(baseStyle, visualRole, parameters); } -const Style *DefaultStyleEngine::applyBoundaryStyle(const Style *base_style, const DBoundary *boundary, const Parameters *parameters) +const Style *DefaultStyleEngine::applyBoundaryStyle(const Style *baseStyle, const DBoundary *boundary, + const Parameters *parameters) { Q_UNUSED(boundary); - return applyBoundaryStyle(base_style, parameters); + return applyBoundaryStyle(baseStyle, parameters); } -const Style *DefaultStyleEngine::applyAnnotationStyle(const Style *base_style, DAnnotation::VisualRole visual_role, const StyleEngine::Parameters *parameters) +const Style *DefaultStyleEngine::applyAnnotationStyle(const Style *baseStyle, DAnnotation::VisualRole visualRole, + const StyleEngine::Parameters *parameters) { Q_UNUSED(parameters); - AnnotationStyleKey key(visual_role); - const Style *derived_style = _annotation_style_map.value(key); - if (!derived_style) { - Style *style = new Style(base_style->getType()); - QFont normal_font; - QBrush text_brush = base_style->getTextBrush(); - switch (visual_role) { - case DAnnotation::ROLE_NORMAL: - normal_font = base_style->getNormalFont(); + AnnotationStyleKey key(visualRole); + const Style *derivedStyle = m_annotationStyleMap.value(key); + if (!derivedStyle) { + Style *style = new Style(baseStyle->type()); + QFont normalFont; + QBrush textBrush = baseStyle->textBrush(); + switch (visualRole) { + case DAnnotation::RoleNormal: + normalFont = baseStyle->normalFont(); break; - case DAnnotation::ROLE_TITLE: - normal_font = base_style->getHeaderFont(); + case DAnnotation::RoleTitle: + normalFont = baseStyle->headerFont(); break; - case DAnnotation::ROLE_SUBTITLE: - normal_font = base_style->getNormalFont(); - normal_font.setItalic(true); + case DAnnotation::RoleSubtitle: + normalFont = baseStyle->normalFont(); + normalFont.setItalic(true); break; - case DAnnotation::ROLE_EMPHASIZED: - normal_font = base_style->getNormalFont(); - normal_font.setBold(true); + case DAnnotation::RoleEmphasized: + normalFont = baseStyle->normalFont(); + normalFont.setBold(true); break; - case DAnnotation::ROLE_SOFTEN: - normal_font = base_style->getNormalFont(); - text_brush.setColor(Qt::gray); + case DAnnotation::RoleSoften: + normalFont = baseStyle->normalFont(); + textBrush.setColor(Qt::gray); break; - case DAnnotation::ROLE_FOOTNOTE: - normal_font = base_style->getSmallFont(); + case DAnnotation::RoleFootnote: + normalFont = baseStyle->smallFont(); break; } - style->setNormalFont(normal_font); - style->setTextBrush(text_brush); - _annotation_style_map.insert(key, style); - derived_style = style; + style->setNormalFont(normalFont); + style->setTextBrush(textBrush); + m_annotationStyleMap.insert(key, style); + derivedStyle = style; } - return derived_style; + return derivedStyle; } -const Style *DefaultStyleEngine::applyBoundaryStyle(const Style *base_style, const StyleEngine::Parameters *parameters) +const Style *DefaultStyleEngine::applyBoundaryStyle(const Style *baseStyle, const StyleEngine::Parameters *parameters) { Q_UNUSED(parameters); BoundaryStyleKey key; - const Style *derived_style = _boundary_style_map.value(key); - if (!derived_style) { - Style *style = new Style(base_style->getType()); - style->setNormalFont(base_style->getNormalFont()); - style->setTextBrush(base_style->getTextBrush()); - _boundary_style_map.insert(key, style); - derived_style = style; + const Style *derivedStyle = m_boundaryStyleMap.value(key); + if (!derivedStyle) { + Style *style = new Style(baseStyle->type()); + style->setNormalFont(baseStyle->normalFont()); + style->setTextBrush(baseStyle->textBrush()); + m_boundaryStyleMap.insert(key, style); + derivedStyle = style; } - return derived_style; + return derivedStyle; } -DefaultStyleEngine::ElementType DefaultStyleEngine::getObjectType(const DObject *object) +DefaultStyleEngine::ElementType DefaultStyleEngine::objectType(const DObject *object) { - ElementType element_type; - if (dynamic_cast<const DPackage *>(object)) { - element_type = TYPE_PACKAGE; - } else if (dynamic_cast<const DComponent *>(object)) { - element_type = TYPE_COMPONENT; - } else if (dynamic_cast<const DClass *>(object)) { - element_type = TYPE_CLASS; - } else if (dynamic_cast<const DItem *>(object)) { - element_type = TYPE_ITEM; - } else { - element_type = TYPE_OTHER; - } - return element_type; + ElementType elementType; + if (dynamic_cast<const DPackage *>(object)) + elementType = TypePackage; + else if (dynamic_cast<const DComponent *>(object)) + elementType = TypeComponent; + else if (dynamic_cast<const DClass *>(object)) + elementType = TypeClass; + else if (dynamic_cast<const DItem *>(object)) + elementType = TypeItem; + else + elementType = TypeOther; + return elementType; } -bool DefaultStyleEngine::areStackingRoles(DObject::VisualPrimaryRole rhs_primary_role, DObject::VisualSecondaryRole rhs_secondary_role, - DObject::VisualPrimaryRole lhs_primary_role, DObject::VisualSecondaryRole lhs_secondary_rols) +bool DefaultStyleEngine::areStackingRoles(DObject::VisualPrimaryRole rhsPrimaryRole, + DObject::VisualSecondaryRole rhsSecondaryRole, + DObject::VisualPrimaryRole lhsPrimaryRole, + DObject::VisualSecondaryRole lhsSecondaryRols) { - switch (rhs_secondary_role) { - case DObject::SECONDARY_ROLE_NONE: - case DObject::SECONDARY_ROLE_LIGHTER: - case DObject::SECONDARY_ROLE_DARKER: - switch (lhs_secondary_rols) { - case DObject::SECONDARY_ROLE_NONE: - case DObject::SECONDARY_ROLE_LIGHTER: - case DObject::SECONDARY_ROLE_DARKER: - return lhs_primary_role == rhs_primary_role; + switch (rhsSecondaryRole) { + case DObject::SecondaryRoleNone: + case DObject::SecondaryRoleLighter: + case DObject::SecondaryRoleDarker: + switch (lhsSecondaryRols) { + case DObject::SecondaryRoleNone: + case DObject::SecondaryRoleLighter: + case DObject::SecondaryRoleDarker: + return lhsPrimaryRole == rhsPrimaryRole; break; - case DObject::SECONDARY_ROLE_SOFTEN: - case DObject::SECONDARY_ROLE_OUTLINE: + case DObject::SecondaryRoleSoften: + case DObject::SecondaryRoleOutline: return false; } - case DObject::SECONDARY_ROLE_SOFTEN: - case DObject::SECONDARY_ROLE_OUTLINE: + case DObject::SecondaryRoleSoften: + case DObject::SecondaryRoleOutline: return false; } return true; } -QColor DefaultStyleEngine::getBaseColor(ElementType element_type, ObjectVisuals object_visuals) +QColor DefaultStyleEngine::baseColor(ElementType elementType, ObjectVisuals objectVisuals) { - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_OUTLINE) { + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleOutline) return QColor("#FFFFFF"); - } - QColor base_color; + QColor baseColor; - if (object_visuals.getVisualPrimaryRole() == DObject::PRIMARY_ROLE_NORMAL) { - if (object_visuals.getBaseColor().isValid()) { - base_color = object_visuals.getBaseColor(); + if (objectVisuals.visualPrimaryRole() == DObject::PrimaryRoleNormal) { + if (objectVisuals.baseColor().isValid()) { + baseColor = objectVisuals.baseColor(); } else { - switch (element_type) { - case TYPE_PACKAGE: - base_color = QColor("#7C98AD"); + switch (elementType) { + case TypePackage: + baseColor = QColor("#7C98AD"); break; - case TYPE_COMPONENT: - base_color = QColor("#A0A891"); + case TypeComponent: + baseColor = QColor("#A0A891"); break; - case TYPE_CLASS: - base_color = QColor("#E5A858"); + case TypeClass: + baseColor = QColor("#E5A858"); break; - case TYPE_ITEM: - base_color = QColor("#B995C6"); + case TypeItem: + baseColor = QColor("#B995C6"); break; default: - base_color = QColor("#BF7D65"); + baseColor = QColor("#BF7D65"); break; } } } else { - static QColor custom_colors[] = { + static QColor customColors[] = { QColor("#EE8E99").darker(110), // ROLE_CUSTOM1, QColor("#80AF47").lighter(130), // ROLE_CUSTOM2, QColor("#FFA15B").lighter(100), // ROLE_CUSTOM3, @@ -495,80 +519,76 @@ QColor DefaultStyleEngine::getBaseColor(ElementType element_type, ObjectVisuals QColor("#FFE14B") // ROLE_CUSTOM5, }; - int index = (int) object_visuals.getVisualPrimaryRole() - (int) DObject::PRIMARY_ROLE_CUSTOM1; + int index = static_cast<int>(objectVisuals.visualPrimaryRole()) - static_cast<int>(DObject::PrimaryRoleCustom1); QMT_CHECK(index >= 0 && index <= 4); - base_color = custom_colors[index]; + baseColor = customColors[index]; } - switch (object_visuals.getVisualSecondaryRole()) { - case DObject::SECONDARY_ROLE_NONE: + switch (objectVisuals.visualSecondaryRole()) { + case DObject::SecondaryRoleNone: break; - case DObject::SECONDARY_ROLE_LIGHTER: - base_color = base_color.lighter(110); + case DObject::SecondaryRoleLighter: + baseColor = baseColor.lighter(110); break; - case DObject::SECONDARY_ROLE_DARKER: - base_color = base_color.darker(120); + case DObject::SecondaryRoleDarker: + baseColor = baseColor.darker(120); break; - case DObject::SECONDARY_ROLE_SOFTEN: - base_color = base_color.lighter(300); + case DObject::SecondaryRoleSoften: + baseColor = baseColor.lighter(300); break; - case DObject::SECONDARY_ROLE_OUTLINE: + case DObject::SecondaryRoleOutline: QMT_CHECK(false); break; } - return base_color; + return baseColor; } -QColor DefaultStyleEngine::getLineColor(ElementType element_type, const ObjectVisuals &object_visuals) +QColor DefaultStyleEngine::lineColor(ElementType elementType, const ObjectVisuals &objectVisuals) { - QColor line_color; - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_OUTLINE) { - line_color = Qt::black; - } else if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_SOFTEN) { - line_color = Qt::gray; - } else { - line_color = getBaseColor(element_type, object_visuals).darker(200).lighter(150).darker(100 + object_visuals.getDepth() * 10); - } - return line_color; + QColor lineColor; + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleOutline) + lineColor = Qt::black; + else if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleSoften) + lineColor = Qt::gray; + else + lineColor = baseColor(elementType, objectVisuals).darker(200).lighter(150).darker(100 + objectVisuals.depth() * 10); + return lineColor; } -QColor DefaultStyleEngine::getFillColor(ElementType element_type, const ObjectVisuals &object_visuals) +QColor DefaultStyleEngine::fillColor(ElementType elementType, const ObjectVisuals &objectVisuals) { - QColor fill_color; - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_OUTLINE) { - fill_color = Qt::white; - } else { - fill_color = getBaseColor(element_type, object_visuals).lighter(150).darker(100 + object_visuals.getDepth() * 10); - } - return fill_color; + QColor fillColor; + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleOutline) + fillColor = Qt::white; + else + fillColor = baseColor(elementType, objectVisuals).lighter(150).darker(100 + objectVisuals.depth() * 10); + return fillColor; } -QColor DefaultStyleEngine::getTextColor(const DObject *object, int depth) +QColor DefaultStyleEngine::textColor(const DObject *object, int depth) { Q_UNUSED(depth); - QColor text_color; - DObject::VisualPrimaryRole visual_role = object ? object->getVisualPrimaryRole() : DObject::PRIMARY_ROLE_NORMAL; - if (visual_role == DObject::DEPRECATED_PRIMARY_ROLE_SOFTEN) { - text_color = Qt::gray; - } else { - text_color = Qt::black; - } - return text_color; + QColor textColor; + DObject::VisualPrimaryRole visualRole = object ? object->visualPrimaryRole() : DObject::PrimaryRoleNormal; + if (visualRole == DObject::DeprecatedPrimaryRoleSoften) + textColor = Qt::gray; + else + textColor = Qt::black; + return textColor; } -QColor DefaultStyleEngine::getTextColor(ElementType element_type, const ObjectVisuals &object_visuals) +QColor DefaultStyleEngine::textColor(ElementType elementType, const ObjectVisuals &objectVisuals) { - Q_UNUSED(element_type); - - QColor text_color; - if (object_visuals.getVisualSecondaryRole() == DObject::SECONDARY_ROLE_SOFTEN) { - text_color = Qt::gray; - } else { - text_color = Qt::black; - } - return text_color; + Q_UNUSED(elementType); + + QColor textColor; + if (objectVisuals.visualSecondaryRole() == DObject::SecondaryRoleSoften) + textColor = Qt::gray; + else + textColor = Qt::black; + return textColor; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.h b/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.h index 38f6bc69fb..fdb8689c95 100644 --- a/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.h +++ b/src/libs/3rdparty/modeling/qmt/style/defaultstyleengine.h @@ -42,68 +42,58 @@ QT_BEGIN_NAMESPACE class QColor; QT_END_NAMESPACE - namespace qmt { -struct ObjectStyleKey; -struct RelationStyleKey; -struct AnnotationStyleKey; -struct BoundaryStyleKey; - +class ObjectStyleKey; +class RelationStyleKey; +class AnnotationStyleKey; +class BoundaryStyleKey; -class QMT_EXPORT DefaultStyleEngine : - public StyleEngine +class QMT_EXPORT DefaultStyleEngine : public StyleEngine { Q_DISABLE_COPY(DefaultStyleEngine) public: - DefaultStyleEngine(); - ~DefaultStyleEngine(); -public: - - const Style *applyStyle(const Style *base_style, ElementType element_type, const Parameters *parameters); - - const Style *applyObjectStyle(const Style *base_style, ElementType element_type, const ObjectVisuals &object_visuals, const Parameters *parameters); - - const Style *applyObjectStyle(const Style *base_style, const StyledObject &styled_object, const Parameters *parameters); - - const Style *applyRelationStyle(const Style *base_style, const StyledRelation &styled_relation, const Parameters *parameters); - - const Style *applyAnnotationStyle(const Style *base_style, const DAnnotation *annotation, const Parameters *parameters); - - const Style *applyBoundaryStyle(const Style *base_style, const DBoundary *boundary, const Parameters *parameters); + const Style *applyStyle(const Style *baseStyle, ElementType elementType, + const Parameters *parameters); + const Style *applyObjectStyle(const Style *baseStyle, ElementType elementType, + const ObjectVisuals &objectVisuals, const Parameters *parameters); + const Style *applyObjectStyle(const Style *baseStyle, const StyledObject &styledObject, + const Parameters *parameters); + const Style *applyRelationStyle(const Style *baseStyle, const StyledRelation &styledRelation, + const Parameters *parameters); + const Style *applyAnnotationStyle(const Style *baseStyle, const DAnnotation *annotation, + const Parameters *parameters); + const Style *applyBoundaryStyle(const Style *baseStyle, const DBoundary *boundary, + const Parameters *parameters); private: - - const Style *applyAnnotationStyle(const Style *base_style, DAnnotation::VisualRole visual_role, const Parameters *parameters); - - const Style *applyBoundaryStyle(const Style *base_style, const Parameters *parameters); - - ElementType getObjectType(const DObject *object); - - bool areStackingRoles(DObject::VisualPrimaryRole rhs_primary_role, DObject::VisualSecondaryRole rhs_secondary_role, DObject::VisualPrimaryRole lhs_primary_role, DObject::VisualSecondaryRole lhs_secondary_rols); - - QColor getBaseColor(ElementType element_type, ObjectVisuals object_visuals); - - QColor getLineColor(ElementType element_type, const ObjectVisuals &object_visuals); - - QColor getFillColor(ElementType element_type, const ObjectVisuals &object_visuals); - - QColor getTextColor(const DObject *object, int depth); - - QColor getTextColor(ElementType element_type, const ObjectVisuals &object_visuals); - -private: - - QHash<ObjectStyleKey, const Style *> _object_style_map; - QHash<RelationStyleKey, const Style *> _relation_style_map; - QHash<AnnotationStyleKey, const Style *> _annotation_style_map; - QHash<BoundaryStyleKey, const Style *> _boundary_style_map; + const Style *applyAnnotationStyle(const Style *baseStyle, DAnnotation::VisualRole visualRole, + const Parameters *parameters); + const Style *applyBoundaryStyle(const Style *baseStyle, const Parameters *parameters); + + ElementType objectType(const DObject *object); + + bool areStackingRoles(DObject::VisualPrimaryRole rhsPrimaryRole, + DObject::VisualSecondaryRole rhsSecondaryRole, + DObject::VisualPrimaryRole lhsPrimaryRole, + DObject::VisualSecondaryRole lhsSecondaryRols); + + QColor baseColor(ElementType elementType, ObjectVisuals objectVisuals); + QColor lineColor(ElementType elementType, const ObjectVisuals &objectVisuals); + QColor fillColor(ElementType elementType, const ObjectVisuals &objectVisuals); + QColor textColor(const DObject *object, int depth); + QColor textColor(ElementType elementType, const ObjectVisuals &objectVisuals); + + QHash<ObjectStyleKey, const Style *> m_objectStyleMap; + QHash<RelationStyleKey, const Style *> m_relationStyleMap; + QHash<AnnotationStyleKey, const Style *> m_annotationStyleMap; + QHash<BoundaryStyleKey, const Style *> m_boundaryStyleMap; }; -} +} // namespace qmt #endif // QMT_DEFAULTSTYLEENGINE_H diff --git a/src/libs/3rdparty/modeling/qmt/style/objectvisuals.cpp b/src/libs/3rdparty/modeling/qmt/style/objectvisuals.cpp index 0e78bbe697..8b04cf584d 100644 --- a/src/libs/3rdparty/modeling/qmt/style/objectvisuals.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/objectvisuals.cpp @@ -35,21 +35,21 @@ namespace qmt { ObjectVisuals::ObjectVisuals() - : _visual_primary_role(DObject::PRIMARY_ROLE_NORMAL), - _visual_secondary_role(DObject::SECONDARY_ROLE_NONE), - _emphasized(false), - _depth(0) + : m_visualPrimaryRole(DObject::PrimaryRoleNormal), + m_visualSecondaryRole(DObject::SecondaryRoleNone), + m_isEmphasized(false), + m_depth(0) { } -ObjectVisuals::ObjectVisuals(DObject::VisualPrimaryRole visual_primary_role, - DObject::VisualSecondaryRole visual_secondary_role, - bool emphasized, const QColor &base_color, int depth) - : _visual_primary_role(visual_primary_role), - _visual_secondary_role(visual_secondary_role), - _emphasized(emphasized), - _base_color(base_color), - _depth(depth) +ObjectVisuals::ObjectVisuals(DObject::VisualPrimaryRole visualPrimaryRole, + DObject::VisualSecondaryRole visualSecondaryRole, + bool emphasized, const QColor &baseColor, int depth) + : m_visualPrimaryRole(visualPrimaryRole), + m_visualSecondaryRole(visualSecondaryRole), + m_isEmphasized(emphasized), + m_baseColor(baseColor), + m_depth(depth) { } @@ -57,47 +57,47 @@ ObjectVisuals::~ObjectVisuals() { } -void ObjectVisuals::setVisualPrimaryRole(DObject::VisualPrimaryRole visual_primary_role) +void ObjectVisuals::setVisualPrimaryRole(DObject::VisualPrimaryRole visualPrimaryRole) { - _visual_primary_role = visual_primary_role; + m_visualPrimaryRole = visualPrimaryRole; } -void ObjectVisuals::setVisualSecondaryRole(DObject::VisualSecondaryRole visual_secondary_role) +void ObjectVisuals::setVisualSecondaryRole(DObject::VisualSecondaryRole visualSecondaryRole) { - _visual_secondary_role = visual_secondary_role; + m_visualSecondaryRole = visualSecondaryRole; } void ObjectVisuals::setEmphasized(bool emphasized) { - _emphasized = emphasized; + m_isEmphasized = emphasized; } -void ObjectVisuals::setBaseColor(const QColor &base_color) +void ObjectVisuals::setBaseColor(const QColor &baseColor) { - _base_color = base_color; + m_baseColor = baseColor; } void ObjectVisuals::setDepth(int depth) { - _depth = depth; + m_depth = depth; } bool operator==(const ObjectVisuals &lhs, const ObjectVisuals &rhs) { - return lhs.getVisualPrimaryRole() == rhs.getVisualPrimaryRole() - && lhs.getVisualSecondaryRole() == rhs.getVisualSecondaryRole() + return lhs.visualPrimaryRole() == rhs.visualPrimaryRole() + && lhs.visualSecondaryRole() == rhs.visualSecondaryRole() && lhs.isEmphasized() == rhs.isEmphasized() - && lhs.getBaseColor() == rhs.getBaseColor() - && lhs.getDepth() == rhs.getDepth(); + && lhs.baseColor() == rhs.baseColor() + && lhs.depth() == rhs.depth(); } -uint qHash(const ObjectVisuals &object_visuals) +uint qHash(const ObjectVisuals &objectVisuals) { - return ::qHash((int) object_visuals.getVisualPrimaryRole()) - ^ ::qHash((int) object_visuals.getVisualSecondaryRole()) - ^ ::qHash(object_visuals.isEmphasized()) - ^ ::qHash(object_visuals.getBaseColor().rgb()) - ^ ::qHash(object_visuals.getDepth()); + return ::qHash(static_cast<int>(objectVisuals.visualPrimaryRole())) + ^ ::qHash(static_cast<int>(objectVisuals.visualSecondaryRole())) + ^ ::qHash(objectVisuals.isEmphasized()) + ^ ::qHash(objectVisuals.baseColor().rgb()) + ^ ::qHash(objectVisuals.depth()); } } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/objectvisuals.h b/src/libs/3rdparty/modeling/qmt/style/objectvisuals.h index b7e5b93cbe..0bd43b8d1b 100644 --- a/src/libs/3rdparty/modeling/qmt/style/objectvisuals.h +++ b/src/libs/3rdparty/modeling/qmt/style/objectvisuals.h @@ -41,49 +41,32 @@ class QMT_EXPORT ObjectVisuals { public: ObjectVisuals(); - ObjectVisuals(DObject::VisualPrimaryRole visual_primary_role, - DObject::VisualSecondaryRole visual_secondary_role, - bool emphasized, const QColor &base_color, int depth); + ObjectVisuals(DObject::VisualPrimaryRole visualPrimaryRole, + DObject::VisualSecondaryRole visualSecondaryRole, + bool emphasized, const QColor &baseColor, int depth); ~ObjectVisuals(); -public: - - DObject::VisualPrimaryRole getVisualPrimaryRole() const { return _visual_primary_role; } - - void setVisualPrimaryRole(DObject::VisualPrimaryRole visual_primary_role); - - DObject::VisualSecondaryRole getVisualSecondaryRole() const { return _visual_secondary_role; } - - void setVisualSecondaryRole(DObject::VisualSecondaryRole visual_secondary_role); - - bool isEmphasized() const { return _emphasized; } - + DObject::VisualPrimaryRole visualPrimaryRole() const { return m_visualPrimaryRole; } + void setVisualPrimaryRole(DObject::VisualPrimaryRole visualPrimaryRole); + DObject::VisualSecondaryRole visualSecondaryRole() const { return m_visualSecondaryRole; } + void setVisualSecondaryRole(DObject::VisualSecondaryRole visualSecondaryRole); + bool isEmphasized() const { return m_isEmphasized; } void setEmphasized(bool emphasized); - - QColor getBaseColor() const { return _base_color; } - - void setBaseColor(const QColor &base_color); - - int getDepth() const { return _depth; } - + QColor baseColor() const { return m_baseColor; } + void setBaseColor(const QColor &baseColor); + int depth() const { return m_depth; } void setDepth(int depth); private: - - DObject::VisualPrimaryRole _visual_primary_role; - - DObject::VisualSecondaryRole _visual_secondary_role; - - bool _emphasized; - - QColor _base_color; - - int _depth; + DObject::VisualPrimaryRole m_visualPrimaryRole; + DObject::VisualSecondaryRole m_visualSecondaryRole; + bool m_isEmphasized; + QColor m_baseColor; + int m_depth; }; bool operator==(const ObjectVisuals &lhs, const ObjectVisuals &rhs); - -uint qHash(const ObjectVisuals &object_visuals); +uint qHash(const ObjectVisuals &objectVisuals); } // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.cpp b/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.cpp index 004d83ae90..f3f905c739 100644 --- a/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.cpp @@ -35,29 +35,28 @@ namespace qmt { RelationStarterStyle::RelationStarterStyle() : Style(GlobalStyle) { - QPen line_pen; - line_pen.setColor("black"); - line_pen.setWidth(1); - setLinePen(line_pen); - setOuterLinePen(line_pen); - setInnerLinePen(line_pen); - setExtraLinePen(line_pen); + QPen linePen; + linePen.setColor("black"); + linePen.setWidth(1); + setLinePen(linePen); + setOuterLinePen(linePen); + setInnerLinePen(linePen); + setExtraLinePen(linePen); setTextBrush(QBrush(QColor("black"))); setFillBrush(QBrush(QColor("black"))); setExtraFillBrush(QBrush(QColor("white"))); - QFont normal_font; - setNormalFont(normal_font); - QFont small_font; - small_font.setPointSizeF(QFont().pointSizeF() * 0.80); - setSmallFont(small_font); - QFont header_font; - header_font.setPointSizeF(QFont().pointSizeF() * 1.25); - setHeaderFont(header_font); + QFont normalFont; + setNormalFont(normalFont); + QFont smallFont; + smallFont.setPointSizeF(QFont().pointSizeF() * 0.80); + setSmallFont(smallFont); + QFont headerFont; + headerFont.setPointSizeF(QFont().pointSizeF() * 1.25); + setHeaderFont(headerFont); } - RelationStarterStyle::~RelationStarterStyle() { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.h b/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.h index ceb47887fe..424cc240b3 100644 --- a/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.h +++ b/src/libs/3rdparty/modeling/qmt/style/relationstarterstyle.h @@ -35,15 +35,13 @@ namespace qmt { -class QMT_EXPORT RelationStarterStyle : - public Style +class QMT_EXPORT RelationStarterStyle : public Style { public: RelationStarterStyle(); - ~RelationStarterStyle(); }; -} +} // namespace qmt #endif // QMT_RELATIONSTARTERSTYLE_H diff --git a/src/libs/3rdparty/modeling/qmt/style/style.cpp b/src/libs/3rdparty/modeling/qmt/style/style.cpp index 799d2e76ff..3b984ee71b 100644 --- a/src/libs/3rdparty/modeling/qmt/style/style.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/style.cpp @@ -33,7 +33,7 @@ namespace qmt { Style::Style(Type type) - : _type(type) + : m_type(type) { } @@ -43,52 +43,52 @@ Style::~Style() void Style::setLinePen(const QPen &pen) { - _line_pen = pen; + m_linePen = pen; } void Style::setOuterLinePen(const QPen &pen) { - _outer_line_pen = pen; + m_outerLinePen = pen; } void Style::setInnerLinePen(const QPen &pen) { - _inner_line_pen = pen; + m_innerLinePen = pen; } void Style::setExtraLinePen(const QPen &pen) { - _extra_line_pen = pen; + m_extraLinePen = pen; } void Style::setTextBrush(const QBrush &brush) { - _text_brush = brush; + m_textBrush = brush; } void Style::setFillBrush(const QBrush &brush) { - _fill_brush = brush; + m_fillBrush = brush; } void Style::setExtraFillBrush(const QBrush &brush) { - _extra_fill_brush = brush; + m_extraFillBrush = brush; } void Style::setNormalFont(const QFont &font) { - _normal_font = font; + m_normalFont = font; } void Style::setSmallFont(const QFont &font) { - _small_font = font; + m_smallFont = font; } void Style::setHeaderFont(const QFont &font) { - _header_font = font; + m_headerFont = font; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/style.h b/src/libs/3rdparty/modeling/qmt/style/style.h index b7637bc92c..76be0f03c0 100644 --- a/src/libs/3rdparty/modeling/qmt/style/style.h +++ b/src/libs/3rdparty/modeling/qmt/style/style.h @@ -38,94 +38,55 @@ #include <QBrush> #include <QFont> - namespace qmt { class QMT_EXPORT Style { public: - enum Type { GlobalStyle, ModelSpecificStyle }; -public: - explicit Style(Type type); - virtual ~Style(); -public: - - Type getType() const { return _type; } - - QPen getLinePen() const { return _line_pen; } - + Type type() const { return m_type; } + QPen linePen() const { return m_linePen; } void setLinePen(const QPen &pen); - - QPen getOuterLinePen() const { return _outer_line_pen; } - + QPen outerLinePen() const { return m_outerLinePen; } void setOuterLinePen(const QPen &pen); - - QPen getInnerLinePen() const { return _inner_line_pen; } - + QPen innerLinePen() const { return m_innerLinePen; } void setInnerLinePen(const QPen &pen); - - QPen getExtraLinePen() const { return _extra_line_pen; } - + QPen extraLinePen() const { return m_extraLinePen; } void setExtraLinePen(const QPen &pen); - - QBrush getTextBrush() const { return _text_brush; } - + QBrush textBrush() const { return m_textBrush; } void setTextBrush(const QBrush &brush); - - QBrush getFillBrush() const { return _fill_brush; } - + QBrush fillBrush() const { return m_fillBrush; } void setFillBrush(const QBrush &brush); - - QBrush getExtraFillBrush() const { return _extra_fill_brush; } - + QBrush extraFillBrush() const { return m_extraFillBrush; } void setExtraFillBrush(const QBrush &brush); - - QFont getNormalFont() const { return _normal_font; } - + QFont normalFont() const { return m_normalFont; } void setNormalFont(const QFont &font); - - QFont getSmallFont() const { return _small_font; } - + QFont smallFont() const { return m_smallFont; } void setSmallFont(const QFont &font); - - QFont getHeaderFont() const { return _header_font; } - + QFont headerFont() const { return m_headerFont; } void setHeaderFont(const QFont &font); private: - - Type _type; - - QPen _line_pen; - - QPen _outer_line_pen; - - QPen _inner_line_pen; - - QPen _extra_line_pen; - - QBrush _text_brush; - - QBrush _fill_brush; - - QBrush _extra_fill_brush; - - QFont _normal_font; - - QFont _small_font; - - QFont _header_font; - + Type m_type; + QPen m_linePen; + QPen m_outerLinePen; + QPen m_innerLinePen; + QPen m_extraLinePen; + QBrush m_textBrush; + QBrush m_fillBrush; + QBrush m_extraFillBrush; + QFont m_normalFont; + QFont m_smallFont; + QFont m_headerFont; }; -} +} // namespace qmt #endif // QMT_STYLE_H diff --git a/src/libs/3rdparty/modeling/qmt/style/stylecontroller.cpp b/src/libs/3rdparty/modeling/qmt/style/stylecontroller.cpp index 5c9f34c054..895b2ac8ef 100644 --- a/src/libs/3rdparty/modeling/qmt/style/stylecontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/stylecontroller.cpp @@ -36,35 +36,30 @@ #include <QHash> - namespace qmt { -class StyleController::Parameters : - public StyleEngine::Parameters +class StyleController::Parameters : public StyleEngine::Parameters { public: - Parameters(StyleController *style_controller) - : _style_controller(style_controller) + Parameters(StyleController *styleController) + : m_styleController(styleController) { } bool suppressGradients() const { - return _style_controller->getSuppressGradients(); + return m_styleController->suppressGradients(); } private: - - StyleController *_style_controller; - + StyleController *m_styleController; }; - StyleController::StyleController(QObject *parent) : QObject(parent), - _default_style(new DefaultStyle), - _relation_starter_style(new RelationStarterStyle), - _default_style_engine(new DefaultStyleEngine), - _suppress_gradients(false) + m_defaultStyle(new DefaultStyle), + m_relationStarterStyle(new RelationStarterStyle), + m_defaultStyleEngine(new DefaultStyleEngine), + m_suppressGradients(false) { } @@ -72,50 +67,50 @@ StyleController::~StyleController() { } -void StyleController::setSuppressGradients(bool suppress_gradients) +void StyleController::setSuppressGradients(bool suppressGradients) { - _suppress_gradients = suppress_gradients; + m_suppressGradients = suppressGradients; } -const Style *StyleController::adaptStyle(StyleEngine::ElementType element_type) +const Style *StyleController::adaptStyle(StyleEngine::ElementType elementType) { Parameters parameters(this); - return _default_style_engine->applyStyle(_default_style.data(), element_type, ¶meters); + return m_defaultStyleEngine->applyStyle(m_defaultStyle.data(), elementType, ¶meters); } -const Style *StyleController::adaptObjectStyle(StyleEngine::ElementType element_type, const ObjectVisuals &object_visuals) +const Style *StyleController::adaptObjectStyle(StyleEngine::ElementType elementType, const ObjectVisuals &objectVisuals) { Parameters parameters(this); - return _default_style_engine->applyObjectStyle(_default_style.data(), element_type, object_visuals, ¶meters); + return m_defaultStyleEngine->applyObjectStyle(m_defaultStyle.data(), elementType, objectVisuals, ¶meters); } const Style *StyleController::adaptObjectStyle(const StyledObject &object) { Parameters parameters(this); - return _default_style_engine->applyObjectStyle(_default_style.data(), object, ¶meters); + return m_defaultStyleEngine->applyObjectStyle(m_defaultStyle.data(), object, ¶meters); } const Style *StyleController::adaptRelationStyle(const StyledRelation &relation) { Parameters parameters(this); - return _default_style_engine->applyRelationStyle(_default_style.data(), relation, ¶meters); + return m_defaultStyleEngine->applyRelationStyle(m_defaultStyle.data(), relation, ¶meters); } const Style *StyleController::adaptAnnotationStyle(const DAnnotation *annotation) { Parameters parameters(this); - return _default_style_engine->applyAnnotationStyle(_default_style.data(), annotation, ¶meters); + return m_defaultStyleEngine->applyAnnotationStyle(m_defaultStyle.data(), annotation, ¶meters); } const Style *StyleController::adaptBoundaryStyle(const DBoundary *boundary) { Parameters parameters(this); - return _default_style_engine->applyBoundaryStyle(_default_style.data(), boundary, ¶meters); + return m_defaultStyleEngine->applyBoundaryStyle(m_defaultStyle.data(), boundary, ¶meters); } -const Style *StyleController::getRelationStarterStyle() +const Style *StyleController::relationStarterStyle() { - return _relation_starter_style.data(); + return m_relationStarterStyle.data(); } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/stylecontroller.h b/src/libs/3rdparty/modeling/qmt/style/stylecontroller.h index 07d30cf684..7670e2a72e 100644 --- a/src/libs/3rdparty/modeling/qmt/style/stylecontroller.h +++ b/src/libs/3rdparty/modeling/qmt/style/stylecontroller.h @@ -38,65 +38,43 @@ #include <QScopedPointer> - namespace qmt { class Style; class ObjectVisuals; class StyledObject; class StyledRelation; - class DAnnotation; class DBoundary; - -class QMT_EXPORT StyleController : - public QObject +class QMT_EXPORT StyleController : public QObject { Q_OBJECT - class Parameters; public: - explicit StyleController(QObject *parent = 0); - ~StyleController(); -public: - - bool getSuppressGradients() const { return _suppress_gradients; } - - void setSuppressGradients(bool suppress_gradients); - -public: - - const Style *adaptStyle(StyleEngine::ElementType element_type); - - const Style *adaptObjectStyle(StyleEngine::ElementType element_type, const ObjectVisuals &object_visuals); + bool suppressGradients() const { return m_suppressGradients; } + void setSuppressGradients(bool suppressGradients); + const Style *adaptStyle(StyleEngine::ElementType elementType); + const Style *adaptObjectStyle(StyleEngine::ElementType elementType, + const ObjectVisuals &objectVisuals); const Style *adaptObjectStyle(const StyledObject &object); - const Style *adaptRelationStyle(const StyledRelation &relation); - const Style *adaptAnnotationStyle(const DAnnotation *annotation); - const Style *adaptBoundaryStyle(const DBoundary *boundary); - - const Style *getRelationStarterStyle(); + const Style *relationStarterStyle(); private: - - QScopedPointer<Style> _default_style; - - QScopedPointer<Style> _relation_starter_style; - - QScopedPointer<StyleEngine> _default_style_engine; - - bool _suppress_gradients; - + QScopedPointer<Style> m_defaultStyle; + QScopedPointer<Style> m_relationStarterStyle; + QScopedPointer<StyleEngine> m_defaultStyleEngine; + bool m_suppressGradients; }; -} +} // namespace qmt #endif // QMT_STYLECONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/style/styledobject.cpp b/src/libs/3rdparty/modeling/qmt/style/styledobject.cpp index ea3c05ffc9..1b8ae9d7aa 100644 --- a/src/libs/3rdparty/modeling/qmt/style/styledobject.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/styledobject.cpp @@ -32,10 +32,11 @@ namespace qmt { -StyledObject::StyledObject(const DObject *object, const ObjectVisuals &object_visuals, const QList<const DObject *> &colliding_objects) - : _object(object), - _object_visuals(object_visuals), - _colliding_objects(colliding_objects) +StyledObject::StyledObject(const DObject *object, const ObjectVisuals &objectVisuals, + const QList<const DObject *> &collidingObjects) + : m_object(object), + m_objectVisuals(objectVisuals), + m_collidingObjects(collidingObjects) { } @@ -43,4 +44,4 @@ StyledObject::~StyledObject() { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/styledobject.h b/src/libs/3rdparty/modeling/qmt/style/styledobject.h index 22f07383e4..c56cfebccf 100644 --- a/src/libs/3rdparty/modeling/qmt/style/styledobject.h +++ b/src/libs/3rdparty/modeling/qmt/style/styledobject.h @@ -39,31 +39,23 @@ namespace qmt { class DObject; - class QMT_EXPORT StyledObject { public: - StyledObject(const DObject *object, const ObjectVisuals &object_visuals, const QList<const DObject *> &colliding_objects); - + StyledObject(const DObject *object, const ObjectVisuals &objectVisuals, + const QList<const DObject *> &collidingObjects); ~StyledObject(); -public: - - const DObject *getObject() const { return _object; } - - ObjectVisuals getObjectVisuals() const { return _object_visuals; } - - QList<const DObject *> getCollidingObjects() const { return _colliding_objects; } + const DObject *object() const { return m_object; } + ObjectVisuals objectVisuals() const { return m_objectVisuals; } + QList<const DObject *> collidingObjects() const { return m_collidingObjects; } private: - - const DObject *_object; - - ObjectVisuals _object_visuals; - - QList<const DObject *> _colliding_objects; + const DObject *m_object; + ObjectVisuals m_objectVisuals; + QList<const DObject *> m_collidingObjects; }; -} +} // namespace qmt #endif // QMT_ STYLEDOBJECT_H diff --git a/src/libs/3rdparty/modeling/qmt/style/styledrelation.cpp b/src/libs/3rdparty/modeling/qmt/style/styledrelation.cpp index 27bb7e271e..f876234014 100644 --- a/src/libs/3rdparty/modeling/qmt/style/styledrelation.cpp +++ b/src/libs/3rdparty/modeling/qmt/style/styledrelation.cpp @@ -32,17 +32,15 @@ namespace qmt { -StyledRelation::StyledRelation(const DRelation *relation, const DObject *end_a, const DObject *end_b) - : _relation(relation), - _end_a(end_a), - _end_b(end_b) +StyledRelation::StyledRelation(const DRelation *relation, const DObject *endA, const DObject *endB) + : m_relation(relation), + m_endA(endA), + m_endB(endB) { - } StyledRelation::~StyledRelation() { - } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/style/styledrelation.h b/src/libs/3rdparty/modeling/qmt/style/styledrelation.h index fb0c513e0e..2e1f1e4241 100644 --- a/src/libs/3rdparty/modeling/qmt/style/styledrelation.h +++ b/src/libs/3rdparty/modeling/qmt/style/styledrelation.h @@ -38,32 +38,22 @@ namespace qmt { class DRelation; class DObject; - class QMT_EXPORT StyledRelation { public: - StyledRelation(const DRelation *relation, const DObject *end_a, const DObject *end_b); - + StyledRelation(const DRelation *relation, const DObject *endA, const DObject *endB); ~StyledRelation(); -public: - - const DRelation *getRelation() const { return _relation; } - - const DObject *getEndA() const { return _end_a; } - - const DObject *getEndB() const { return _end_b; } + const DRelation *relation() const { return m_relation; } + const DObject *endA() const { return m_endA; } + const DObject *endB() const { return m_endB; } private: - - const DRelation *_relation; - - const DObject *_end_a; - - const DObject *_end_b; - + const DRelation *m_relation; + const DObject *m_endA; + const DObject *m_endB; }; -} +} // namespace qmt #endif // QMT_STYLEDRELATION_H diff --git a/src/libs/3rdparty/modeling/qmt/style/styleengine.h b/src/libs/3rdparty/modeling/qmt/style/styleengine.h index 4735cc3eec..51282dfb0a 100644 --- a/src/libs/3rdparty/modeling/qmt/style/styleengine.h +++ b/src/libs/3rdparty/modeling/qmt/style/styleengine.h @@ -47,20 +47,18 @@ class StyledRelation; class DAnnotation; class DBoundary; - class QMT_EXPORT StyleEngine { public: - enum ElementType { - TYPE_OTHER, - TYPE_PACKAGE, - TYPE_COMPONENT, - TYPE_CLASS, - TYPE_ITEM, - TYPE_RELATION, - TYPE_ANNOTATION, - TYPE_BOUNDARY + TypeOther, + TypePackage, + TypeComponent, + TypeClass, + TypeItem, + TypeRelation, + TypeAnnotation, + TypeBoundary }; class Parameters @@ -70,25 +68,23 @@ public: virtual bool suppressGradients() const = 0; }; -public: - virtual ~StyleEngine() { } -public: - - virtual const Style *applyStyle(const Style *base_style, ElementType element_type, const Parameters *) = 0; - - virtual const Style *applyObjectStyle(const Style *base_style, ElementType element_type, const ObjectVisuals &object_visuals, const Parameters *parameters) = 0; - - virtual const Style *applyObjectStyle(const Style *base_style, const StyledObject &, const Parameters *) = 0; - - virtual const Style *applyRelationStyle(const Style *base_style, const StyledRelation &, const Parameters *) = 0; - - virtual const Style *applyAnnotationStyle(const Style *base_style, const DAnnotation *, const Parameters *) = 0; - - virtual const Style *applyBoundaryStyle(const Style *base_style, const DBoundary *, const Parameters *) = 0; + virtual const Style *applyStyle(const Style *baseStyle, ElementType elementType, + const Parameters *) = 0; + virtual const Style *applyObjectStyle(const Style *baseStyle, ElementType elementType, + const ObjectVisuals &objectVisuals, + const Parameters *parameters) = 0; + virtual const Style *applyObjectStyle(const Style *baseStyle, const StyledObject &, + const Parameters *) = 0; + virtual const Style *applyRelationStyle(const Style *baseStyle, const StyledRelation &, + const Parameters *) = 0; + virtual const Style *applyAnnotationStyle(const Style *baseStyle, const DAnnotation *, + const Parameters *) = 0; + virtual const Style *applyBoundaryStyle(const Style *baseStyle, const DBoundary *, + const Parameters *) = 0; }; -} +} // namespace qmt #endif // QMT_STYLEENGINE_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.cpp b/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.cpp index 2f0ca81452..66a1d4b002 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.cpp @@ -49,13 +49,12 @@ #include "qmt/diagram_scene/diagramsceneconstants.h" #include "qmt/tasks/isceneinspector.h" - namespace qmt { AlignOnRasterVisitor::AlignOnRasterVisitor() - : _diagram_controller(0), - _scene_inspector(0), - _diagram(0) + : m_diagramController(0), + m_sceneInspector(0), + m_diagram(0) { } @@ -63,19 +62,19 @@ AlignOnRasterVisitor::~AlignOnRasterVisitor() { } -void AlignOnRasterVisitor::setDiagramController(DiagramController *diagram_controller) +void AlignOnRasterVisitor::setDiagramController(DiagramController *diagramController) { - _diagram_controller = diagram_controller; + m_diagramController = diagramController; } -void AlignOnRasterVisitor::setSceneInspector(ISceneInspector *scene_inspector) +void AlignOnRasterVisitor::setSceneInspector(ISceneInspector *sceneInspector) { - _scene_inspector = scene_inspector; + m_sceneInspector = sceneInspector; } void AlignOnRasterVisitor::setDiagram(MDiagram *diagram) { - _diagram = diagram; + m_diagram = diagram; } void AlignOnRasterVisitor::visitDElement(DElement *element) @@ -87,14 +86,13 @@ void AlignOnRasterVisitor::visitDElement(DElement *element) void AlignOnRasterVisitor::visitDObject(DObject *object) { - IResizable *resizable = _scene_inspector->getResizable(object, _diagram); - if (resizable) { - resizable->alignItemSizeToRaster(IResizable::SIDE_RIGHT_OR_BOTTOM, IResizable::SIDE_RIGHT_OR_BOTTOM, 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); - } - IMoveable *moveable = _scene_inspector->getMoveable(object, _diagram); - if (moveable) { + IResizable *resizable = m_sceneInspector->resizable(object, m_diagram); + if (resizable) + resizable->alignItemSizeToRaster(IResizable::SideRightOrBottom, IResizable::SideRightOrBottom, + 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); + IMoveable *moveable = m_sceneInspector->moveable(object, m_diagram); + if (moveable) moveable->alignItemPositionToRaster(RASTER_WIDTH, RASTER_HEIGHT); - } } void AlignOnRasterVisitor::visitDPackage(DPackage *package) @@ -144,22 +142,20 @@ void AlignOnRasterVisitor::visitDAssociation(DAssociation *association) void AlignOnRasterVisitor::visitDAnnotation(DAnnotation *annotation) { - IMoveable *moveable = _scene_inspector->getMoveable(annotation, _diagram); - if (moveable) { + IMoveable *moveable = m_sceneInspector->moveable(annotation, m_diagram); + if (moveable) moveable->alignItemPositionToRaster(RASTER_WIDTH, RASTER_HEIGHT); - } } void AlignOnRasterVisitor::visitDBoundary(DBoundary *boundary) { - IResizable *resizable = _scene_inspector->getResizable(boundary, _diagram); - if (resizable) { - resizable->alignItemSizeToRaster(IResizable::SIDE_RIGHT_OR_BOTTOM, IResizable::SIDE_RIGHT_OR_BOTTOM, 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); - } - IMoveable *moveable = _scene_inspector->getMoveable(boundary, _diagram); - if (moveable) { + IResizable *resizable = m_sceneInspector->resizable(boundary, m_diagram); + if (resizable) + resizable->alignItemSizeToRaster(IResizable::SideRightOrBottom, IResizable::SideRightOrBottom, + 2 * RASTER_WIDTH, 2 * RASTER_HEIGHT); + IMoveable *moveable = m_sceneInspector->moveable(boundary, m_diagram); + if (moveable) moveable->alignItemPositionToRaster(RASTER_WIDTH, RASTER_HEIGHT); - } } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.h b/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.h index d1b4def5db..d85323ffce 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/alignonrastervisitor.h @@ -34,66 +34,42 @@ #include "qmt/diagram/dvisitor.h" #include "qmt/infrastructure/qmt_global.h" - namespace qmt { class DiagramController; class ISceneInspector; class MDiagram; -class QMT_EXPORT AlignOnRasterVisitor : - public DVisitor +class QMT_EXPORT AlignOnRasterVisitor : public DVisitor { public: AlignOnRasterVisitor(); ~AlignOnRasterVisitor(); -public: - - void setDiagramController(DiagramController *diagram_controller); - - void setSceneInspector(ISceneInspector *scene_inspector); - + void setDiagramController(DiagramController *diagramController); + void setSceneInspector(ISceneInspector *sceneInspector); void setDiagram(MDiagram *diagram); -public: - void visitDElement(DElement *element); - void visitDObject(DObject *object); - void visitDPackage(DPackage *package); - void visitDClass(DClass *klass); - void visitDComponent(DComponent *component); - void visitDDiagram(DDiagram *diagram); - void visitDItem(DItem *item); - void visitDRelation(DRelation *relation); - void visitDInheritance(DInheritance *inheritance); - void visitDDependency(DDependency *dependency); - void visitDAssociation(DAssociation *association); - void visitDAnnotation(DAnnotation *annotation); - void visitDBoundary(DBoundary *boundary); private: - - DiagramController *_diagram_controller; - - ISceneInspector *_scene_inspector; - - MDiagram *_diagram; - + DiagramController *m_diagramController; + ISceneInspector *m_sceneInspector; + MDiagram *m_diagram; }; -} +} // namespace qmt #endif // QMT_ALIGNONRASTERVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.cpp b/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.cpp index 184e18afba..61d3134286 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.cpp +++ b/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.cpp @@ -65,19 +65,18 @@ #include <QQueue> #include <QPair> - namespace qmt { namespace { -static VoidElementTasks dummy_element_tasks; +static VoidElementTasks dummyElementTasks; } DiagramSceneController::DiagramSceneController(QObject *parent) : QObject(parent), - _model_controller(0), - _diagram_controller(0), - _element_tasks(&dummy_element_tasks), - _scene_inspector(0) + m_modelController(0), + m_diagramController(0), + m_elementTasks(&dummyElementTasks), + m_sceneInspector(0) { } @@ -85,289 +84,268 @@ DiagramSceneController::~DiagramSceneController() { } -void DiagramSceneController::setModelController(ModelController *model_controller) +void DiagramSceneController::setModelController(ModelController *modelController) { - if (_model_controller == model_controller) { + if (m_modelController == modelController) return; + if (m_modelController) { + disconnect(m_modelController, 0, this, 0); + m_modelController = 0; } - if (_model_controller) { - disconnect(_model_controller, 0, this, 0); - _model_controller = 0; - } - if (model_controller) { - _model_controller = model_controller; - } + if (modelController) + m_modelController = modelController; } -void DiagramSceneController::setDiagramController(DiagramController *diagram_controller) +void DiagramSceneController::setDiagramController(DiagramController *diagramController) { - if (_diagram_controller == diagram_controller) { + if (m_diagramController == diagramController) return; + if (m_diagramController) { + disconnect(m_diagramController, 0, this, 0); + m_diagramController = 0; } - if (_diagram_controller) { - disconnect(_diagram_controller, 0, this, 0); - _diagram_controller = 0; - } - if (diagram_controller) { - _diagram_controller = diagram_controller; - } + if (diagramController) + m_diagramController = diagramController; } -void DiagramSceneController::setElementTasks(IElementTasks *element_tasks) +void DiagramSceneController::setElementTasks(IElementTasks *elementTasks) { - _element_tasks = element_tasks; + m_elementTasks = elementTasks; } -void DiagramSceneController::setSceneInspector(ISceneInspector *scene_inspector) +void DiagramSceneController::setSceneInspector(ISceneInspector *sceneInspector) { - _scene_inspector = scene_inspector; + m_sceneInspector = sceneInspector; } void DiagramSceneController::deleteFromDiagram(const DSelection &dselection, MDiagram *diagram) { if (!dselection.isEmpty()) { MSelection mselection; - DSelection remaining_dselection; - foreach (const DSelection::Index &index, dselection.getIndices()) { - DElement *delement = _diagram_controller->findElement(index.getElementKey(), diagram); + DSelection remainingDselection; + foreach (const DSelection::Index &index, dselection.indices()) { + DElement *delement = m_diagramController->findElement(index.elementKey(), diagram); QMT_CHECK(delement); - if (delement->getModelUid().isValid()) { - MElement *melement = _model_controller->findElement(delement->getModelUid()); + if (delement->modelUid().isValid()) { + MElement *melement = m_modelController->findElement(delement->modelUid()); QMT_CHECK(melement); - if (melement->getOwner()) { - mselection.append(melement->getUid(), melement->getOwner()->getUid()); - } + if (melement->owner()) + mselection.append(melement->uid(), melement->owner()->uid()); } else { - remaining_dselection.append(index); + remainingDselection.append(index); } } - if (!remaining_dselection.isEmpty()) { - _diagram_controller->deleteElements(remaining_dselection, diagram); - } - if (!mselection.isEmpty()) { - _model_controller->deleteElements(mselection); - } + if (!remainingDselection.isEmpty()) + m_diagramController->deleteElements(remainingDselection, diagram); + if (!mselection.isEmpty()) + m_modelController->deleteElements(mselection); } } -void DiagramSceneController::createDependency(DObject *end_a_object, DObject *end_b_object, const QList<QPointF> &intermediate_points, MDiagram *diagram) +void DiagramSceneController::createDependency(DObject *endAObject, DObject *endBObject, + const QList<QPointF> &intermediatePoints, MDiagram *diagram) { - _diagram_controller->getUndoController()->beginMergeSequence(tr("Create Dependency")); + m_diagramController->undoController()->beginMergeSequence(tr("Create Dependency")); - MObject *end_a_model_object = _model_controller->findObject<MObject>(end_a_object->getModelUid()); - QMT_CHECK(end_a_model_object); - MObject *end_b_model_object = _model_controller->findObject<MObject>(end_b_object->getModelUid()); - QMT_CHECK(end_b_model_object); + MObject *endAModelObject = m_modelController->findObject<MObject>(endAObject->modelUid()); + QMT_CHECK(endAModelObject); + MObject *endBModelObject = m_modelController->findObject<MObject>(endBObject->modelUid()); + QMT_CHECK(endBModelObject); - if (end_a_model_object == end_b_model_object) { + if (endAModelObject == endBModelObject) return; - } - MDependency *model_dependency = new MDependency(); - model_dependency->setEndA(end_a_model_object->getUid()); - model_dependency->setEndB(end_b_model_object->getUid()); - model_dependency->setDirection(MDependency::A_TO_B); - _model_controller->addRelation(end_a_model_object, model_dependency); + MDependency *modelDependency = new MDependency(); + modelDependency->setEndAUid(endAModelObject->uid()); + modelDependency->setEndBUid(endBModelObject->uid()); + modelDependency->setDirection(MDependency::AToB); + m_modelController->addRelation(endAModelObject, modelDependency); - DRelation *relation = addRelation(model_dependency, intermediate_points, diagram); + DRelation *relation = addRelation(modelDependency, intermediatePoints, diagram); - _diagram_controller->getUndoController()->endMergeSequence(); + m_diagramController->undoController()->endMergeSequence(); - if (relation) { + if (relation) emit newElementCreated(relation, diagram); - } } -void DiagramSceneController::createInheritance(DClass *derived_class, DClass *base_class, const QList<QPointF> &intermediate_points, MDiagram *diagram) +void DiagramSceneController::createInheritance(DClass *derivedClass, DClass *baseClass, + const QList<QPointF> &intermediatePoints, MDiagram *diagram) { - _diagram_controller->getUndoController()->beginMergeSequence(tr("Create Inheritance")); + m_diagramController->undoController()->beginMergeSequence(tr("Create Inheritance")); - MClass *derived_model_class = _model_controller->findObject<MClass>(derived_class->getModelUid()); - QMT_CHECK(derived_model_class); - MClass *base_model_class = _model_controller->findObject<MClass>(base_class->getModelUid()); - QMT_CHECK(base_model_class); + MClass *derivedModelClass = m_modelController->findObject<MClass>(derivedClass->modelUid()); + QMT_CHECK(derivedModelClass); + MClass *baseModelClass = m_modelController->findObject<MClass>(baseClass->modelUid()); + QMT_CHECK(baseModelClass); - if (derived_model_class == base_model_class) { + if (derivedModelClass == baseModelClass) return; - } - MInheritance *model_inheritance = new MInheritance(); - model_inheritance->setDerived(derived_model_class->getUid()); - model_inheritance->setBase(base_model_class->getUid()); - _model_controller->addRelation(derived_model_class, model_inheritance); + MInheritance *modelInheritance = new MInheritance(); + modelInheritance->setDerived(derivedModelClass->uid()); + modelInheritance->setBase(baseModelClass->uid()); + m_modelController->addRelation(derivedModelClass, modelInheritance); - DRelation *relation = addRelation(model_inheritance, intermediate_points, diagram); + DRelation *relation = addRelation(modelInheritance, intermediatePoints, diagram); - _diagram_controller->getUndoController()->endMergeSequence(); + m_diagramController->undoController()->endMergeSequence(); - if (relation) { + if (relation) emit newElementCreated(relation, diagram); - } } -void DiagramSceneController::createAssociation(DClass *end_a_class, DClass *end_b_class, const QList<QPointF> &intermediate_points, MDiagram *diagram) +void DiagramSceneController::createAssociation(DClass *endAClass, DClass *endBClass, + const QList<QPointF> &intermediatePoints, MDiagram *diagram) { - _diagram_controller->getUndoController()->beginMergeSequence(tr("Create Association")); + m_diagramController->undoController()->beginMergeSequence(tr("Create Association")); - MClass *end_a_model_object = _model_controller->findObject<MClass>(end_a_class->getModelUid()); - QMT_CHECK(end_a_model_object); - MClass *end_b_model_object = _model_controller->findObject<MClass>(end_b_class->getModelUid()); - QMT_CHECK(end_b_model_object); + MClass *endAModelObject = m_modelController->findObject<MClass>(endAClass->modelUid()); + QMT_CHECK(endAModelObject); + MClass *endBModelObject = m_modelController->findObject<MClass>(endBClass->modelUid()); + QMT_CHECK(endBModelObject); // TODO allow self assignment with just one intermediate point and a nice round arrow - if (end_a_model_object == end_b_model_object && intermediate_points.count() < 2) { + if (endAModelObject == endBModelObject && intermediatePoints.count() < 2) return; - } - MAssociation *model_association = new MAssociation(); - model_association->setEndA(end_a_model_object->getUid()); - MAssociationEnd end_a = model_association->getA(); - end_a.setNavigable(true); - model_association->setA(end_a); - model_association->setEndB(end_b_model_object->getUid()); - _model_controller->addRelation(end_a_model_object, model_association); + MAssociation *modelAssociation = new MAssociation(); + modelAssociation->setEndAUid(endAModelObject->uid()); + MAssociationEnd endA = modelAssociation->endA(); + endA.setNavigable(true); + modelAssociation->setEndA(endA); + modelAssociation->setEndBUid(endBModelObject->uid()); + m_modelController->addRelation(endAModelObject, modelAssociation); - DRelation *relation = addRelation(model_association, intermediate_points, diagram); + DRelation *relation = addRelation(modelAssociation, intermediatePoints, diagram); - _diagram_controller->getUndoController()->endMergeSequence(); + m_diagramController->undoController()->endMergeSequence(); - if (relation) { + if (relation) emit newElementCreated(relation, diagram); - } } -bool DiagramSceneController::isAddingAllowed(const Uid &model_element_key, MDiagram *diagram) +bool DiagramSceneController::isAddingAllowed(const Uid &modelElementKey, MDiagram *diagram) { - MElement *model_element = _model_controller->findElement(model_element_key); - QMT_CHECK(model_element); - if (_diagram_controller->hasDelegate(model_element, diagram)) { + MElement *modelElement = m_modelController->findElement(modelElementKey); + QMT_CHECK(modelElement); + if (m_diagramController->hasDelegate(modelElement, diagram)) return false; - } - if (MRelation *model_relation = dynamic_cast<MRelation *>(model_element)) { - MObject *end_a_model_object = _model_controller->findObject(model_relation->getEndA()); - QMT_CHECK(end_a_model_object); - DObject *end_a_diagram_object = _diagram_controller->findDelegate<DObject>(end_a_model_object, diagram); - if (!end_a_diagram_object) { + if (MRelation *modelRelation = dynamic_cast<MRelation *>(modelElement)) { + MObject *endAModelObject = m_modelController->findObject(modelRelation->endAUid()); + QMT_CHECK(endAModelObject); + DObject *endADiagramObject = m_diagramController->findDelegate<DObject>(endAModelObject, diagram); + if (!endADiagramObject) return false; - } - MObject *end_b_model_object = _model_controller->findObject(model_relation->getEndB()); - QMT_CHECK(end_b_model_object); - DObject *end_b_diagram_object = _diagram_controller->findDelegate<DObject>(end_b_model_object, diagram); - if (!end_b_diagram_object) { + MObject *endBModelObject = m_modelController->findObject(modelRelation->endBUid()); + QMT_CHECK(endBModelObject); + DObject *endBDiagramObject = m_diagramController->findDelegate<DObject>(endBModelObject, diagram); + if (!endBDiagramObject) return false; - } } return true; } -void DiagramSceneController::addExistingModelElement(const Uid &model_element_key, const QPointF &pos, MDiagram *diagram) +void DiagramSceneController::addExistingModelElement(const Uid &modelElementKey, const QPointF &pos, MDiagram *diagram) { - DElement *element = addModelElement(model_element_key, pos, diagram); - if (element) { + DElement *element = addModelElement(modelElementKey, pos, diagram); + if (element) emit elementAdded(element, diagram); - } } -void DiagramSceneController::dropNewElement(const QString &new_element_id, const QString &name, const QString &stereotype, DElement *top_most_element_at_pos, const QPointF &pos, MDiagram *diagram) +void DiagramSceneController::dropNewElement(const QString &newElementId, const QString &name, const QString &stereotype, + DElement *topMostElementAtPos, const QPointF &pos, MDiagram *diagram) { - if (new_element_id == QLatin1String(ELEMENT_TYPE_ANNOTATION)) { + if (newElementId == QLatin1String(ELEMENT_TYPE_ANNOTATION)) { DAnnotation *annotation = new DAnnotation(); annotation->setText(QStringLiteral("")); annotation->setPos(pos - QPointF(10.0, 10.0)); - _diagram_controller->addElement(annotation, diagram); + m_diagramController->addElement(annotation, diagram); alignOnRaster(annotation, diagram); emit newElementCreated(annotation, diagram); - } else if (new_element_id == QLatin1String(ELEMENT_TYPE_BOUNDARY)) { + } else if (newElementId == QLatin1String(ELEMENT_TYPE_BOUNDARY)) { DBoundary *boundary = new DBoundary(); boundary->setPos(pos); - _diagram_controller->addElement(boundary, diagram); + m_diagramController->addElement(boundary, diagram); alignOnRaster(boundary, diagram); emit newElementCreated(boundary, diagram); } else { - MPackage *parent_package = findSuitableParentPackage(top_most_element_at_pos, diagram); - MObject *new_object = 0; - QString new_name; - if (new_element_id == QLatin1String(ELEMENT_TYPE_PACKAGE)) { + MPackage *parentPackage = findSuitableParentPackage(topMostElementAtPos, diagram); + MObject *newObject = 0; + QString newName; + if (newElementId == QLatin1String(ELEMENT_TYPE_PACKAGE)) { MPackage *package = new MPackage(); - new_name = tr("New Package"); - if (!stereotype.isEmpty()) { + newName = tr("New Package"); + if (!stereotype.isEmpty()) package->setStereotypes(QStringList() << stereotype); - } - new_object = package; - } else if (new_element_id == QLatin1String(ELEMENT_TYPE_COMPONENT)) { + newObject = package; + } else if (newElementId == QLatin1String(ELEMENT_TYPE_COMPONENT)) { MComponent *component = new MComponent(); - new_name = tr("New Component"); - if (!stereotype.isEmpty()) { + newName = tr("New Component"); + if (!stereotype.isEmpty()) component->setStereotypes(QStringList() << stereotype); - } - new_object = component; - } else if (new_element_id == QLatin1String(ELEMENT_TYPE_CLASS)) { + newObject = component; + } else if (newElementId == QLatin1String(ELEMENT_TYPE_CLASS)) { MClass *klass = new MClass(); - new_name = tr("New Class"); - if (!stereotype.isEmpty()) { + newName = tr("New Class"); + if (!stereotype.isEmpty()) klass->setStereotypes(QStringList() << stereotype); - } - new_object = klass; - } else if (new_element_id == QLatin1String(ELEMENT_TYPE_ITEM)) { + newObject = klass; + } else if (newElementId == QLatin1String(ELEMENT_TYPE_ITEM)) { MItem *item = new MItem(); - new_name = tr("New Item"); + newName = tr("New Item"); if (!stereotype.isEmpty()) { item->setVariety(stereotype); item->setVarietyEditable(false); } - new_object = item; + newObject = item; } - if (new_object) { - if (!name.isEmpty()) { - new_name = tr("New %1").arg(name); - } - new_object->setName(new_name); - dropNewModelElement(new_object, parent_package, pos, diagram); + if (newObject) { + if (!name.isEmpty()) + newName = tr("New %1").arg(name); + newObject->setName(newName); + dropNewModelElement(newObject, parentPackage, pos, diagram); } } } -void DiagramSceneController::dropNewModelElement(MObject *model_object, MPackage *parent_package, const QPointF &pos, MDiagram *diagram) +void DiagramSceneController::dropNewModelElement(MObject *modelObject, MPackage *parentPackage, const QPointF &pos, + MDiagram *diagram) { - _model_controller->getUndoController()->beginMergeSequence(tr("Drop Element")); - _model_controller->addObject(parent_package, model_object); - DElement *element = addObject(model_object, pos, diagram); - _model_controller->getUndoController()->endMergeSequence(); - if (element) { + m_modelController->undoController()->beginMergeSequence(tr("Drop Element")); + m_modelController->addObject(parentPackage, modelObject); + DElement *element = addObject(modelObject, pos, diagram); + m_modelController->undoController()->endMergeSequence(); + if (element) emit newElementCreated(element, diagram); - } } -MPackage *DiagramSceneController::findSuitableParentPackage(DElement *topmost_diagram_element, MDiagram *diagram) +MPackage *DiagramSceneController::findSuitableParentPackage(DElement *topmostDiagramElement, MDiagram *diagram) { - MPackage *parent_package = 0; - if (DPackage *diagram_package = dynamic_cast<DPackage *>(topmost_diagram_element)) { - parent_package = _model_controller->findObject<MPackage>(diagram_package->getModelUid()); - } else if (DObject *diagram_object = dynamic_cast<DObject *>(topmost_diagram_element)) { - MObject *model_object = _model_controller->findObject(diagram_object->getModelUid()); - if (model_object) { - parent_package = dynamic_cast<MPackage *>(model_object->getOwner()); - } - } - if (parent_package == 0 && diagram != 0) { - parent_package = dynamic_cast<MPackage *>(diagram->getOwner()); + MPackage *parentPackage = 0; + if (DPackage *diagramPackage = dynamic_cast<DPackage *>(topmostDiagramElement)) { + parentPackage = m_modelController->findObject<MPackage>(diagramPackage->modelUid()); + } else if (DObject *diagramObject = dynamic_cast<DObject *>(topmostDiagramElement)) { + MObject *modelObject = m_modelController->findObject(diagramObject->modelUid()); + if (modelObject) + parentPackage = dynamic_cast<MPackage *>(modelObject->owner()); } - if (parent_package == 0) { - parent_package = _model_controller->getRootPackage(); - } - return parent_package; + if (parentPackage == 0 && diagram != 0) + parentPackage = dynamic_cast<MPackage *>(diagram->owner()); + if (parentPackage == 0) + parentPackage = m_modelController->rootPackage(); + return parentPackage; } -MDiagram *DiagramSceneController::findDiagramBySearchId(MPackage *package, const QString &diagram_name) +MDiagram *DiagramSceneController::findDiagramBySearchId(MPackage *package, const QString &diagramName) { - QString diagram_search_id = NameController::calcElementNameSearchId(diagram_name); - foreach (const Handle<MObject> &handle, package->getChildren()) { + QString diagramSearchId = NameController::calcElementNameSearchId(diagramName); + foreach (const Handle<MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (MDiagram *diagram = dynamic_cast<MDiagram *>(handle.getTarget())) { - if (NameController::calcElementNameSearchId(diagram->getName()) == diagram_search_id) { + if (MDiagram *diagram = dynamic_cast<MDiagram *>(handle.target())) { + if (NameController::calcElementNameSearchId(diagram->name()) == diagramSearchId) return diagram; - } } } } @@ -376,69 +354,69 @@ MDiagram *DiagramSceneController::findDiagramBySearchId(MPackage *package, const namespace { -static QPointF alignObjectLeft(DObject *object, DObject *other_object) +static QPointF alignObjectLeft(DObject *object, DObject *otherObject) { - qreal left = object->getPos().x() + object->getRect().left(); - QPointF pos = other_object->getPos(); - qreal other_left = pos.x() + other_object->getRect().left(); - qreal delta = other_left - left; + qreal left = object->pos().x() + object->rect().left(); + QPointF pos = otherObject->pos(); + qreal otherLeft = pos.x() + otherObject->rect().left(); + qreal delta = otherLeft - left; pos.setX(pos.x() - delta); return pos; } -static QPointF alignObjectRight(DObject *object, DObject *other_object) +static QPointF alignObjectRight(DObject *object, DObject *otherObject) { - qreal right = object->getPos().x() + object->getRect().right(); - QPointF pos = other_object->getPos(); - qreal other_right = pos.x() + other_object->getRect().right(); - qreal delta = other_right - right; + qreal right = object->pos().x() + object->rect().right(); + QPointF pos = otherObject->pos(); + qreal otherRight = pos.x() + otherObject->rect().right(); + qreal delta = otherRight - right; pos.setX(pos.x() - delta); return pos; } -static QPointF alignObjectHCenter(DObject *object, DObject *other_object) +static QPointF alignObjectHCenter(DObject *object, DObject *otherObject) { - qreal center = object->getPos().x(); - QPointF pos = other_object->getPos(); - qreal other_center = pos.x(); - qreal delta = other_center - center; + qreal center = object->pos().x(); + QPointF pos = otherObject->pos(); + qreal otherCenter = pos.x(); + qreal delta = otherCenter - center; pos.setX(pos.x() - delta); return pos; } -static QPointF alignObjectTop(DObject *object, DObject *other_object) +static QPointF alignObjectTop(DObject *object, DObject *otherObject) { - qreal top = object->getPos().y() + object->getRect().top(); - QPointF pos = other_object->getPos(); - qreal other_top = pos.y() + other_object->getRect().top(); - qreal delta = other_top - top; + qreal top = object->pos().y() + object->rect().top(); + QPointF pos = otherObject->pos(); + qreal otherTop = pos.y() + otherObject->rect().top(); + qreal delta = otherTop - top; pos.setY(pos.y() - delta); return pos; } -static QPointF alignObjectBottom(DObject *object, DObject *other_object) +static QPointF alignObjectBottom(DObject *object, DObject *otherObject) { - qreal bottom = object->getPos().y() + object->getRect().bottom(); - QPointF pos = other_object->getPos(); - qreal other_bottom = pos.y() + other_object->getRect().bottom(); - qreal delta = other_bottom - bottom; + qreal bottom = object->pos().y() + object->rect().bottom(); + QPointF pos = otherObject->pos(); + qreal otherBottom = pos.y() + otherObject->rect().bottom(); + qreal delta = otherBottom - bottom; pos.setY(pos.y() - delta); return pos; } -static QPointF alignObjectVCenter(DObject *object, DObject *other_object) +static QPointF alignObjectVCenter(DObject *object, DObject *otherObject) { - qreal center = object->getPos().y(); - QPointF pos = other_object->getPos(); - qreal other_center = pos.y(); - qreal delta = other_center - center; + qreal center = object->pos().y(); + QPointF pos = otherObject->pos(); + qreal otherCenter = pos.y(); + qreal delta = otherCenter - center; pos.setY(pos.y() - delta); return pos; } static QRectF alignObjectWidth(DObject *object, const QSizeF &size) { - QRectF rect = object->getRect(); + QRectF rect = object->rect(); rect.setX(-size.width() / 2.0); rect.setWidth(size.width()); return rect; @@ -446,7 +424,7 @@ static QRectF alignObjectWidth(DObject *object, const QSizeF &size) static QRectF alignObjectHeight(DObject *object, const QSizeF &size) { - QRectF rect = object->getRect(); + QRectF rect = object->rect(); rect.setY(-size.height() / 2.0); rect.setHeight(size.height()); return rect; @@ -496,60 +474,63 @@ void DiagramSceneController::alignVCenter(DObject *object, const DSelection &sel alignPosition(object, selection, alignObjectVCenter, diagram); } -void DiagramSceneController::alignWidth(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram) +void DiagramSceneController::alignWidth(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram) { - alignSize(object, selection, minimum_size, alignObjectWidth, diagram); + alignSize(object, selection, minimumSize, alignObjectWidth, diagram); } -void DiagramSceneController::alignHeight(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram) +void DiagramSceneController::alignHeight(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram) { - alignSize(object, selection, minimum_size, alignObjectHeight, diagram); + alignSize(object, selection, minimumSize, alignObjectHeight, diagram); } -void DiagramSceneController::alignSize(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram) +void DiagramSceneController::alignSize(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram) { - alignSize(object, selection, minimum_size, alignObjectSize, diagram); + alignSize(object, selection, minimumSize, alignObjectSize, diagram); } -void DiagramSceneController::alignPosition(DObject *object, const DSelection &selection, QPointF (*aligner)(DObject *, DObject *), MDiagram *diagram) +void DiagramSceneController::alignPosition(DObject *object, const DSelection &selection, + QPointF (*aligner)(DObject *, DObject *), MDiagram *diagram) { - foreach (const DSelection::Index &index, selection.getIndices()) { - DElement *element = _diagram_controller->findElement(index.getElementKey(), diagram); - if (DObject *selected_object = dynamic_cast<DObject *>(element)) { - if (selected_object != object) { - QPointF new_pos = aligner(object, selected_object); - if (new_pos != selected_object->getPos()) { - _diagram_controller->startUpdateElement(selected_object, diagram, DiagramController::UPDATE_GEOMETRY); - selected_object->setPos(new_pos); - _diagram_controller->finishUpdateElement(selected_object, diagram, false); + foreach (const DSelection::Index &index, selection.indices()) { + DElement *element = m_diagramController->findElement(index.elementKey(), diagram); + if (DObject *selectedObject = dynamic_cast<DObject *>(element)) { + if (selectedObject != object) { + QPointF newPos = aligner(object, selectedObject); + if (newPos != selectedObject->pos()) { + m_diagramController->startUpdateElement(selectedObject, diagram, DiagramController::UpdateGeometry); + selectedObject->setPos(newPos); + m_diagramController->finishUpdateElement(selectedObject, diagram, false); } } } } } -void DiagramSceneController::alignSize(DObject *object, const DSelection &selection, const QSizeF &minimum_size, QRectF (*aligner)(DObject *, const QSizeF &), MDiagram *diagram) +void DiagramSceneController::alignSize(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + QRectF (*aligner)(DObject *, const QSizeF &), MDiagram *diagram) { QSizeF size; - if (object->getRect().width() < minimum_size.width()) { - size.setWidth(minimum_size.width()); - } else { - size.setWidth(object->getRect().width()); - } - if (object->getRect().height() < minimum_size.height()) { - size.setHeight(minimum_size.height()); - } else { - size.setHeight(object->getRect().height()); - } - foreach (const DSelection::Index &index, selection.getIndices()) { - DElement *element = _diagram_controller->findElement(index.getElementKey(), diagram); - if (DObject *selected_object = dynamic_cast<DObject *>(element)) { - QRectF new_rect = aligner(selected_object, size); - if (new_rect != selected_object->getRect()) { - _diagram_controller->startUpdateElement(selected_object, diagram, DiagramController::UPDATE_GEOMETRY); - selected_object->setAutoSize(false); - selected_object->setRect(new_rect); - _diagram_controller->finishUpdateElement(selected_object, diagram, false); + if (object->rect().width() < minimumSize.width()) + size.setWidth(minimumSize.width()); + else + size.setWidth(object->rect().width()); + if (object->rect().height() < minimumSize.height()) + size.setHeight(minimumSize.height()); + else + size.setHeight(object->rect().height()); + foreach (const DSelection::Index &index, selection.indices()) { + DElement *element = m_diagramController->findElement(index.elementKey(), diagram); + if (DObject *selectedObject = dynamic_cast<DObject *>(element)) { + QRectF newRect = aligner(selectedObject, size); + if (newRect != selectedObject->rect()) { + m_diagramController->startUpdateElement(selectedObject, diagram, DiagramController::UpdateGeometry); + selectedObject->setAutoSized(false); + selectedObject->setRect(newRect); + m_diagramController->finishUpdateElement(selectedObject, diagram, false); } } } @@ -558,66 +539,65 @@ void DiagramSceneController::alignSize(DObject *object, const DSelection &select void DiagramSceneController::alignOnRaster(DElement *element, MDiagram *diagram) { AlignOnRasterVisitor visitor; - visitor.setDiagramController(_diagram_controller); - visitor.setSceneInspector(_scene_inspector); + visitor.setDiagramController(m_diagramController); + visitor.setSceneInspector(m_sceneInspector); visitor.setDiagram(diagram); element->accept(&visitor); } -DElement *DiagramSceneController::addModelElement(const Uid &model_element_key, const QPointF &pos, MDiagram *diagram) +DElement *DiagramSceneController::addModelElement(const Uid &modelElementKey, const QPointF &pos, MDiagram *diagram) { DElement *element = 0; - if (MObject *model_object = _model_controller->findObject(model_element_key)) { - element = addObject(model_object, pos, diagram); - } else if (MRelation *model_relation = _model_controller->findRelation(model_element_key)) { - element = addRelation(model_relation, QList<QPointF>(), diagram); + if (MObject *modelObject = m_modelController->findObject(modelElementKey)) { + element = addObject(modelObject, pos, diagram); + } else if (MRelation *modelRelation = m_modelController->findRelation(modelElementKey)) { + element = addRelation(modelRelation, QList<QPointF>(), diagram); } else { QMT_CHECK(false); } return element; } -DObject *DiagramSceneController::addObject(MObject *model_object, const QPointF &pos, MDiagram *diagram) +DObject *DiagramSceneController::addObject(MObject *modelObject, const QPointF &pos, MDiagram *diagram) { - QMT_CHECK(model_object); + QMT_CHECK(modelObject); - if (_diagram_controller->hasDelegate(model_object, diagram)) { + if (m_diagramController->hasDelegate(modelObject, diagram)) return 0; - } - _diagram_controller->getUndoController()->beginMergeSequence(tr("Add Element")); + m_diagramController->undoController()->beginMergeSequence(tr("Add Element")); DFactory factory; - model_object->accept(&factory); - DObject *diagram_object = dynamic_cast<DObject *>(factory.getProduct()); - QMT_CHECK(diagram_object); - diagram_object->setPos(pos); - _diagram_controller->addElement(diagram_object, diagram); - alignOnRaster(diagram_object, diagram); + modelObject->accept(&factory); + DObject *diagramObject = dynamic_cast<DObject *>(factory.product()); + QMT_CHECK(diagramObject); + diagramObject->setPos(pos); + m_diagramController->addElement(diagramObject, diagram); + alignOnRaster(diagramObject, diagram); // add all relations between any other element on diagram and new element - foreach (DElement *delement, diagram->getDiagramElements()) { - if (delement != diagram_object) { + foreach (DElement *delement, diagram->diagramElements()) { + if (delement != diagramObject) { DObject *dobject = dynamic_cast<DObject *>(delement); if (dobject) { - MObject *mobject = _model_controller->findObject(dobject->getModelUid()); + MObject *mobject = m_modelController->findObject(dobject->modelUid()); if (mobject) { - foreach (const Handle<MRelation> &handle, mobject->getRelations()) { + foreach (const Handle<MRelation> &handle, mobject->relations()) { if (handle.hasTarget() - && ((handle.getTarget()->getEndA() == model_object->getUid() - && handle.getTarget()->getEndB() == mobject->getUid()) - || (handle.getTarget()->getEndA() == mobject->getUid() - && handle.getTarget()->getEndB() == model_object->getUid()))) { - addRelation(handle.getTarget(), QList<QPointF>(), diagram); + && ((handle.target()->endAUid() == modelObject->uid() + && handle.target()->endBUid() == mobject->uid()) + || (handle.target()->endAUid() == mobject->uid() + && handle.target()->endBUid() == modelObject->uid()))) { + addRelation(handle.target(), QList<QPointF>(), diagram); } } - foreach (const Handle<MRelation> &handle, model_object->getRelations()) { + foreach (const Handle<MRelation> &handle, modelObject->relations()) { if (handle.hasTarget() - && ((handle.getTarget()->getEndA() == model_object->getUid() - && handle.getTarget()->getEndB() == mobject->getUid()) - || (handle.getTarget()->getEndA() == mobject->getUid() - && handle.getTarget()->getEndB() == model_object->getUid()))) { - addRelation(handle.getTarget(), QList<QPointF>(), diagram); + && ((handle.target()->endAUid() == modelObject->uid() + && handle.target()->endBUid() == mobject->uid()) + || (handle.target()->endAUid() == mobject->uid() + && handle.target()->endBUid() == modelObject->uid()))) { + addRelation(handle.target(), QList<QPointF>(), diagram); } } } @@ -626,74 +606,71 @@ DObject *DiagramSceneController::addObject(MObject *model_object, const QPointF } // add all self relations - foreach (const Handle<MRelation> &handle, model_object->getRelations()) { + foreach (const Handle<MRelation> &handle, modelObject->relations()) { if (handle.hasTarget () - && handle.getTarget()->getEndA() == model_object->getUid() - && handle.getTarget()->getEndB() == model_object->getUid()) { - addRelation(handle.getTarget(), QList<QPointF>(), diagram); + && handle.target()->endAUid() == modelObject->uid() + && handle.target()->endBUid() == modelObject->uid()) { + addRelation(handle.target(), QList<QPointF>(), diagram); } } - _diagram_controller->getUndoController()->endMergeSequence(); + m_diagramController->undoController()->endMergeSequence(); - return diagram_object; + return diagramObject; } -DRelation *DiagramSceneController::addRelation(MRelation *model_relation, const QList<QPointF> &intermediate_points, MDiagram *diagram) +DRelation *DiagramSceneController::addRelation(MRelation *modelRelation, const QList<QPointF> &intermediatePoints, + MDiagram *diagram) { - QMT_CHECK(model_relation); + QMT_CHECK(modelRelation); - if (_diagram_controller->hasDelegate(model_relation, diagram)) { + if (m_diagramController->hasDelegate(modelRelation, diagram)) return 0; - } DFactory factory; - model_relation->accept(&factory); - DRelation *diagram_relation = dynamic_cast<DRelation *>(factory.getProduct()); - QMT_CHECK(diagram_relation); - - MObject *end_a_model_object = _model_controller->findObject(model_relation->getEndA()); - QMT_CHECK(end_a_model_object); - DObject *end_a_diagram_object = _diagram_controller->findDelegate<DObject>(end_a_model_object, diagram); - QMT_CHECK(end_a_diagram_object); - diagram_relation->setEndA(end_a_diagram_object->getUid()); - - MObject *end_b_model_object = _model_controller->findObject(model_relation->getEndB()); - QMT_CHECK(end_b_model_object); - DObject *end_b_diagram_object = _diagram_controller->findDelegate<DObject>(end_b_model_object, diagram); - QMT_CHECK(end_b_diagram_object); - diagram_relation->setEndB(end_b_diagram_object->getUid()); - - QList<DRelation::IntermediatePoint> relation_points; - if (end_a_diagram_object->getUid() == end_b_diagram_object->getUid() && intermediate_points.isEmpty()) { + modelRelation->accept(&factory); + DRelation *diagramRelation = dynamic_cast<DRelation *>(factory.product()); + QMT_CHECK(diagramRelation); + + MObject *endAModelObject = m_modelController->findObject(modelRelation->endAUid()); + QMT_CHECK(endAModelObject); + DObject *endADiagramObject = m_diagramController->findDelegate<DObject>(endAModelObject, diagram); + QMT_CHECK(endADiagramObject); + diagramRelation->setEndAUid(endADiagramObject->uid()); + + MObject *endBModelObject = m_modelController->findObject(modelRelation->endBUid()); + QMT_CHECK(endBModelObject); + DObject *endBDiagramObject = m_diagramController->findDelegate<DObject>(endBModelObject, diagram); + QMT_CHECK(endBDiagramObject); + diagramRelation->setEndBUid(endBDiagramObject->uid()); + + QList<DRelation::IntermediatePoint> relationPoints; + if (endADiagramObject->uid() == endBDiagramObject->uid() && intermediatePoints.isEmpty()) { // create some intermediate points for self-relation - QRectF rect = end_a_diagram_object->getRect().translated(end_a_diagram_object->getPos()); + QRectF rect = endADiagramObject->rect().translated(endADiagramObject->pos()); static const qreal EDGE_RADIUS = 30.0; qreal w = rect.width() * 0.25; - if (w > EDGE_RADIUS) { + if (w > EDGE_RADIUS) w = EDGE_RADIUS; - } qreal h = rect.height() * 0.25; - if (h > EDGE_RADIUS) { + if (h > EDGE_RADIUS) h = EDGE_RADIUS; - } QPointF i1(rect.x() - EDGE_RADIUS, rect.bottom() - h); QPointF i2(rect.x() - EDGE_RADIUS, rect.bottom() + EDGE_RADIUS); QPointF i3(rect.x() + w, rect.bottom() + EDGE_RADIUS); - relation_points.append(DRelation::IntermediatePoint(i1)); - relation_points.append(DRelation::IntermediatePoint(i2)); - relation_points.append(DRelation::IntermediatePoint(i3)); + relationPoints.append(DRelation::IntermediatePoint(i1)); + relationPoints.append(DRelation::IntermediatePoint(i2)); + relationPoints.append(DRelation::IntermediatePoint(i3)); } else { - foreach (const QPointF &intermediate_point, intermediate_points) { - relation_points.append(DRelation::IntermediatePoint(intermediate_point)); - } + foreach (const QPointF &intermediatePoint, intermediatePoints) + relationPoints.append(DRelation::IntermediatePoint(intermediatePoint)); } - diagram_relation->setIntermediatePoints(relation_points); + diagramRelation->setIntermediatePoints(relationPoints); - _diagram_controller->addElement(diagram_relation, diagram); - alignOnRaster(diagram_relation, diagram); + m_diagramController->addElement(diagramRelation, diagram); + alignOnRaster(diagramRelation, diagram); - return diagram_relation; + return diagramRelation; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.h b/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.h index 7126cbfd2e..3bddb6e7b3 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/diagramscenecontroller.h @@ -38,7 +38,6 @@ QT_BEGIN_NAMESPACE class QPointF; QT_END_NAMESPACE - namespace qmt { class Uid; @@ -56,118 +55,82 @@ class DSelection; class IElementTasks; class ISceneInspector; -class QMT_EXPORT DiagramSceneController : - public QObject +class QMT_EXPORT DiagramSceneController : public QObject { Q_OBJECT - public: DiagramSceneController(QObject *parent = 0); - ~ DiagramSceneController(); signals: - void newElementCreated(DElement *element, MDiagram *diagram); - void elementAdded(DElement *element, MDiagram *diagram); public: - - ModelController *getModelController() const { return _model_controller; } - - void setModelController(ModelController *model_controller); - - DiagramController *getDiagramController() const { return _diagram_controller; } - - void setDiagramController(DiagramController *diagram_controller); - - IElementTasks *getElementTasks() const { return _element_tasks; } - - void setElementTasks(IElementTasks *element_tasks); - - ISceneInspector *getSceneInspector() const { return _scene_inspector; } - - void setSceneInspector(ISceneInspector *scene_inspector); - -public: + ModelController *modelController() const { return m_modelController; } + void setModelController(ModelController *modelController); + DiagramController *diagramController() const { return m_diagramController; } + void setDiagramController(DiagramController *diagramController); + IElementTasks *elementTasks() const { return m_elementTasks; } + void setElementTasks(IElementTasks *elementTasks); + ISceneInspector *sceneInspector() const { return m_sceneInspector; } + void setSceneInspector(ISceneInspector *sceneInspector); void deleteFromDiagram(const DSelection &dselection, MDiagram *diagram); -public: - - void createDependency(DObject *end_a_object, DObject *end_b_object, const QList<QPointF> &intermediate_points, MDiagram *diagram); - - void createInheritance(DClass *derived_class, DClass *base_class, const QList<QPointF> &intermediate_points, MDiagram *diagram); - - void createAssociation(DClass *end_a_class, DClass *end_b_class, const QList<QPointF> &intermediate_points, MDiagram *diagram); - - bool isAddingAllowed(const Uid &model_element_key, MDiagram *diagram); - - void addExistingModelElement(const Uid &model_element_key, const QPointF &pos, MDiagram *diagram); - - void dropNewElement(const QString &new_element_id, const QString &name, const QString &stereotype, DElement *top_most_element_at_pos, const QPointF &pos, MDiagram *diagram); - - void dropNewModelElement(MObject *model_object, MPackage *parent_package, const QPointF &pos, MDiagram *diagram); - -public: - - MPackage *findSuitableParentPackage(DElement *topmost_diagram_element, MDiagram *diagram); + void createDependency(DObject *endAObject, DObject *endBObject, + const QList<QPointF> &intermediatePoints, MDiagram *diagram); + void createInheritance(DClass *derivedClass, DClass *baseClass, + const QList<QPointF> &intermediatePoints, MDiagram *diagram); + void createAssociation(DClass *endAClass, DClass *endBClass, + const QList<QPointF> &intermediatePoints, MDiagram *diagram); - MDiagram *findDiagramBySearchId(MPackage *package, const QString &diagram_name); + bool isAddingAllowed(const Uid &modelElementKey, MDiagram *diagram); + void addExistingModelElement(const Uid &modelElementKey, const QPointF &pos, MDiagram *diagram); + void dropNewElement(const QString &newElementId, const QString &name, const QString &stereotype, + DElement *topMostElementAtPos, const QPointF &pos, MDiagram *diagram); + void dropNewModelElement(MObject *modelObject, MPackage *parentPackage, const QPointF &pos, + MDiagram *diagram); -public: + MPackage *findSuitableParentPackage(DElement *topmostDiagramElement, MDiagram *diagram); + MDiagram *findDiagramBySearchId(MPackage *package, const QString &diagramName); void alignLeft(DObject *object, const DSelection &selection, MDiagram *diagram); - void alignRight(DObject *object, const DSelection &selection, MDiagram *diagram); - void alignHCenter(DObject *object, const DSelection &selection, MDiagram *diagram); - void alignTop(DObject *object, const DSelection &selection, MDiagram *diagram); - void alignBottom(DObject *object, const DSelection &selection, MDiagram *diagram); - void alignVCenter(DObject *object, const DSelection &selection, MDiagram *diagram); - - void alignWidth(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram); - - void alignHeight(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram); - - void alignSize(DObject *object, const DSelection &selection, const QSizeF &minimum_size, MDiagram *diagram); - + void alignWidth(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram); + void alignHeight(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram); + void alignSize(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + MDiagram *diagram); void distributeHorizontal(DObject *object, const DSelection &selection, MDiagram *diagram); - void distributeVertical(DObject *object, const DSelection &selection, MDiagram *diagram); - void distributeField(DObject *object, const DSelection &selection, MDiagram *diagram); private: - - void alignPosition(DObject *object, const DSelection &selection, QPointF (*aligner)(DObject *object, DObject *other_object), MDiagram *diagram); - - void alignSize(DObject *object, const DSelection &selection, const QSizeF &minimum_size, QRectF (*aligner)(DObject *, const QSizeF &), MDiagram *diagram); - + void alignPosition(DObject *object, const DSelection &selection, + QPointF (*aligner)(DObject *object, DObject *otherObject), + MDiagram *diagram); + void alignSize(DObject *object, const DSelection &selection, const QSizeF &minimumSize, + QRectF (*aligner)(DObject *, const QSizeF &), MDiagram *diagram); void alignOnRaster(DElement *element, MDiagram *diagram); - DElement *addModelElement(const Uid &model_element_key, const QPointF &pos, MDiagram *diagram); - - DObject *addObject(MObject *model_object, const QPointF &pos, MDiagram *diagram); - - DRelation *addRelation(MRelation *model_relation, const QList<QPointF> &intermediate_points, MDiagram *diagram); - -private: - - ModelController *_model_controller; - - DiagramController *_diagram_controller; - - IElementTasks *_element_tasks; + DElement *addModelElement(const Uid &modelElementKey, const QPointF &pos, MDiagram *diagram); + DObject *addObject(MObject *modelObject, const QPointF &pos, MDiagram *diagram); + DRelation *addRelation(MRelation *modelRelation, const QList<QPointF> &intermediatePoints, + MDiagram *diagram); - ISceneInspector *_scene_inspector; + ModelController *m_modelController; + DiagramController *m_diagramController; + IElementTasks *m_elementTasks; + ISceneInspector *m_sceneInspector; }; -} +} // namespace qmt #endif // QMT_DIAGRAMSCENECONTROLLER_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.cpp b/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.cpp index a8b1bc9019..df8f81f72d 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.cpp @@ -37,7 +37,7 @@ namespace qmt { FindDiagramVisitor::FindDiagramVisitor() : MVoidConstVisitor(), - _diagram(0) + m_diagram(0) { } @@ -47,10 +47,10 @@ FindDiagramVisitor::~FindDiagramVisitor() void FindDiagramVisitor::visitMObject(const MObject *object) { - foreach (const Handle<MObject> &child, object->getChildren()) { + foreach (const Handle<MObject> &child, object->children()) { if (child.hasTarget()) { - if (MDiagram *diagram = dynamic_cast<MDiagram *>(child.getTarget())) { - _diagram = diagram; + if (MDiagram *diagram = dynamic_cast<MDiagram *>(child.target())) { + m_diagram = diagram; return; } } @@ -59,7 +59,7 @@ void FindDiagramVisitor::visitMObject(const MObject *object) void FindDiagramVisitor::visitMDiagram(const MDiagram *diagram) { - _diagram = diagram; + m_diagram = diagram; } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.h b/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.h index 8b15f0206e..6c67308b2e 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/finddiagramvisitor.h @@ -35,31 +35,21 @@ namespace qmt { -class QMT_EXPORT FindDiagramVisitor : - public MVoidConstVisitor +class QMT_EXPORT FindDiagramVisitor : public MVoidConstVisitor { public: - FindDiagramVisitor(); - ~FindDiagramVisitor(); -public: - - const MDiagram *getDiagram() const { return _diagram; } - -public: + const MDiagram *diagram() const { return m_diagram; } void visitMObject(const MObject *object); - void visitMDiagram(const MDiagram *diagram); private: - - const MDiagram *_diagram; - + const MDiagram *m_diagram; }; -} +} // namespace qmt #endif // QMT_FINDDIAGRAMVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.cpp b/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.cpp index 823d3da49c..df0b374bad 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.cpp +++ b/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.cpp @@ -36,7 +36,7 @@ namespace qmt { FindRootDiagramVisitor::FindRootDiagramVisitor() : MVoidVisitor(), - _diagram(0) + m_diagram(0) { } @@ -47,26 +47,24 @@ FindRootDiagramVisitor::~FindRootDiagramVisitor() void FindRootDiagramVisitor::visitMObject(MObject *object) { // first search flat - foreach(const Handle<MObject> &child, object->getChildren()) { + foreach(const Handle<MObject> &child, object->children()) { if (child.hasTarget()) { - MDiagram *diagram = dynamic_cast<MDiagram *>(child.getTarget()); + MDiagram *diagram = dynamic_cast<MDiagram *>(child.target()); if (diagram) { - _diagram = diagram; + m_diagram = diagram; return; } } } // then search in children - foreach(const Handle<MObject> &child, object->getChildren()) { + foreach(const Handle<MObject> &child, object->children()) { if (child.hasTarget()) { - child.getTarget()->accept(this); - if (_diagram) { + child.target()->accept(this); + if (m_diagram) return; - } } } visitMElement(object); } - -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.h b/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.h index 92ecd0a76f..b11c54ed4f 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/findrootdiagramvisitor.h @@ -33,34 +33,24 @@ #include "qmt/model_controller/mvoidvisitor.h" - namespace qmt { class MDiagram; - -class QMT_EXPORT FindRootDiagramVisitor : - public MVoidVisitor +class QMT_EXPORT FindRootDiagramVisitor : public MVoidVisitor { public: FindRootDiagramVisitor(); - ~FindRootDiagramVisitor(); -public: - - MDiagram *getDiagram() const { return _diagram; } - -public: + MDiagram *diagram() const { return m_diagram; } void visitMObject(MObject *object); private: - - MDiagram *_diagram; + MDiagram *m_diagram; }; - -} +} // namespace qmt #endif // QMT_FINDROOTDIAGRAMVISITOR_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/ielementtasks.h b/src/libs/3rdparty/modeling/qmt/tasks/ielementtasks.h index 6ff07098be..3abade9ba6 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/ielementtasks.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/ielementtasks.h @@ -81,6 +81,6 @@ public: virtual void createAndOpenDiagram(const DElement *, const MDiagram *) = 0; }; -} +} // namespace qmt #endif // QMT_IELEMENTTASKS_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/isceneinspector.h b/src/libs/3rdparty/modeling/qmt/tasks/isceneinspector.h index 94eb9ad4c7..7fd9588e09 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/isceneinspector.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/isceneinspector.h @@ -37,7 +37,6 @@ QT_BEGIN_NAMESPACE class QSizeF; QT_END_NAMESPACE - namespace qmt { class MDiagram; @@ -45,22 +44,17 @@ class DElement; class IMoveable; class IResizable; -class ISceneInspector { +class ISceneInspector +{ public: ~ISceneInspector() { } -public: - - virtual QSizeF getRasterSize() const = 0; - - virtual QSizeF getMinimalSize(const DElement *element, const MDiagram *diagram) const = 0; - - virtual IMoveable *getMoveable(const DElement *element, const MDiagram *diagram) const = 0; - - virtual IResizable *getResizable(const DElement *element, const MDiagram *diagram) const = 0; - + virtual QSizeF rasterSize() const = 0; + virtual QSizeF minimalSize(const DElement *element, const MDiagram *diagram) const = 0; + virtual IMoveable *moveable(const DElement *element, const MDiagram *diagram) const = 0; + virtual IResizable *resizable(const DElement *element, const MDiagram *diagram) const = 0; }; -} +} // namespace qmt #endif // QMT_ISCENEINSPECTOR_H diff --git a/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.cpp b/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.cpp index ea1f37677e..605b600257 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.cpp +++ b/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.cpp @@ -174,4 +174,4 @@ void VoidElementTasks::createAndOpenDiagram(const DElement *, const MDiagram *) { } -} +} // namespace qmt diff --git a/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.h b/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.h index 7875395410..770aea520d 100644 --- a/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.h +++ b/src/libs/3rdparty/modeling/qmt/tasks/voidelementtasks.h @@ -36,15 +36,12 @@ namespace qmt { -class QMT_EXPORT VoidElementTasks : - public IElementTasks +class QMT_EXPORT VoidElementTasks : public IElementTasks { public: VoidElementTasks(); ~VoidElementTasks(); -public: - void openElement(const MElement *); void openElement(const DElement *, const MDiagram *); @@ -83,6 +80,6 @@ public: void createAndOpenDiagram(const qmt::DElement *, const qmt::MDiagram *); }; -} +} // namespace qmt #endif // QMT_VOIDELEMENTTASKS_H diff --git a/src/libs/3rdparty/modeling/qstringparser/qstringparser.cpp b/src/libs/3rdparty/modeling/qstringparser/qstringparser.cpp index fd0546fafe..12b9c61cc3 100644 --- a/src/libs/3rdparty/modeling/qstringparser/qstringparser.cpp +++ b/src/libs/3rdparty/modeling/qstringparser/qstringparser.cpp @@ -31,14 +31,13 @@ #include "qstringparser.h" // Possible Improvements -// %w: skip optional whitespaces in _source +// %w: skip optional whitespaces in m_source // more types: different int types, float, char, word, some character delimited string // some Q Types: QColor (named, hex rgb) // introduce public type ParseState which can be got from Parser and gives some info like error state, error index etc - QStringParser::QStringParser(const QString &source) - : _source(source) + : m_source(source) { } @@ -48,51 +47,47 @@ QStringParser::~QStringParser() QStringParser::Parser QStringParser::parse(const QString &pattern) { - return Parser(_source, pattern); + return Parser(m_source, pattern); } - QStringParser::Parser::Parser(const QString &source, const QString &pattern) - : _source(source), - _pattern(pattern), - _evaluated(false), - _evaluation_failed(false) + : m_source(source), + m_pattern(pattern), + m_isEvaluated(false), + m_evaluationFailed(false) { } QStringParser::Parser::~Parser() { evaluate(); - qDeleteAll(_nodes); + qDeleteAll(m_nodes); } bool QStringParser::Parser::failed() { evaluate(); - return _evaluation_failed; + return m_evaluationFailed; } bool QStringParser::Parser::scan(int *i, int *index) { *i = 0; int sign = 1; - while (*index < _source.length() && _source.at(*index).isSpace()) { + while (*index < m_source.length() && m_source.at(*index).isSpace()) ++(*index); - } - if (*index >= _source.length()) { + if (*index >= m_source.length()) return false; - } - if (_source.at(*index) == QLatin1Char('+')) { + if (m_source.at(*index) == QLatin1Char('+')) { ++(*index); - } else if (_source.at(*index) == QLatin1Char('-')) { + } else if (m_source.at(*index) == QLatin1Char('-')) { sign = -1; ++(*index); } - if (*index >= _source.length() || !_source.at(*index).isDigit()) { + if (*index >= m_source.length() || !m_source.at(*index).isDigit()) return false; - } - while (*index < _source.length() && _source.at(*index).isDigit()) { - *i = *i * 10 + _source.at(*index).digitValue(); + while (*index < m_source.length() && m_source.at(*index).isDigit()) { + *i = *i * 10 + m_source.at(*index).digitValue(); ++(*index); } *i *= sign; @@ -101,118 +96,108 @@ bool QStringParser::Parser::scan(int *i, int *index) bool QStringParser::Parser::scan(double *d, int *index) { - int start_index = *index; + int startIndex = *index; // skip whitespaces - while (*index < _source.length() && _source.at(*index).isSpace()) { + while (*index < m_source.length() && m_source.at(*index).isSpace()) ++(*index); - } - if (*index >= _source.length()) { + if (*index >= m_source.length()) return false; - } // sign - if (_source.at(*index) == QLatin1Char('+')) { + if (m_source.at(*index) == QLatin1Char('+')) ++(*index); - } else if (_source.at(*index) == QLatin1Char('-')) { + else if (m_source.at(*index) == QLatin1Char('-')) ++(*index); - } // int - while (*index < _source.length() && _source.at(*index).isDigit()) { + while (*index < m_source.length() && m_source.at(*index).isDigit()) ++(*index); - } // point - if (*index < _source.length() && _source.at(*index) == QLatin1Char('.')) { + if (*index < m_source.length() && m_source.at(*index) == QLatin1Char('.')) ++(*index); - } // int - while (*index < _source.length() && _source.at(*index).isDigit()) { + while (*index < m_source.length() && m_source.at(*index).isDigit()) ++(*index); - } // exponent - if (*index < _source.length() && _source.at(*index).toLower() == QLatin1Char('e')) { + if (*index < m_source.length() && m_source.at(*index).toLower() == QLatin1Char('e')) { ++(*index); - if (*index >= _source.length()) { + if (*index >= m_source.length()) return false; - } // sign - if (_source.at(*index) == QLatin1Char('+')) { + if (m_source.at(*index) == QLatin1Char('+')) ++(*index); - } else if (_source.at(*index) == QLatin1Char('-')) { + else if (m_source.at(*index) == QLatin1Char('-')) ++(*index); - } // int - while (*index < _source.length() && _source.at(*index).isDigit()) { + while (*index < m_source.length() && m_source.at(*index).isDigit()) ++(*index); - } } bool ok = false; - *d = _source.mid(start_index, *index - start_index).toDouble(&ok); + *d = m_source.mid(startIndex, *index - startIndex).toDouble(&ok); return ok; } void QStringParser::Parser::evaluate() { - if (!_evaluated) { - _evaluated = true; - _evaluation_failed = false; + if (!m_isEvaluated) { + m_isEvaluated = true; + m_evaluationFailed = false; int p = 0; int i = 0; - while (p < _pattern.length()) { - if (_pattern.at(p) == QLatin1Char('%')) { + while (p < m_pattern.length()) { + if (m_pattern.at(p) == QLatin1Char('%')) { ++p; // a % must be followed by a another char. - if (p >= _pattern.length()) { + if (p >= m_pattern.length()) { // syntax error in pattern - _evaluation_failed = true; + m_evaluationFailed = true; return; } - if (_pattern.at(p) == QLatin1Char('%')) { - // two %% are handled like a simple % in _source + if (m_pattern.at(p) == QLatin1Char('%')) { + // two %% are handled like a simple % in m_source ++p; - if (i >= _source.length() || _source.at(i) != QLatin1Char('%')) { - _evaluation_failed = true; + if (i >= m_source.length() || m_source.at(i) != QLatin1Char('%')) { + m_evaluationFailed = true; return; } ++i; - } else if (_pattern.at(p).isDigit()) { + } else if (m_pattern.at(p).isDigit()) { // now extract a value matching the Nth node type int N = 0; - while (p < _pattern.length() && _pattern.at(p).isDigit()) { - N = N * 10 + _pattern.at(p).digitValue(); + while (p < m_pattern.length() && m_pattern.at(p).isDigit()) { + N = N * 10 + m_pattern.at(p).digitValue(); ++p; } - if (N < 1 || N > _nodes.length()) { + if (N < 1 || N > m_nodes.length()) { // argument out of bounds in pattern - _evaluation_failed = true; + m_evaluationFailed = true; return; } - if (!_nodes.at(N-1)->accept(*this, &i)) { - _evaluation_failed = true; + if (!m_nodes.at(N-1)->accept(*this, &i)) { + m_evaluationFailed = true; return; } } else { // any other % syntax is an error - _evaluation_failed = true; + m_evaluationFailed = true; return; } } else { - if (_pattern.at(p).isSpace()) { + if (m_pattern.at(p).isSpace()) { ++p; - // _source must end or have at least one space - if (i < _source.length() && !_source.at(i).isSpace()) { - _evaluation_failed = true; + // m_source must end or have at least one space + if (i < m_source.length() && !m_source.at(i).isSpace()) { + m_evaluationFailed = true; return; } - // skip spaces in _pattern - while (p < _pattern.length() && _pattern.at(p).isSpace()) { + // skip spaces in m_pattern + while (p < m_pattern.length() && m_pattern.at(p).isSpace()) ++p; - } - // skip spaces in _source - while (i < _source.length() && _source.at(i).isSpace()) { + + // skip spaces in m_source + while (i < m_source.length() && m_source.at(i).isSpace()) ++i; - } - } else if (i >= _source.length() || _source.at(i) != _pattern.at(p)) { - _evaluation_failed = true; + } else if (i >= m_source.length() || m_source.at(i) != m_pattern.at(p)) { + m_evaluationFailed = true; return; } else { ++p; @@ -220,9 +205,9 @@ void QStringParser::Parser::evaluate() } } } - // _source and _pattern must both be scanned completely - if (i < _source.length() || p < _pattern.length()) { - _evaluation_failed = true; + // m_source and m_pattern must both be scanned completely + if (i < m_source.length() || p < m_pattern.length()) { + m_evaluationFailed = true; return; } } diff --git a/src/libs/3rdparty/modeling/qstringparser/qstringparser.h b/src/libs/3rdparty/modeling/qstringparser/qstringparser.h index 5dfd94745f..8112e07065 100644 --- a/src/libs/3rdparty/modeling/qstringparser/qstringparser.h +++ b/src/libs/3rdparty/modeling/qstringparser/qstringparser.h @@ -34,15 +34,12 @@ #include <QString> #include <QList> - class QStringParser { private: - class Parser { private: - class Node { public: @@ -51,56 +48,50 @@ private: }; template<typename V> - class RefNode : - public Node + class RefNode : public Node { public: - RefNode(V &v) : _v(v) { } + RefNode(V &v) : m_v(v) { } bool accept(Parser &visitor, int *index) { return visitor.visit(this, index); } - V &getRef() const { return _v; } + V &ref() const { return m_v; } private: - V &_v; + V &m_v; }; template<class U, typename V> - class SetterNode : - public Node + class SetterNode : public Node { public: - SetterNode(U &u, void (U::*setter)(V)) : _object(u), _setter(setter) { } + SetterNode(U &u, void (U::*setter)(V)) : m_object(u), m_setter(setter) { } bool accept(Parser &visitor, int *index) { return visitor.visit(this, index); } - U &getObject() const { return _object; } - void (U::*getSetter() const)(V) { return _setter; } + U &object() const { return m_object; } + void (U::*setter() const)(V) { return m_setter; } private: - U &_object; - void (U::*_setter)(V); + U &m_object; + void (U::*m_setter)(V); }; public: - Parser(const QString &source, const QString &pattern); ~Parser(); - public: - template<typename V> Parser &arg(V &v) { - _nodes.append(new RefNode<V>(v)); + m_nodes.append(new RefNode<V>(v)); return *this; } template<class U, typename V> Parser &arg(U &u, void (U::*setter)(V)) { - _nodes.append(new SetterNode<U, V>(u, setter)); + m_nodes.append(new SetterNode<U, V>(u, setter)); return *this; } bool failed(); private: - bool scan(int *i, int *index); bool scan(double *d, int *index); @@ -108,10 +99,9 @@ private: bool visit(RefNode<V> *node, int *index) { V v = 0; - if (!scan(&v, index)) { + if (!scan(&v, index)) return false; - } - node->getRef() = v; + node->ref() = v; return true; } @@ -119,10 +109,9 @@ private: bool visit(SetterNode<U, V> *node, int *index) { V v = 0; - if (!scan(&v, index)) { + if (!scan(&v, index)) return false; - } - (node->getObject().*(node->getSetter()))(v); + (node->object().*(node->setter()))(v); return true; } @@ -130,36 +119,30 @@ private: bool visit(SetterNode<U, const V &> *node, int *index) { V v = 0; - if (!scan(&v, index)) { + if (!scan(&v, index)) return false; - } - (node->getObject().*(node->getSetter()))(v); + (node->object().*(node->setter()))(v); return true; } void evaluate(); private: - - const QString _source; - const QString _pattern; - bool _evaluated; - bool _evaluation_failed; - QList<Node *> _nodes; + const QString m_source; + const QString m_pattern; + bool m_isEvaluated; + bool m_evaluationFailed; + QList<Node *> m_nodes; }; public: - explicit QStringParser(const QString &source); ~QStringParser(); -public: - Parser parse(const QString &pattern); private: - - const QString _source; + const QString m_source; }; #endif // QSTRINGPARSER_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/access.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/access.h index 88f96121a7..bdd4f85769 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/access.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/access.h @@ -34,16 +34,17 @@ namespace qark { template<class Archive, class T> -class Access { +class Access +{ public: static void save(Archive &archive, const T &t) { - serialize_helper(archive, const_cast<T &>(t)); + serializeHelper(archive, const_cast<T &>(t)); } static void load(Archive &archive, T &t) { - serialize_helper(archive, t); + serializeHelper(archive, t); } static void serialize(Archive &archive, T &t); @@ -80,12 +81,12 @@ void serialize(Archive &archive, T &t) } template<class Archive, class T> -void serialize_helper(Archive &archive, T &t) +void serializeHelper(Archive &archive, T &t) { serialize(archive, t); } -} +} // namespace qark #define QARK_ACCESS(TYPE) \ template<class Archive> \ @@ -99,8 +100,11 @@ void serialize_helper(Archive &archive, T &t) template<class Archive> \ class Access<Archive, TYPE> { \ public: \ - static inline void save(Archive &archive, const TYPE &t) { serialize_helper(archive, const_cast<TYPE &>(t)); } \ - static inline void load(Archive &archive, TYPE &t) { serialize_helper(archive, t); } \ + static inline void save(Archive &archive, const TYPE &t) \ + { \ + serializeHelper(archive, const_cast<TYPE &>(t)); \ + } \ + static inline void load(Archive &archive, TYPE &t) { serializeHelper(archive, t); } \ static inline void serialize(Archive &archive, TYPE &); \ }; @@ -108,5 +112,4 @@ void serialize_helper(Archive &archive, T &t) template class Access<INARCHIVE, TYPE>; \ template class Access<OUTARCHIVE, TYPE>; - #endif // QARK_ACCESS_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/archivebasics.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/archivebasics.h index ffe68e7639..5fffd2c9f7 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/archivebasics.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/archivebasics.h @@ -42,52 +42,54 @@ namespace qark { class ArchiveBasics { public: - ArchiveBasics() : _flags(0) { } + ArchiveBasics() : m_flags(0) { } - void setFlag(const Flag &flag) { _flags |= flag.getMask(); } - - void clearFlag(const Flag &flag) { _flags &= ~flag.getMask(); } - - bool hasFlag(const Flag &flag) const { return (_flags & flag.getMask()) != 0; } - - bool takeFlag(const Flag &flag) { bool f = (_flags & flag.getMask()) != 0; _flags &= ~flag.getMask(); return f; } + void setFlag(const Flag &flag) { m_flags |= flag.mask(); } + void clearFlag(const Flag &flag) { m_flags &= ~flag.mask(); } + bool hasFlag(const Flag &flag) const { return (m_flags & flag.mask()) != 0; } + bool takeFlag(const Flag &flag) + { + bool f = (m_flags & flag.mask()) != 0; + m_flags &= ~flag.mask(); + return f; + } bool hasUserData(const QString &key) { - return _user_data.contains(key); + return m_userData.contains(key); } template<typename T> - T getUserData(const QString &key) + T userData(const QString &key) { - return _user_data.value(key).value<T>(); + return m_userData.value(key).value<T>(); } template<typename T> - T getUserData(const QString &key, const T &default_value) + T userData(const QString &key, const T &defaultValue) { // gcc 4.8.2 fails to compile if the following 2 statements are written in one expression - //return _user_data.value(key, data).value<T>(); - QVariant v = _user_data.value(key, default_value); + //return m_userData.value(key, data).value<T>(); + QVariant v = m_userData.value(key, defaultValue); return v.value<T>(); } template<class T> void setUserData(const QString &key, const T &data) { - _user_data.insert(key, data); + m_userData.insert(key, data); } void removeUserData(const QString &key) { - _user_data.remove(key); + m_userData.remove(key); } private: - Flag::mask_type _flags; - QHash<QString, QVariant> _user_data; + Flag::MaskType m_flags; + QHash<QString, QVariant> m_userData; }; -} +} // namespace qark #endif // QARK_ARCHIVEBASICS_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/attribute.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/attribute.h index 6f548759af..2e5b33c096 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/attribute.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/attribute.h @@ -38,343 +38,340 @@ namespace qark { template<typename T> -class Attr { +class Attr +{ public: - Attr(const QString &qualified_name, T *value) - : _qualified_name(qualified_name), - _value(value) + Attr(const QString &qualifiedName, T *value) + : m_qualifiedName(qualifiedName), + m_value(value) { } - Attr(const QString &qualified_name, T *value, const Parameters ¶meters) - : _qualified_name(qualified_name), - _value(value), - _parameters(parameters) + Attr(const QString &qualifiedName, T *value, const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_value(value), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - T *getValue() const { return _value; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + T *value() const { return m_value; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - T *_value; - Parameters _parameters; + QString m_qualifiedName; + T *m_value; + Parameters m_parameters; }; template<typename T> -Attr<T * const> attr(const QString &qualified_name, T * const &value) +Attr<T * const> attr(const QString &qualifiedName, T * const &value) { - return Attr<T * const>(qualified_name, &value); + return Attr<T * const>(qualifiedName, &value); } template<typename T> -Attr<T * const> attr(const QString &qualified_name, T * const &value, const Parameters ¶meters) +Attr<T * const> attr(const QString &qualifiedName, T * const &value, const Parameters ¶meters) { - return Attr<T * const>(qualified_name, &value, parameters); + return Attr<T * const>(qualifiedName, &value, parameters); } template<typename T> -Attr<T> attr(const QString &qualified_name, T &value) +Attr<T> attr(const QString &qualifiedName, T &value) { - return Attr<T>(qualified_name, &value); + return Attr<T>(qualifiedName, &value); } template<typename T> -Attr<T> attr(const QString &qualified_name, T &value, const Parameters ¶meters) +Attr<T> attr(const QString &qualifiedName, T &value, const Parameters ¶meters) { - return Attr<T>(qualified_name, &value, parameters); + return Attr<T>(qualifiedName, &value, parameters); } - template<class U, typename T> -class GetterAttr { +class GetterAttr +{ public: - GetterAttr(const QString &qualified_name, const U &u, T (U::*getter)() const) - : _qualified_name(qualified_name), - _u(u), - _getter(getter) + GetterAttr(const QString &qualifiedName, const U &u, T (U::*getter)() const) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter) { } - GetterAttr(const QString &qualified_name, const U &u, T (U::*getter)() const, const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _parameters(parameters) + GetterAttr(const QString &qualifiedName, const U &u, T (U::*getter)() const, + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - const U &getObject() const { return _u; } - - T (U::*getGetter() const)() const { return _getter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + const U &object() const { return m_u; } + T (U::*getter() const)() const { return m_getter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - const U &_u; - T (U::*_getter)() const; - Parameters _parameters; + QString m_qualifiedName; + const U &m_u; + T (U::*m_getter)() const; + Parameters m_parameters; }; template<class U, typename T> -GetterAttr<U, T> attr(const QString &qualified_name, const U &u, T (U::*getter)() const) +GetterAttr<U, T> attr(const QString &qualifiedName, const U &u, T (U::*getter)() const) { - return GetterAttr<U, T>(qualified_name, u, getter); + return GetterAttr<U, T>(qualifiedName, u, getter); } template<class U, typename T> -GetterAttr<U, T> attr(const QString &qualified_name, const U &u, T (U::*getter)() const, const Parameters ¶meters) +GetterAttr<U, T> attr(const QString &qualifiedName, const U &u, T (U::*getter)() const, + const Parameters ¶meters) { - return GetterAttr<U, T>(qualified_name, u, getter, parameters); + return GetterAttr<U, T>(qualifiedName, u, getter, parameters); } - template<class U, typename T> -class SetterAttr { +class SetterAttr +{ public: - SetterAttr(const QString &qualified_name, U &u, void (U::*setter)(T)) - : _qualified_name(qualified_name), - _u(u), - _setter(setter) + SetterAttr(const QString &qualifiedName, U &u, void (U::*setter)(T)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setter(setter) { } - SetterAttr(const QString &qualified_name, U &u, void (U::*setter)(T), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _setter(setter), - _parameters(parameters) + SetterAttr(const QString &qualifiedName, U &u, void (U::*setter)(T), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setter(setter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - void (U::*getSetter() const)(T) { return _setter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + void (U::*setter() const)(T) { return m_setter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - void (U::*_setter)(T); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + void (U::*m_setter)(T); + Parameters m_parameters; }; template<class U, typename T> -SetterAttr<U, T> attr(const QString &qualified_name, U &u, void (U::*setter)(T)) +SetterAttr<U, T> attr(const QString &qualifiedName, U &u, void (U::*setter)(T)) { - return SetterAttr<U, T>(qualified_name, u, setter); + return SetterAttr<U, T>(qualifiedName, u, setter); } template<class U, typename T> -SetterAttr<U, T> attr(const QString &qualified_name, U &u, void (U::*setter)(T), const Parameters ¶meters) +SetterAttr<U, T> attr(const QString &qualifiedName, U &u, void (U::*setter)(T), + const Parameters ¶meters) { - return SetterAttr<U, T>(qualified_name, u, setter, parameters); + return SetterAttr<U, T>(qualifiedName, u, setter, parameters); } - template<class U, typename T, typename V> -class GetterSetterAttr { +class GetterSetterAttr +{ public: - GetterSetterAttr(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V)) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _setter(setter) + GetterSetterAttr(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_setter(setter) { } - GetterSetterAttr(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _setter(setter), - _parameters(parameters) + GetterSetterAttr(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_setter(setter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - T (U::*getGetter() const)() const { return _getter; } - - void (U::*getSetter() const)(V) { return _setter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + T (U::*getter() const)() const { return m_getter; } + void (U::*setter() const)(V) { return m_setter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - T (U::*_getter)() const; - void (U::*_setter)(V); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + T (U::*m_getter)() const; + void (U::*m_setter)(V); + Parameters m_parameters; }; template<class U, typename T, typename V> -GetterSetterAttr<U, T, V> attr(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V)) +GetterSetterAttr<U, T, V> attr(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V)) { - return GetterSetterAttr<U, T, V>(qualified_name, u, getter, setter); + return GetterSetterAttr<U, T, V>(qualifiedName, u, getter, setter); } template<class U, typename T, typename V> -GetterSetterAttr<U, T, V> attr(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V), const Parameters ¶meters) +GetterSetterAttr<U, T, V> attr(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V), + const Parameters ¶meters) { - return GetterSetterAttr<U, T, V>(qualified_name, u, getter, setter, parameters); + return GetterSetterAttr<U, T, V>(qualifiedName, u, getter, setter, parameters); } - template<class U, typename T> -class GetFuncAttr { +class GetFuncAttr +{ public: - GetFuncAttr(const QString &qualified_name, U &u, T (*get_func)(const U &)) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func) + GetFuncAttr(const QString &qualifiedName, U &u, T (*func)(const U &)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func) { } - GetFuncAttr(const QString &qualified_name, U &u, T (*get_func)(const U &), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _parameters(parameters) + GetFuncAttr(const QString &qualifiedName, U &u, T (*func)(const U &), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - T (*getGetFunc() const)(const U &) { return _get_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + T (*getterFunc() const)(const U &) { return m_getFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - T (*_get_func)(const U &); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + T (*m_getFunc)(const U &); + Parameters m_parameters; }; template<class U, typename T> -GetFuncAttr<U, T> attr(const QString &qualified_name, const U &u, T (*get_func)(const U &)) +GetFuncAttr<U, T> attr(const QString &qualifiedName, const U &u, T (*func)(const U &)) { - return GetFuncAttr<U, T>(qualified_name, u, get_func); + return GetFuncAttr<U, T>(qualifiedName, u, func); } template<class U, typename T> -GetFuncAttr<U, T> attr(const QString &qualified_name, const U &u, T (*get_func)(const U &), const Parameters ¶meters) +GetFuncAttr<U, T> attr(const QString &qualifiedName, const U &u, T (*func)(const U &), + const Parameters ¶meters) { - return GetFuncAttr<U, T>(qualified_name, u, get_func, parameters); + return GetFuncAttr<U, T>(qualifiedName, u, func, parameters); } - template<class U, typename T> -class SetFuncAttr { +class SetFuncAttr +{ public: - SetFuncAttr(const QString &qualified_name, U &u, void (*set_func)(U &, T)) - : _qualified_name(qualified_name), - _u(u), - _set_func(set_func) + SetFuncAttr(const QString &qualifiedName, U &u, void (*setFunc)(U &, T)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setFunc(setFunc) { } - SetFuncAttr(const QString &qualified_name, U &u, void (*set_func)(U &, T), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _set_func(set_func), - _parameters(parameters) + SetFuncAttr(const QString &qualifiedName, U &u, void (*setFunc)(U &, T), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setFunc(setFunc), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - void (*getSetFunc() const)(U &, T) { return _set_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + void (*setterFunc() const)(U &, T) { return m_setFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - void (*_set_func)(U &, T); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + void (*m_setFunc)(U &, T); + Parameters m_parameters; }; template<class U, typename T> -SetFuncAttr<U, T> attr(const QString &qualified_name, U &u, void (*set_func)(U &, T)) +SetFuncAttr<U, T> attr(const QString &qualifiedName, U &u, void (*setFunc)(U &, T)) { - return SetFuncAttr<U, T>(qualified_name, u, set_func); + return SetFuncAttr<U, T>(qualifiedName, u, setFunc); } template<class U, typename T> -SetFuncAttr<U, T> attr(const QString &qualified_name, U &u, void (*set_func)(U &, T), const Parameters ¶meters) +SetFuncAttr<U, T> attr(const QString &qualifiedName, U &u, void (*setFunc)(U &, T), + const Parameters ¶meters) { - return SetFuncAttr<U, T>(qualified_name, u, set_func, parameters); + return SetFuncAttr<U, T>(qualifiedName, u, setFunc, parameters); } - template<class U, typename T, typename V> -class GetSetFuncAttr { +class GetSetFuncAttr +{ public: - GetSetFuncAttr(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V)) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _set_func(set_func) + GetSetFuncAttr(const QString &qualifiedName, U &u, T (*func)(const U &), + void (*setFunc)(U &, V)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_setFunc(setFunc) { } - GetSetFuncAttr(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _set_func(set_func), - _parameters(parameters) + GetSetFuncAttr(const QString &qualifiedName, U &u, T (*func)(const U &), + void (*setFunc)(U &, V), const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_setFunc(setFunc), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - T (*getGetFunc() const)(const U &) { return _get_func; } - - void (*getSetFunc() const)(U &, V) { return _set_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + T (*getterFunc() const)(const U &) { return m_getFunc; } + void (*setterFunc() const)(U &, V) { return m_setFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - T (*_get_func)(const U &); - void (*_set_func)(U &, V); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + T (*m_getFunc)(const U &); + void (*m_setFunc)(U &, V); + Parameters m_parameters; }; template<class U, typename T, typename V> -GetSetFuncAttr<U, T, V> attr(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V)) +GetSetFuncAttr<U, T, V> attr(const QString &qualifiedName, U &u, T (*func)(const U &), + void (*setFunc)(U &, V)) { - return GetSetFuncAttr<U, T, V>(qualified_name, u, get_func, set_func); + return GetSetFuncAttr<U, T, V>(qualifiedName, u, func, setFunc); } template<class U, typename T, typename V> -GetSetFuncAttr<U, T, V> attr(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V), const Parameters ¶meters) +GetSetFuncAttr<U, T, V> attr(const QString &qualifiedName, U &u, T (*func)(const U &), + void (*setFunc)(U &, V), const Parameters ¶meters) { - return GetSetFuncAttr<U, T, V>(qualified_name, u, get_func, set_func, parameters); + return GetSetFuncAttr<U, T, V>(qualifiedName, u, func, setFunc, parameters); } -} +} // namespace qark #endif // QARK_ATTRIBUTE_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/baseclass.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/baseclass.h index 418917199a..e22854bd41 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/baseclass.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/baseclass.h @@ -36,75 +36,73 @@ #include <QString> - namespace qark { template<class BASE, class DERIVED> -class Base { +class Base +{ public: - Base(const QString &qualified_name, DERIVED &obj) - : _qualified_name(qualified_name), - _base(obj) + Base(const QString &qualifiedName, DERIVED &obj) + : m_qualifiedName(qualifiedName), + m_base(obj) { } - Base(const QString &qualified_name, DERIVED &obj, const Parameters ¶meters) - : _qualified_name(qualified_name), - _base(obj), - _parameters(parameters) + Base(const QString &qualifiedName, DERIVED &obj, const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_base(obj), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - const BASE &getBase() const { return _base; } - - BASE &getBase() { return _base; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + const BASE &base() const { return m_base; } + BASE &base() { return m_base; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - BASE &_base; - Parameters _parameters; + QString m_qualifiedName; + BASE &m_base; + Parameters m_parameters; }; template<class BASE, class DERIVED> -Base<BASE, DERIVED> base(const QString &qualified_name, DERIVED &obj) +Base<BASE, DERIVED> base(const QString &qualifiedName, DERIVED &obj) { - return Base<BASE, DERIVED>(qualified_name, obj); + return Base<BASE, DERIVED>(qualifiedName, obj); } template<class BASE, class DERIVED> -Base<BASE, DERIVED> base(const QString &qualified_name, DERIVED &obj, const Parameters ¶meters) +Base<BASE, DERIVED> base(const QString &qualifiedName, DERIVED &obj, const Parameters ¶meters) { - return Base<BASE, DERIVED>(qualified_name, obj, parameters); + return Base<BASE, DERIVED>(qualifiedName, obj, parameters); } template<class BASE, class DERIVED> -Base<BASE, DERIVED> base(const QString &qualified_name, DERIVED *&obj) +Base<BASE, DERIVED> base(const QString &qualifiedName, DERIVED *&obj) { - return Base<BASE, DERIVED>(qualified_name, *obj); + return Base<BASE, DERIVED>(qualifiedName, *obj); } template<class BASE, class DERIVED> -Base<BASE, DERIVED> base(const QString &qualified_name, DERIVED *&obj, const Parameters ¶meters) +Base<BASE, DERIVED> base(const QString &qualifiedName, DERIVED *&obj, const Parameters ¶meters) { - return Base<BASE, DERIVED>(qualified_name, *obj, parameters); + return Base<BASE, DERIVED>(qualifiedName, *obj, parameters); } template<class BASE, class DERIVED> Base<BASE, DERIVED> base(DERIVED &obj) { - return Base<BASE, DERIVED>(QString(QStringLiteral("base-%1")).arg(get_type_uid<BASE>()), obj); + return Base<BASE, DERIVED>(QString(QStringLiteral("base-%1")).arg(typeUid<BASE>()), obj); } template<class BASE, class DERIVED> Base<BASE, DERIVED> base(DERIVED &obj, const Parameters ¶meters) { - return Base<BASE, DERIVED>(QString(QStringLiteral("base-%1")).arg(get_type_uid<BASE>()), obj, parameters); + return Base<BASE, DERIVED>(QString(QStringLiteral("base-%1")).arg(typeUid<BASE>()), + obj, parameters); } -} +} // namespace qark #endif // QARK_BASECLASS_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/flag.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/flag.h index 82a4429392..826bd03baf 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/flag.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/flag.h @@ -33,19 +33,20 @@ namespace qark { -class Flag { +class Flag +{ public: - typedef unsigned int mask_type; + typedef unsigned int MaskType; - explicit Flag() : _mask(_next_mask) { _next_mask *= 2; } + explicit Flag() : m_mask(m_nextMask) { m_nextMask *= 2; } - mask_type getMask() const { return _mask; } + MaskType mask() const { return m_mask; } private: - static mask_type _next_mask; - mask_type _mask; + static MaskType m_nextMask; + MaskType m_mask; }; -} +} // namespace qark #endif // QARK_FLAG_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/loadingrefmap.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/loadingrefmap.h index 602b6fe4b6..b40cda7243 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/loadingrefmap.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/loadingrefmap.h @@ -36,42 +36,37 @@ #include <QMap> namespace qark { - namespace impl { -class LoadingRefMap { +class LoadingRefMap +{ public: - bool hasObject(const ObjectId &id) { - return _references.find(id) != _references.end(); + return m_references.find(id) != m_references.end(); } template<typename T> - T getObject(const ObjectId &id) + T object(const ObjectId &id) { - return reinterpret_cast<T>(_references.value(id)); + return reinterpret_cast<T>(m_references.value(id)); } template<typename T> void addObject(const ObjectId &id, T *p) { - _references[id] = reinterpret_cast<void *>(p); + m_references[id] = reinterpret_cast<void *>(p); } private: + typedef ObjectId KeyType; + typedef void *ValueType; + typedef QMap<KeyType, ValueType> MapType; - typedef ObjectId key_type; - typedef void * value_type; - typedef QMap<key_type, value_type> map_type; - -private: - - map_type _references; + MapType m_references; }; -} - -} +} // namespace impl +} // namespace qark #endif // QARK_LOADINGREFMAP_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/objectid.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/objectid.h index d53e601774..8464785a12 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/objectid.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/objectid.h @@ -32,23 +32,21 @@ #define QARK_OBJECTID_H namespace qark { - namespace impl { -class ObjectId { +class ObjectId +{ public: - explicit ObjectId(int id = -1) : _id(id) { } - - int get() const { return _id; } - - void set(int id) { _id = id; } + explicit ObjectId(int id = -1) : m_id(id) { } - bool isValid() const { return _id >= 0; } + int get() const { return m_id; } + void set(int id) { m_id = id; } + bool isValid() const { return m_id >= 0; } - ObjectId operator++(int) { ObjectId id(*this); ++_id; return id; } + ObjectId operator++(int) { ObjectId id(*this); ++m_id; return id; } private: - int _id; + int m_id; }; inline bool operator<(const ObjectId &lhs, const ObjectId &rhs) @@ -56,8 +54,7 @@ inline bool operator<(const ObjectId &lhs, const ObjectId &rhs) return lhs.get() < rhs.get(); } -} - -} +} // namespace impl +} // namespace qark #endif // QARK_OBJECTID_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/savingrefmap.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/savingrefmap.h index d5180c2182..3bd480c3e7 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/savingrefmap.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/impl/savingrefmap.h @@ -37,18 +37,15 @@ #include <QPair> #include <typeinfo> - namespace qark { - namespace impl { -class SavingRefMap { - +class SavingRefMap +{ public: - SavingRefMap() - : _references(), - _next_ref(1) + : m_references(), + m_nextRef(1) { } @@ -65,35 +62,27 @@ public: } template<typename T> - ObjectId getRef(const T *object, bool define = false) + ObjectId ref(const T *object, bool define = false) { - return getRef(reinterpret_cast<const void *>(object), typeid(*object).name(), define); + return ref(reinterpret_cast<const void *>(object), typeid(*object).name(), define); } int countDanglingReferences(); private: + bool hasRef(const void *address, const char *typeName); + bool hasDefinedRef(const void *address, const char *typeName); + ObjectId ref(const void *address, const char *typeName, bool define); - bool hasRef(const void *address, const char *type_name); - - bool hasDefinedRef(const void *address, const char *type_name); - - ObjectId getRef(const void *address, const char *type_name, bool define); - -private: - - typedef QPair<const void *, const char *> key_type; - typedef QPair<ObjectId, bool> value_type; - typedef QMap<key_type, value_type> map_type; + typedef QPair<const void *, const char *> KeyType; + typedef QPair<ObjectId, bool> ValueType; + typedef QMap<KeyType, ValueType> MapType; -private: - - map_type _references; - ObjectId _next_ref; + MapType m_references; + ObjectId m_nextRef; }; -} - -} +} // namespace impl +} // namespace qark #endif // QARK_SAVINGREFMAP_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/parameters.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/parameters.h index 07df43463a..524ac0b1fc 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/parameters.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/parameters.h @@ -37,35 +37,32 @@ namespace qark { class Parameters { - public: - Parameters() - : _flags(0) + : m_flags(0) { } Parameters(const Flag &flag) - : _flags(flag.getMask()) + : m_flags(flag.mask()) { } -public: - - void setFlag(const Flag &flag) { _flags |= flag.getMask(); } - - void clearFlag(const Flag &flag) { _flags &= ~flag.getMask(); } + void setFlag(const Flag &flag) { m_flags |= flag.mask(); } + void clearFlag(const Flag &flag) { m_flags &= ~flag.mask(); } + bool hasFlag(const Flag &flag) const { return (m_flags & flag.mask()) != 0; } - bool hasFlag(const Flag &flag) const { return (_flags & flag.getMask()) != 0; } - - bool takeFlag(const Flag &flag) { bool f = (_flags & flag.getMask()) != 0; _flags &= ~flag.getMask(); return f; } + bool takeFlag(const Flag &flag) + { + bool f = (m_flags & flag.mask()) != 0; + m_flags &= ~flag.mask(); + return f; + } private: - - Flag::mask_type _flags; + Flag::MaskType m_flags; }; -} +} // namespace qark #endif // QARK_PARAMETER_H - diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmlinarchive.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmlinarchive.h index 35e1b7d69b..3d44065b88 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmlinarchive.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmlinarchive.h @@ -45,276 +45,227 @@ #include <QXmlStreamReader> #include <exception> - namespace qark { -class QXmlInArchive : - public ArchiveBasics +class QXmlInArchive : public ArchiveBasics { public: - - class FileFormatException : - public std::exception + class FileFormatException : public std::exception { }; - class UnexpectedForwardReference : - public std::exception + class UnexpectedForwardReference : public std::exception { }; - static const bool in_archive = true; - static const bool out_archive = false; + static const bool inArchive = true; + static const bool outArchive = false; private: + class XmlTag; - struct XmlTag; - - class Node { - public: - typedef QList<Node *> children_type; - + class Node + { public: - virtual ~Node() { qDeleteAll(_children); } + typedef QList<Node *> ChildrenType; - const children_type &getChildren() const { return _children; } - - virtual QString getQualifiedName() const = 0; + virtual ~Node() { qDeleteAll(m_children); } + const ChildrenType &children() const { return m_children; } + virtual QString qualifiedName() const = 0; virtual void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - void append(Node *node) { _children.push_back(node); } + void append(Node *node) { m_children.append(node); } private: - children_type _children; + ChildrenType m_children; }; - class TagNode : - public Node + class TagNode : public Node { public: - explicit TagNode(const Tag &tag) : _tag(tag) { } - - const Tag &getTag() const { return _tag; } - - QString getQualifiedName() const { return _tag.getQualifiedName(); } + explicit TagNode(const Tag &tag) : m_tag(tag) { } + const Tag &tag() const { return m_tag; } + QString qualifiedName() const { return m_tag.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } private: - Tag _tag; + Tag m_tag; }; template<class T> - class ObjectNode : - public Node + class ObjectNode : public Node { public: - explicit ObjectNode(const Object<T> &object) : _object(object) { } - - QString getQualifiedName() const { return _object.getQualifiedName(); } - - Object<T> &getObject() { return _object; } + explicit ObjectNode(const Object<T> &object) : m_object(object) { } + QString qualifiedName() const { return m_object.qualifiedName(); } + Object<T> &object() { return m_object; } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } private: - Object<T> _object; + Object<T> m_object; }; template<class T, class U> - class BaseNode : - public Node + class BaseNode : public Node { public: - explicit BaseNode(const Base<T, U> &base) : _base(base) { } - - QString getQualifiedName() const { return _base.getQualifiedName(); } - - Base<T, U> &getBase() { return _base; } + explicit BaseNode(const Base<T, U> &base) : m_base(base) { } + QString qualifiedName() const { return m_base.qualifiedName(); } + Base<T, U> &base() { return m_base; } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } private: - Base<T, U> _base; + Base<T, U> m_base; }; template<class T> - class AttrNode : - public Node + class AttrNode : public Node { public: - explicit AttrNode(const Attr<T> &attr) : _attr(attr) { } - - QString getQualifiedName() const { return _attr.getQualifiedName(); } + explicit AttrNode(const Attr<T> &attr) : m_attr(attr) { } + QString qualifiedName() const { return m_attr.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - Attr<T> &getAttribute() { return _attr; } + Attr<T> &attribute() { return m_attr; } private: - Attr<T> _attr; + Attr<T> m_attr; }; template<class U, typename T> - class SetterAttrNode : - public Node + class SetterAttrNode : public Node { public: - explicit SetterAttrNode(const SetterAttr<U, T> &attr) : _attr(attr) { } - - QString getQualifiedName() const { return _attr.getQualifiedName(); } + explicit SetterAttrNode(const SetterAttr<U, T> &attr) : m_attr(attr) { } + QString qualifiedName() const { return m_attr.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - SetterAttr<U, T> &getAttribute() { return _attr; } + SetterAttr<U, T> &attribute() { return m_attr; } private: - SetterAttr<U, T> _attr; + SetterAttr<U, T> m_attr; }; template<class U, typename T, typename V> - class GetterSetterAttrNode : - public Node + class GetterSetterAttrNode : public Node { public: - explicit GetterSetterAttrNode(const GetterSetterAttr<U, T, V> &attr) : _attr(attr) { } - - QString getQualifiedName() const { return _attr.getQualifiedName(); } + explicit GetterSetterAttrNode(const GetterSetterAttr<U, T, V> &attr) : m_attr(attr) { } + QString qualifiedName() const { return m_attr.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - GetterSetterAttr<U, T, V> &getAttribute() { return _attr; } + GetterSetterAttr<U, T, V> &attribute() { return m_attr; } private: - GetterSetterAttr<U, T, V> _attr; + GetterSetterAttr<U, T, V> m_attr; }; template<class U, typename T> - class SetFuncAttrNode : - public Node + class SetFuncAttrNode : public Node { public: - explicit SetFuncAttrNode(const SetFuncAttr<U, T> &attr) : _attr(attr) { } - - QString getQualifiedName() const { return _attr.getQualifiedName(); } + explicit SetFuncAttrNode(const SetFuncAttr<U, T> &attr) : m_attr(attr) { } + QString qualifiedName() const { return m_attr.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - SetFuncAttr<U, T> &getAttribute() { return _attr; } + SetFuncAttr<U, T> &attribute() { return m_attr; } private: - SetFuncAttr<U, T> _attr; + SetFuncAttr<U, T> m_attr; }; template<class U, typename T, typename V> - class GetSetFuncAttrNode : - public Node + class GetSetFuncAttrNode : public Node { public: - explicit GetSetFuncAttrNode(const GetSetFuncAttr<U, T, V> &attr) : _attr(attr) { } - - QString getQualifiedName() const { return _attr.getQualifiedName(); } + explicit GetSetFuncAttrNode(const GetSetFuncAttr<U, T, V> &attr) : m_attr(attr) { } + QString qualifiedName() const { return m_attr.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - GetSetFuncAttr<U, T, V> &getAttribute() { return _attr; } + GetSetFuncAttr<U, T, V> &attribute() { return m_attr; } private: - GetSetFuncAttr<U, T, V> _attr; + GetSetFuncAttr<U, T, V> m_attr; }; template<class T> - class RefNode : - public Node + class RefNode : public Node { public: - explicit RefNode(const Ref<T> &ref) : _ref(ref) { } - - QString getQualifiedName() const { return _ref.getQualifiedName(); } + explicit RefNode(const Ref<T> &ref) : m_ref(ref) { } + QString qualifiedName() const { return m_ref.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - Ref<T> &getReference() { return _ref; } + Ref<T> &reference() { return m_ref; } private: - Ref<T> _ref; + Ref<T> m_ref; }; template<class U, typename T> - class SetterRefNode : - public Node + class SetterRefNode : public Node { public: - explicit SetterRefNode(const SetterRef<U, T> &ref) : _ref(ref) { } - - QString getQualifiedName() const { return _ref.getQualifiedName(); } + explicit SetterRefNode(const SetterRef<U, T> &ref) : m_ref(ref) { } + QString qualifiedName() const { return m_ref.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - SetterRef<U, T> &getReference() { return _ref; } + SetterRef<U, T> &reference() { return m_ref; } private: - SetterRef<U, T> _ref; + SetterRef<U, T> m_ref; }; template<class U, typename T, typename V> - class GetterSetterRefNode : - public Node + class GetterSetterRefNode : public Node { public: - explicit GetterSetterRefNode(const GetterSetterRef<U, T, V> &ref) : _ref(ref) { } - - QString getQualifiedName() const { return _ref.getQualifiedName(); } + explicit GetterSetterRefNode(const GetterSetterRef<U, T, V> &ref) : m_ref(ref) { } + QString qualifiedName() const { return m_ref.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - GetterSetterRef<U, T, V> &getReference() { return _ref; } + GetterSetterRef<U, T, V> &reference() { return m_ref; } private: - GetterSetterRef<U, T, V> _ref; + GetterSetterRef<U, T, V> m_ref; }; template<class U, typename T> - class SetFuncRefNode : - public Node + class SetFuncRefNode : public Node { public: - explicit SetFuncRefNode(const SetFuncRef<U, T> &ref) : _ref(ref) { } - - QString getQualifiedName() const { return _ref.getQualifiedName(); } + explicit SetFuncRefNode(const SetFuncRef<U, T> &ref) : m_ref(ref) { } + QString qualifiedName() const { return m_ref.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - SetFuncRef<U, T> &getReference() { return _ref; } + SetFuncRef<U, T> &reference() { return m_ref; } private: - SetFuncRef<U, T> _ref; + SetFuncRef<U, T> m_ref; }; template<class U, typename T, typename V> - class GetSetFuncRefNode : - public Node + class GetSetFuncRefNode : public Node { public: - explicit GetSetFuncRefNode(const GetSetFuncRef<U, T, V> &ref) : _ref(ref) { } - - QString getQualifiedName() const { return _ref.getQualifiedName(); } + explicit GetSetFuncRefNode(const GetSetFuncRef<U, T, V> &ref) : m_ref(ref) { } + QString qualifiedName() const { return m_ref.qualifiedName(); } void accept(QXmlInArchive &visitor, const XmlTag &tag) { visitor.visit(this, tag); } - - GetSetFuncRef<U, T, V> &getReference() { return _ref; } + GetSetFuncRef<U, T, V> &reference() { return m_ref; } private: - GetSetFuncRef<U, T, V> _ref; + GetSetFuncRef<U, T, V> m_ref; }; public: - explicit QXmlInArchive(QXmlStreamReader &stream) - : _stream(stream), - _end_tag_was_read(false), - _current_ref_node(0) + : m_stream(stream), + m_endTagWasRead(false), + m_currentRefNode(0) { } @@ -322,12 +273,10 @@ public: { } -public: - void beginDocument() { - while (!_stream.atEnd()) { - switch (_stream.readNext()) { + while (!m_stream.atEnd()) { + switch (m_stream.readNext()) { case QXmlStreamReader::StartDocument: return; case QXmlStreamReader::Comment: @@ -341,13 +290,12 @@ public: void endDocument() { - if (_end_tag_was_read) { - if (_stream.tokenType() != QXmlStreamReader::EndDocument) { + if (m_endTagWasRead) { + if (m_stream.tokenType() != QXmlStreamReader::EndDocument) throw FileFormatException(); - } } else { - while (!_stream.atEnd()) { - switch (_stream.readNext()) { + while (!m_stream.atEnd()) { + switch (m_stream.readNext()) { case QXmlStreamReader::EndDocument: return; case QXmlStreamReader::Comment: @@ -360,36 +308,31 @@ public: } } -public: - void append(const Tag &tag) { TagNode *node = new TagNode(tag); - if (!_node_stack.empty()) { - _node_stack.top()->append(node); - } - _node_stack.push(node); + if (!m_nodeStack.empty()) + m_nodeStack.top()->append(node); + m_nodeStack.push(node); } template<class T> void append(const Object<T> &object) { ObjectNode<T> *node = new ObjectNode<T>(object); - if (!_node_stack.empty()) { - _node_stack.top()->append(node); - } - _node_stack.push(node); + if (!m_nodeStack.empty()) + m_nodeStack.top()->append(node); + m_nodeStack.push(node); } void append(const End &) { - Node *node = _node_stack.pop(); - if (_node_stack.empty()) { - XmlTag xml_tag = readTag(); - if (xml_tag._tag_name != node->getQualifiedName() || xml_tag._end_tag) { + Node *node = m_nodeStack.pop(); + if (m_nodeStack.empty()) { + XmlTag xmlTag = readTag(); + if (xmlTag.m_tagName != node->qualifiedName() || xmlTag.m_isEndTag) throw FileFormatException(); - } - node->accept(*this, xml_tag); + node->accept(*this, xmlTag); delete node; } } @@ -397,81 +340,78 @@ public: template<class T, class U> void append(const Base<T, U> &base) { - _node_stack.top()->append(new BaseNode<T, U>(base)); + m_nodeStack.top()->append(new BaseNode<T, U>(base)); } template<typename T> void append(const Attr<T> &attr) { - _node_stack.top()->append(new AttrNode<T>(attr)); + m_nodeStack.top()->append(new AttrNode<T>(attr)); } template<class U, typename T> void append(const SetterAttr<U, T> &attr) { - _node_stack.top()->append(new SetterAttrNode<U, T>(attr)); + m_nodeStack.top()->append(new SetterAttrNode<U, T>(attr)); } template<class U, typename T, typename V> void append(const GetterSetterAttr<U, T, V> &attr) { - _node_stack.top()->append(new GetterSetterAttrNode<U, T, V>(attr)); + m_nodeStack.top()->append(new GetterSetterAttrNode<U, T, V>(attr)); } template<class U, typename T> void append(const SetFuncAttr<U, T> &attr) { - _node_stack.top()->append(new SetFuncAttrNode<U, T>(attr)); + m_nodeStack.top()->append(new SetFuncAttrNode<U, T>(attr)); } template<class U, typename T, typename V> void append(const GetSetFuncAttr<U, T, V> &attr) { - _node_stack.top()->append(new GetSetFuncAttrNode<U, T, V>(attr)); + m_nodeStack.top()->append(new GetSetFuncAttrNode<U, T, V>(attr)); } template<typename T> void append(const Ref<T> &ref) { - _node_stack.top()->append(new RefNode<T>(ref)); + m_nodeStack.top()->append(new RefNode<T>(ref)); } template<class U, typename T> void append(const SetterRef<U, T> &ref) { - _node_stack.top()->append(new SetterRefNode<U, T>(ref)); + m_nodeStack.top()->append(new SetterRefNode<U, T>(ref)); } template<class U, typename T, typename V> void append(const GetterSetterRef<U, T, V> &ref) { - _node_stack.top()->append(new GetterSetterRefNode<U, T, V>(ref)); + m_nodeStack.top()->append(new GetterSetterRefNode<U, T, V>(ref)); } template<class U, typename T> void append(const SetFuncRef<U, T> &ref) { - _node_stack.top()->append(new SetFuncRefNode<U, T>(ref)); + m_nodeStack.top()->append(new SetFuncRefNode<U, T>(ref)); } template<class U, typename T, typename V> void append(const GetSetFuncRef<U, T, V> &ref) { - _node_stack.top()->append(new GetSetFuncRefNode<U, T, V>(ref)); + m_nodeStack.top()->append(new GetSetFuncRefNode<U, T, V>(ref)); } -public: - #define QARK_READNUMBER(T, M) \ void read(T *i) \ { \ - QString s = _stream.readElementText(); \ - _end_tag_was_read = true; \ + QString s = m_stream.readElementText(); \ + m_endTagWasRead = true; \ bool ok = false; \ *i = s.M(&ok); \ - if (!ok) { \ + if (!ok) \ throw FileFormatException(); \ - } \ } QARK_READNUMBER(char, toInt) @@ -492,64 +432,66 @@ public: void read(bool *b) { - QString s = _stream.readElementText(); - _end_tag_was_read = true; - if (s == QLatin1String("true")) { + QString s = m_stream.readElementText(); + m_endTagWasRead = true; + if (s == QLatin1String("true")) *b = true; - } else if (s == QLatin1String("false")) { + else if (s == QLatin1String("false")) *b = false; - } else { + else throw FileFormatException(); - } } void read(QString *s) { - *s = _stream.readElementText(); - _end_tag_was_read = true; + *s = m_stream.readElementText(); + m_endTagWasRead = true; } -public: - enum ReferenceKind { - NULLPOINTER, - POINTER, - INSTANCE + Nullpointer, + Pointer, + Instance }; - struct ReferenceTag { - explicit ReferenceTag(ReferenceKind k = NULLPOINTER, const QString &string = QLatin1String("")) : kind(k), type_name(string) { } + class ReferenceTag + { + public: + explicit ReferenceTag(ReferenceKind k = Nullpointer, + const QString &string = QLatin1String("")) + : kind(k), + typeName(string) + { + } ReferenceKind kind; - QString type_name; + QString typeName; }; ReferenceTag readReferenceTag() { XmlTag tag = readTag(); - if (tag._tag_name == QLatin1String("null")) { - return ReferenceTag(NULLPOINTER); - } else if (tag._tag_name == QLatin1String("reference")) { - return ReferenceTag(POINTER); - } else if (tag._tag_name == QLatin1String("instance")) { - return ReferenceTag(INSTANCE, tag._attributes.value(QLatin1String("type"))); - } else { + if (tag.m_tagName == QLatin1String("null")) + return ReferenceTag(Nullpointer); + else if (tag.m_tagName == QLatin1String("reference")) + return ReferenceTag(Pointer); + else if (tag.m_tagName == QLatin1String("instance")) + return ReferenceTag(Instance, tag.m_attributes.value(QLatin1String("type"))); + else throw FileFormatException(); - } } void readReferenceEndTag(ReferenceKind kind) { XmlTag tag = readTag(); - if (!tag._end_tag) { + if (!tag.m_isEndTag) throw FileFormatException(); - } else if (tag._tag_name == QLatin1String("null") && kind != NULLPOINTER) { + else if (tag.m_tagName == QLatin1String("null") && kind != Nullpointer) throw FileFormatException(); - } else if (tag._tag_name == QLatin1String("reference") && kind != POINTER) { + else if (tag.m_tagName == QLatin1String("reference") && kind != Pointer) throw FileFormatException(); - } else if (tag._tag_name == QLatin1String("instance") && kind != INSTANCE) { + else if (tag.m_tagName == QLatin1String("instance") && kind != Instance) throw FileFormatException(); - } } template<typename T> @@ -559,42 +501,43 @@ public: int i; read(&i); id.set(i); - if (_loading_ref_map.hasObject(id)) { - p = _loading_ref_map.getObject<T *>(id); - } else { + if (m_loadingRefMap.hasObject(id)) + p = m_loadingRefMap.object<T *>(id); + else throw UnexpectedForwardReference(); - } } private: - struct XmlTag { - XmlTag() : _end_tag(false) { } - QString _tag_name; - bool _end_tag; - impl::ObjectId _id; - QHash<QString, QString> _attributes; + class XmlTag + { + public: + XmlTag() : m_isEndTag(false) { } + QString m_tagName; + bool m_isEndTag; + impl::ObjectId m_id; + QHash<QString, QString> m_attributes; }; void readChildren(Node *node) { for (;;) { - XmlTag xml_tag = readTag(); - if (xml_tag._end_tag) { - if (xml_tag._tag_name != node->getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (xmlTag.m_isEndTag) { + if (xmlTag.m_tagName != node->qualifiedName()) throw FileFormatException(); - } return; } else { - bool found_tag = false; - for (Node::children_type::const_iterator it = node->getChildren().begin(); it != node->getChildren().end(); ++it) { - if ((*it)->getQualifiedName() == xml_tag._tag_name) { - found_tag = true; - (*it)->accept(*this, xml_tag); + bool foundTag = false; + for (Node::ChildrenType::const_iterator it = node->children().begin(); + it != node->children().end(); ++it) + { + if ((*it)->qualifiedName() == xmlTag.m_tagName) { + foundTag = true; + (*it)->accept(*this, xmlTag); } } - if (!found_tag) { - skipUntilEndOfTag(xml_tag); - } + if (!foundTag) + skipUntilEndOfTag(xmlTag); } } } @@ -612,330 +555,303 @@ private: template<class T> void visit(ObjectNode<T> *node, const XmlTag &tag) { - if (tag._id.isValid() && node->getObject().getObject() != 0) { - _loading_ref_map.addObject(tag._id, node->getObject().getObject()); - } + if (tag.m_id.isValid() && node->object().object() != 0) + m_loadingRefMap.addObject(tag.m_id, node->object().object()); readChildren(node); } template<class T, class U> void visit(BaseNode<T, U> *node, const XmlTag &) { - load(*this, node->getBase().getBase(), node->getBase().getParameters()); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getBase().getQualifiedName()) { + load(*this, node->base().base(), node->base().parameters()); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->base().qualifiedName()) throw FileFormatException(); - } } template<class T> void visit(AttrNode<T> *node, const XmlTag &) { - load(*this, *node->getAttribute().getValue(), node->getAttribute().getParameters()); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, *node->attribute().value(), node->attribute().parameters()); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetterAttrNode<U, T> *node, const XmlTag &) { T value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getObject().*(node->getAttribute().getSetter()))(value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().object().*(node->attribute().setter()))(value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetterAttrNode<U, const T &> *node, const XmlTag &) { T value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getObject().*(node->getAttribute().getSetter()))(value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().object().*(node->attribute().setter()))(value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetterSetterAttrNode<U, T, V> *node, const XmlTag &) { V value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getObject().*(node->getAttribute().getSetter()))(value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().object().*(node->attribute().setter()))(value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetterSetterAttrNode<U, T, const V &> *node, const XmlTag &) { V value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getObject().*(node->getAttribute().getSetter()))(value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().object().*(node->attribute().setter()))(value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetFuncAttrNode<U, T> *node, const XmlTag &) { T value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getSetFunc())(node->getAttribute().getObject(), value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().setterFunc())(node->attribute().object(), value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetFuncAttrNode<U, const T &> *node, const XmlTag &) { T value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getSetFunc())(node->getAttribute().getObject(), value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().setterFunc())(node->attribute().object(), value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetSetFuncAttrNode<U, T, V> *node, const XmlTag &) { V value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getSetFunc())(node->getAttribute().getObject(), value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().setterFunc())(node->attribute().object(), value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetSetFuncAttrNode<U, T, const V &> *node, const XmlTag &) { V value; - load(*this, value, node->getAttribute().getParameters()); - (node->getAttribute().getSetFunc())(node->getAttribute().getObject(), value); - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getAttribute().getQualifiedName()) { + load(*this, value, node->attribute().parameters()); + (node->attribute().setterFunc())(node->attribute().object(), value); + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->attribute().qualifiedName()) throw FileFormatException(); - } } template<typename T> void visit(RefNode<T> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; T value = T(); - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - *node->getReference().getValue() = value; - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + *node->reference().value() = value; + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetterRefNode<U, T> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; T value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getObject().*(node->getReference().getSetter()))(value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().object().*(node->reference().setter()))(value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetterRefNode<U, T const &> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; T value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getObject().*(node->getReference().getSetter()))(value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().object().*(node->reference().setter()))(value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetterSetterRefNode<U, T, V> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; V value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getObject().*(node->getReference().getSetter()))(value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().object().*(node->reference().setter()))(value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetterSetterRefNode<U, T, V const &> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; V value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getObject().*(node->getReference().getSetter()))(value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().object().*(node->reference().setter()))(value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetFuncRefNode<U, T> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; T value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getSetFunc())(node->getReference().getObject(), value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().setterFunc())(node->reference().object(), value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T> void visit(SetFuncRefNode<U, T const &> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; T value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getSetFunc())(node->getReference().getObject(), value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().setterFunc())(node->reference().object(), value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetSetFuncRefNode<U, T, V> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; V value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getSetFunc())(node->getReference().getObject(), value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().setterFunc())(node->reference().object(), value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } template<class U, typename T, typename V> void visit(GetSetFuncRefNode<U, T, V const &> *node, const XmlTag &) { - _current_ref_node = node; + m_currentRefNode = node; V value; - load(*this, value, node->getReference().getParameters()); - if (_current_ref_node != 0) { // ref node was not consumed by forward reference - (node->getReference().getSetFunc())(node->getReference().getObject(), value); - _current_ref_node = 0; + load(*this, value, node->reference().parameters()); + if (m_currentRefNode != 0) { // ref node was not consumed by forward reference + (node->reference().setterFunc())(node->reference().object(), value); + m_currentRefNode = 0; } - XmlTag xml_tag = readTag(); - if (!xml_tag._end_tag || xml_tag._tag_name != node->getReference().getQualifiedName()) { + XmlTag xmlTag = readTag(); + if (!xmlTag.m_isEndTag || xmlTag.m_tagName != node->reference().qualifiedName()) throw FileFormatException(); - } } -private: - inline XmlTag readTag(); + inline void skipUntilEndOfTag(const XmlTag &xmlTag); - inline void skipUntilEndOfTag(const XmlTag &xml_tag); - -private: - QXmlStreamReader &_stream; - bool _end_tag_was_read; - QStack<Node *> _node_stack; - impl::LoadingRefMap _loading_ref_map; - Node *_current_ref_node; + QXmlStreamReader &m_stream; + bool m_endTagWasRead; + QStack<Node *> m_nodeStack; + impl::LoadingRefMap m_loadingRefMap; + Node *m_currentRefNode; }; - QXmlInArchive::XmlTag QXmlInArchive::readTag() { - XmlTag xml_tag; + XmlTag xmlTag; - if (_end_tag_was_read) { - if (_stream.tokenType() != QXmlStreamReader::EndElement) { + if (m_endTagWasRead) { + if (m_stream.tokenType() != QXmlStreamReader::EndElement) throw FileFormatException(); - } - xml_tag._tag_name = _stream.name().toString(); - xml_tag._end_tag = true; - _end_tag_was_read = false; - return xml_tag; + xmlTag.m_tagName = m_stream.name().toString(); + xmlTag.m_isEndTag = true; + m_endTagWasRead = false; + return xmlTag; } - while (!_stream.atEnd()) { - switch (_stream.readNext()) { + while (!m_stream.atEnd()) { + switch (m_stream.readNext()) { case QXmlStreamReader::StartElement: - xml_tag._tag_name = _stream.name().toString(); - foreach (const QXmlStreamAttribute &attribute, _stream.attributes()) { + xmlTag.m_tagName = m_stream.name().toString(); + foreach (const QXmlStreamAttribute &attribute, m_stream.attributes()) { if (attribute.name() == QLatin1String("id")) { bool ok = false; int id = attribute.value().toString().toInt(&ok); - if (!ok) { + if (!ok) throw FileFormatException(); - } - xml_tag._id = impl::ObjectId(id); + xmlTag.m_id = impl::ObjectId(id); } else { - xml_tag._attributes.insert(attribute.name().toString(), attribute.value().toString()); + xmlTag.m_attributes.insert(attribute.name().toString(), + attribute.value().toString()); } } - return xml_tag; + return xmlTag; case QXmlStreamReader::EndElement: - xml_tag._tag_name = _stream.name().toString(); - xml_tag._end_tag = true; - return xml_tag; + xmlTag.m_tagName = m_stream.name().toString(); + xmlTag.m_isEndTag = true; + return xmlTag; case QXmlStreamReader::Comment: // intentionally left blank break; case QXmlStreamReader::Characters: - if (!_stream.isWhitespace()) { + if (!m_stream.isWhitespace()) throw FileFormatException(); - } break; default: throw FileFormatException(); @@ -944,23 +860,21 @@ QXmlInArchive::XmlTag QXmlInArchive::readTag() throw FileFormatException(); } -void QXmlInArchive::skipUntilEndOfTag(const XmlTag &xml_tag) +void QXmlInArchive::skipUntilEndOfTag(const XmlTag &xmlTag) { - if (_end_tag_was_read) { + if (m_endTagWasRead) throw FileFormatException(); - } int depth = 1; - while (!_stream.atEnd()) { - switch (_stream.readNext()) { + while (!m_stream.atEnd()) { + switch (m_stream.readNext()) { case QXmlStreamReader::StartElement: ++depth; break; case QXmlStreamReader::EndElement: --depth; if (depth == 0) { - if (_stream.name().toString() != xml_tag._tag_name) { + if (m_stream.name().toString() != xmlTag.m_tagName) throw FileFormatException(); - } return; } break; @@ -975,9 +889,8 @@ void QXmlInArchive::skipUntilEndOfTag(const XmlTag &xml_tag) } } throw FileFormatException(); - } -} +} // namespace qark #endif // QARK_XMLINARCHIVE_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmloutarchive.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmloutarchive.h index bc00e512a3..67a84c2ff1 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmloutarchive.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/qxmloutarchive.h @@ -41,57 +41,46 @@ #include <QXmlStreamWriter> #include <exception> - namespace qark { -class QXmlOutArchive : - public ArchiveBasics +class QXmlOutArchive : public ArchiveBasics { public: - - class UnsupportedForwardReference : - public std::exception + class UnsupportedForwardReference : public std::exception { }; - class DanglingReferences : - public std::exception + class DanglingReferences : public std::exception { }; - static const bool in_archive = false; - static const bool out_archive = true; - -public: + static const bool inArchive = false; + static const bool outArchive = true; QXmlOutArchive(QXmlStreamWriter &stream) - : _stream(stream), - _next_pointer_is_reference(false) + : m_stream(stream), + m_isNextPointerAReference(false) { } ~QXmlOutArchive() { - if (_saving_ref_map.countDanglingReferences() > 0) { + if (m_savingRefMap.countDanglingReferences() > 0) throw DanglingReferences(); - } } -public: - template<typename T> void write(T *p) { - if (!_saving_ref_map.hasDefinedRef(p)) { + if (!m_savingRefMap.hasDefinedRef(p)) throw UnsupportedForwardReference(); - } - write(_saving_ref_map.getRef(p).get()); + write(m_savingRefMap.ref(p).get()); } #define QARK_WRITENUMBER(T) \ void write(T i) \ { \ - _stream.writeCharacters(QString::number(i)); \ + m_stream.writeCharacters(QString::number(i)); \ } QARK_WRITENUMBER(char) @@ -112,35 +101,33 @@ public: void write(bool b) { - _stream.writeCharacters(QLatin1String(b ? "true" : "false")); + m_stream.writeCharacters(QLatin1String(b ? "true" : "false")); } void write(const QString &s) { - _stream.writeCharacters(s); + m_stream.writeCharacters(s); } -public: - void beginDocument() { - _stream.writeStartDocument(); + m_stream.writeStartDocument(); } void endDocument() { - _stream.writeEndDocument(); + m_stream.writeEndDocument(); } void beginElement(const Tag &tag) { - _stream.writeStartElement(tag.getQualifiedName()); + m_stream.writeStartElement(tag.qualifiedName()); } template<class T> void beginElement(const Object<T> &object) { - _stream.writeStartElement(object.getQualifiedName()); + m_stream.writeStartElement(object.qualifiedName()); // TODO implement key attribute // Currently qmodel files do not use references at all // so writing reference keys are not needed. If this @@ -151,199 +138,199 @@ public: void endElement(const End &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class T, class U> void beginBase(const Base<T, U> &base) { - _stream.writeStartElement(base.getQualifiedName()); + m_stream.writeStartElement(base.qualifiedName()); } template<class T, class U> void endBase(const Base<T, U> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class T> void beginAttribute(const Attr<T> &attr) { - _stream.writeStartElement(attr.getQualifiedName()); + m_stream.writeStartElement(attr.qualifiedName()); } template<class T> void endAttribute(const Attr<T> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class U, typename T> void beginAttribute(const GetterAttr<U, T> &attr) { - _stream.writeStartElement(attr.getQualifiedName()); + m_stream.writeStartElement(attr.qualifiedName()); } template<class U, typename T> void endAttribute(const GetterAttr<U, T> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class U, typename T, typename V> void beginAttribute(const GetterSetterAttr<U, T, V> &attr) { - _stream.writeStartElement(attr.getQualifiedName()); + m_stream.writeStartElement(attr.qualifiedName()); } template<class U, typename T, typename V> void endAttribute(const GetterSetterAttr<U, T, V> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class U, typename T> void beginAttribute(const GetFuncAttr<U, T> &attr) { - _stream.writeStartElement(attr.getQualifiedName()); + m_stream.writeStartElement(attr.qualifiedName()); } template<class U, typename T> void endAttribute(const GetFuncAttr<U, T> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class U, typename T, typename V> void beginAttribute(const GetSetFuncAttr<U, T, V> &attr) { - _stream.writeStartElement(attr.getQualifiedName()); + m_stream.writeStartElement(attr.qualifiedName()); } template<class U, typename T, typename V> void endAttribute(const GetSetFuncAttr<U, T, V> &) { - _stream.writeEndElement(); + m_stream.writeEndElement(); } template<class T> void beginReference(const Ref<T> &ref) { - _stream.writeStartElement(ref.getQualifiedName()); - _next_pointer_is_reference = true; + m_stream.writeStartElement(ref.qualifiedName()); + m_isNextPointerAReference = true; } template<class T> void endReference(const Ref<T> &) { - _next_pointer_is_reference = false; - _stream.writeEndElement(); + m_isNextPointerAReference = false; + m_stream.writeEndElement(); } template<class U, typename T> void beginReference(const GetterRef<U, T> &ref) { - _stream.writeStartElement(ref.getQualifiedName()); - _next_pointer_is_reference = true; + m_stream.writeStartElement(ref.qualifiedName()); + m_isNextPointerAReference = true; } template<class U, typename T> void endReference(const GetterRef<U, T> &) { - _next_pointer_is_reference = false; - _stream.writeEndElement(); + m_isNextPointerAReference = false; + m_stream.writeEndElement(); } template<class U, typename T, typename V> void beginReference(const GetterSetterRef<U, T, V> &ref) { - _stream.writeStartElement(ref.getQualifiedName()); - _next_pointer_is_reference = true; + m_stream.writeStartElement(ref.qualifiedName()); + m_isNextPointerAReference = true; } template<class U, typename T, typename V> void endReference(const GetterSetterRef<U, T, V> &) { - _next_pointer_is_reference = false; - _stream.writeEndElement(); + m_isNextPointerAReference = false; + m_stream.writeEndElement(); } template<class U, typename T> void beginReference(const GetFuncRef<U, T> &ref) { - _stream.writeStartElement(ref.getQualifiedName()); - _next_pointer_is_reference = true; + m_stream.writeStartElement(ref.qualifiedName()); + m_isNextPointerAReference = true; } template<class U, typename T> void endReference(const GetFuncRef<U, T> &) { - _next_pointer_is_reference = false; - _stream.writeEndElement(); + m_isNextPointerAReference = false; + m_stream.writeEndElement(); } template<class U, typename T, typename V> void beginReference(const GetSetFuncRef<U, T, V> &ref) { - _stream.writeStartElement(ref.getQualifiedName()); - _next_pointer_is_reference = true; + m_stream.writeStartElement(ref.qualifiedName()); + m_isNextPointerAReference = true; } template<class U, typename T, typename V> void endReference(const GetSetFuncRef<U, T, V> &) { - _next_pointer_is_reference = false; - _stream.writeEndElement(); + m_isNextPointerAReference = false; + m_stream.writeEndElement(); } template<typename T> bool isReference(T *p) { - return _next_pointer_is_reference || _saving_ref_map.hasDefinedRef(p); + return m_isNextPointerAReference || m_savingRefMap.hasDefinedRef(p); } void beginNullPointer() { - _stream.writeStartElement(QLatin1String("null")); + m_stream.writeStartElement(QLatin1String("null")); } void endNullPointer() { - _stream.writeEndElement(); + m_stream.writeEndElement(); } void beginPointer() { - _stream.writeStartElement(QLatin1String("reference")); + m_stream.writeStartElement(QLatin1String("reference")); } void endPointer() { - _stream.writeEndElement(); + m_stream.writeEndElement(); } void beginInstance() { - _stream.writeStartElement(QLatin1String("instance")); + m_stream.writeStartElement(QLatin1String("instance")); } - void beginInstance(const QString &type_uid) + void beginInstance(const QString &typeUid) { - _stream.writeStartElement(QLatin1String("instance")); - _stream.writeAttribute(QLatin1String("type"), type_uid); + m_stream.writeStartElement(QLatin1String("instance")); + m_stream.writeAttribute(QLatin1String("type"), typeUid); } void endInstance() { - _stream.writeEndElement(); + m_stream.writeEndElement(); } private: - QXmlStreamWriter &_stream; - impl::SavingRefMap _saving_ref_map; - bool _next_pointer_is_reference; + QXmlStreamWriter &m_stream; + impl::SavingRefMap m_savingRefMap; + bool m_isNextPointerAReference; }; -} +} // namespace qark #endif // QARK_QXMLOUTARCHIVE_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/reference.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/reference.h index d631c3f294..e3b1f40b4f 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/reference.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/reference.h @@ -38,391 +38,394 @@ namespace qark { template<typename T> -class Ref { +class Ref +{ public: - Ref(const QString &qualified_name, T *value) - : _qualified_name(qualified_name), - _value(value) + Ref(const QString &qualifiedName, T *value) + : m_qualifiedName(qualifiedName), + m_value(value) { } - Ref(const QString &qualified_name, T *value, const Parameters ¶meters) - : _qualified_name(qualified_name), - _value(value), - _parameters(parameters) + Ref(const QString &qualifiedName, T *value, const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_value(value), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - T *getValue() const { return _value; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + T *value() const { return m_value; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - T *_value; - Parameters _parameters; + QString m_qualifiedName; + T *m_value; + Parameters m_parameters; }; template<typename T> -Ref<T * const> ref(const QString &qualified_name, T * const &value) +Ref<T * const> ref(const QString &qualifiedName, T * const &value) { - return Ref<T * const>(qualified_name, &value); + return Ref<T * const>(qualifiedName, &value); } template<typename T> -Ref<T * const> ref(const QString &qualified_name, T * const &value, const Parameters ¶meters) +Ref<T * const> ref(const QString &qualifiedName, T * const &value, const Parameters ¶meters) { - return Ref<T * const>(qualified_name, &value, parameters); + return Ref<T * const>(qualifiedName, &value, parameters); } template<typename T> -Ref<T *> ref(const QString &qualified_name, T *&value) +Ref<T *> ref(const QString &qualifiedName, T *&value) { - return Ref<T *>(qualified_name, &value); + return Ref<T *>(qualifiedName, &value); } template<typename T> -Ref<T *> ref(const QString &qualified_name, T *&value, const Parameters ¶meters) +Ref<T *> ref(const QString &qualifiedName, T *&value, const Parameters ¶meters) { - return Ref<T *>(qualified_name, &value, parameters); + return Ref<T *>(qualifiedName, &value, parameters); } - template<class U, typename T> -class GetterRef { +class GetterRef +{ public: - GetterRef(const QString &qualified_name, const U &u, T (U::*getter)() const) - : _qualified_name(qualified_name), - _u(u), - _getter(getter) + GetterRef(const QString &qualifiedName, const U &u, T (U::*getter)() const) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter) { } - GetterRef(const QString &qualified_name, const U &u, T (U::*getter)() const, const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _parameters(parameters) + GetterRef(const QString &qualifiedName, const U &u, T (U::*getter)() const, + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - const U &getObject() const { return _u; } - - T (U::*getGetter() const)() const { return _getter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + const U &object() const { return m_u; } + T (U::*getter() const)() const { return m_getter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - const U &_u; - T (U::*_getter)() const; - Parameters _parameters; + QString m_qualifiedName; + const U &m_u; + T (U::*m_getter)() const; + Parameters m_parameters; }; template<class U, typename T> -GetterRef<U, T *> ref(const QString &qualified_name, const U &u, T *(U::*getter)() const) +GetterRef<U, T *> ref(const QString &qualifiedName, const U &u, T *(U::*getter)() const) { - return GetterRef<U, T *>(qualified_name, u, getter); + return GetterRef<U, T *>(qualifiedName, u, getter); } template<class U, typename T> -GetterRef<U, T *> ref(const QString &qualified_name, const U &u, T *(U::*getter)() const, const Parameters ¶meters) +GetterRef<U, T *> ref(const QString &qualifiedName, const U &u, T *(U::*getter)() const, + const Parameters ¶meters) { - return GetterRef<U, T *>(qualified_name, u, getter, parameters); + return GetterRef<U, T *>(qualifiedName, u, getter, parameters); } - template<class U, typename T> -class SetterRef { +class SetterRef +{ public: - SetterRef(const QString &qualified_name, U &u, void (U::*setter)(T)) - : _qualified_name(qualified_name), - _u(u), - _setter(setter) + SetterRef(const QString &qualifiedName, U &u, void (U::*setter)(T)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setter(setter) { } - SetterRef(const QString &qualified_name, U &u, void (U::*setter)(T), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _setter(setter), - _parameters(parameters) + SetterRef(const QString &qualifiedName, U &u, void (U::*setter)(T), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setter(setter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - void (U::*getSetter() const)(T) { return _setter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + void (U::*setter() const)(T) { return m_setter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - void (U::*_setter)(T); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + void (U::*m_setter)(T); + Parameters m_parameters; }; template<class U, class T> -SetterRef<U, T *> ref(const QString &qualified_name, U &u, void (U::*setter)(T *)) +SetterRef<U, T *> ref(const QString &qualifiedName, U &u, void (U::*setter)(T *)) { - return SetterRef<U, T *>(qualified_name, u, setter); + return SetterRef<U, T *>(qualifiedName, u, setter); } template<class U, class T> -SetterRef<U, T *> ref(const QString &qualified_name, U &u, void (U::*setter)(T *), const Parameters ¶meters) +SetterRef<U, T *> ref(const QString &qualifiedName, U &u, void (U::*setter)(T *), + const Parameters ¶meters) { - return SetterRef<U, T *>(qualified_name, u, setter, parameters); + return SetterRef<U, T *>(qualifiedName, u, setter, parameters); } template<class U, class T> -SetterRef<U, T * const &> ref(const QString &qualified_name, U &u, void (U::*setter)(T * const &)) +SetterRef<U, T * const &> ref(const QString &qualifiedName, U &u, void (U::*setter)(T * const &)) { - return SetterRef<U, T * const &>(qualified_name, u, setter); + return SetterRef<U, T * const &>(qualifiedName, u, setter); } template<class U, class T> -SetterRef<U, T * const &> ref(const QString &qualified_name, U &u, void (U::*setter)(T * const &), const Parameters ¶meters) +SetterRef<U, T * const &> ref(const QString &qualifiedName, U &u, void (U::*setter)(T * const &), + const Parameters ¶meters) { - return SetterRef<U, T * const &>(qualified_name, u, setter, parameters); + return SetterRef<U, T * const &>(qualifiedName, u, setter, parameters); } - template<class U, typename T, typename V> -class GetterSetterRef { +class GetterSetterRef +{ public: - GetterSetterRef(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V)) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _setter(setter) + GetterSetterRef(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_setter(setter) { } - GetterSetterRef(const QString &qualified_name, U &u, T (U::*getter)() const, void (U::*setter)(V), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _getter(getter), - _setter(setter), - _parameters(parameters) + GetterSetterRef(const QString &qualifiedName, U &u, T (U::*getter)() const, + void (U::*setter)(V), const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getter(getter), + m_setter(setter), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - T (U::*getGetter() const)() const { return _getter; } - - void (U::*getSetter() const)(V) { return _setter; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + T (U::*getter() const)() const { return m_getter; } + void (U::*setter() const)(V) { return m_setter; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - T (U::*_getter)() const; - void (U::*_setter)(V); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + T (U::*m_getter)() const; + void (U::*m_setter)(V); + Parameters m_parameters; }; template<class U, typename T, typename V> -GetterSetterRef<U, T *, V *> ref(const QString &qualified_name, U &u, T *(U::*getter)() const, void (U::*setter)(V *)) +GetterSetterRef<U, T *, V *> ref(const QString &qualifiedName, U &u, T *(U::*getter)() const, + void (U::*setter)(V *)) { - return GetterSetterRef<U, T *, V *>(qualified_name, u, getter, setter); + return GetterSetterRef<U, T *, V *>(qualifiedName, u, getter, setter); } template<class U, typename T, typename V> -GetterSetterRef<U, T *, V *> ref(const QString &qualified_name, U &u, T *(U::*getter)() const, void (U::*setter)(V *), const Parameters ¶meters) +GetterSetterRef<U, T *, V *> ref(const QString &qualifiedName, U &u, T *(U::*getter)() const, + void (U::*setter)(V *), const Parameters ¶meters) { - return GetterSetterRef<U, T *, V *>(qualified_name, u, getter, setter, parameters); + return GetterSetterRef<U, T *, V *>(qualifiedName, u, getter, setter, parameters); } template<class U, typename T, typename V> -GetterSetterRef<U, T *, V * const &> ref(const QString &qualified_name, U &u, T *(U::*getter)() const, void (U::*setter)(V * const &)) +GetterSetterRef<U, T *, V * const &> ref(const QString &qualifiedName, U &u, + T *(U::*getter)() const, void (U::*setter)(V * const &)) { - return GetterSetterRef<U, T *, V * const &>(qualified_name, u, getter, setter); + return GetterSetterRef<U, T *, V * const &>(qualifiedName, u, getter, setter); } template<class U, typename T, typename V> -GetterSetterRef<U, T *, V * const &> ref(const QString &qualified_name, U &u, T *(U::*getter)() const, void (U::*setter)(V * const &), const Parameters ¶meters) +GetterSetterRef<U, T *, V * const &> ref(const QString &qualifiedName, U &u, + T *(U::*getter)() const, void (U::*setter)(V * const &), + const Parameters ¶meters) { - return GetterSetterRef<U, T *, V * const &>(qualified_name, u, getter, setter, parameters); + return GetterSetterRef<U, T *, V * const &>(qualifiedName, u, getter, setter, parameters); } - template<class U, typename T> -class GetFuncRef { +class GetFuncRef +{ public: - GetFuncRef(const QString &qualified_name, const U &u, T (*get_func)(const U &)) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func) + GetFuncRef(const QString &qualifiedName, const U &u, T (*func)(const U &)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func) { } - GetFuncRef(const QString &qualified_name, const U &u, T (*get_func)(const U &), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _parameters(parameters) + GetFuncRef(const QString &qualifiedName, const U &u, T (*func)(const U &), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - const U &getObject() const { return _u; } - - T (*getGetFunc() const)(const U &) { return _get_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + const U &object() const { return m_u; } + T (*getterFunc() const)(const U &) { return m_getFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - const U &_u; - T (*_get_func)(const U &); - Parameters _parameters; + QString m_qualifiedName; + const U &m_u; + T (*m_getFunc)(const U &); + Parameters m_parameters; }; template<class U, typename T> -GetFuncRef<U, T *> ref(const QString &qualified_name, const U &u, T *(*get_func)(const U &)) +GetFuncRef<U, T *> ref(const QString &qualifiedName, const U &u, T *(*func)(const U &)) { - return GetFuncRef<U, T *>(qualified_name, u, get_func); + return GetFuncRef<U, T *>(qualifiedName, u, func); } template<class U, typename T> -GetFuncRef<U, T *> ref(const QString &qualified_name, const U &u, T *(*get_func)(const U &), const Parameters ¶meters) +GetFuncRef<U, T *> ref(const QString &qualifiedName, const U &u, T *(*func)(const U &), + const Parameters ¶meters) { - return GetFuncRef<U, T *>(qualified_name, u, get_func, parameters); + return GetFuncRef<U, T *>(qualifiedName, u, func, parameters); } - template<class U, typename T> -class SetFuncRef { +class SetFuncRef +{ public: - SetFuncRef(const QString &qualified_name, U &u, void (*set_func)(U &, T)) - : _qualified_name(qualified_name), - _u(u), - _set_func(set_func) + SetFuncRef(const QString &qualifiedName, U &u, void (*setFunc)(U &, T)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setFunc(setFunc) { } - SetFuncRef(const QString &qualified_name, U &u, void (*set_func)(U &, T), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _set_func(set_func), - _parameters(parameters) + SetFuncRef(const QString &qualifiedName, U &u, void (*setFunc)(U &, T), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_setFunc(setFunc), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - void (*getSetFunc() const)(U &, T) { return _set_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + void (*setterFunc() const)(U &, T) { return m_setFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - void (*_set_func)(U &, T); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + void (*m_setFunc)(U &, T); + Parameters m_parameters; }; template<class U, class T> -SetFuncRef<U, T *> ref(const QString &qualified_name, U &u, void (*set_func)(U &, T *)) +SetFuncRef<U, T *> ref(const QString &qualifiedName, U &u, void (*setFunc)(U &, T *)) { - return SetFuncRef<U, T *>(qualified_name, u, set_func); + return SetFuncRef<U, T *>(qualifiedName, u, setFunc); } template<class U, class T> -SetFuncRef<U, T *> ref(const QString &qualified_name, U &u, void (*set_func)(U &, T *), const Parameters ¶meters) +SetFuncRef<U, T *> ref(const QString &qualifiedName, U &u, void (*setFunc)(U &, T *), + const Parameters ¶meters) { - return SetFuncRef<U, T *>(qualified_name, u, set_func, parameters); + return SetFuncRef<U, T *>(qualifiedName, u, setFunc, parameters); } template<class U, class T> -SetFuncRef<U, T * const &> ref(const QString &qualified_name, U &u, void (*set_func)(U &, T * const &)) +SetFuncRef<U, T * const &> ref(const QString &qualifiedName, U &u, + void (*setFunc)(U &, T * const &)) { - return SetFuncRef<U, T * const &>(qualified_name, u, set_func); + return SetFuncRef<U, T * const &>(qualifiedName, u, setFunc); } template<class U, class T> -SetFuncRef<U, T * const &> ref(const QString &qualified_name, U &u, void (*set_func)(U &, T * const &), const Parameters ¶meters) +SetFuncRef<U, T * const &> ref(const QString &qualifiedName, U &u, + void (*setFunc)(U &, T * const &), const Parameters ¶meters) { - return SetFuncRef<U, T * const &>(qualified_name, u, set_func, parameters); + return SetFuncRef<U, T * const &>(qualifiedName, u, setFunc, parameters); } - template<class U, typename T, typename V> -class GetSetFuncRef { +class GetSetFuncRef +{ public: - GetSetFuncRef(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V)) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _set_func(set_func) + GetSetFuncRef(const QString &qualifiedName, U &u, T (*func)(const U &), void (*setFunc)(U &, V)) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_setFunc(setFunc) { } - GetSetFuncRef(const QString &qualified_name, U &u, T (*get_func)(const U &), void (*set_func)(U &, V), const Parameters ¶meters) - : _qualified_name(qualified_name), - _u(u), - _get_func(get_func), - _set_func(set_func), - _parameters(parameters) + GetSetFuncRef(const QString &qualifiedName, U &u, T (*func)(const U &), void (*setFunc)(U &, V), + const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_u(u), + m_getFunc(func), + m_setFunc(setFunc), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - U &getObject() const { return _u; } - - T (*getGetFunc() const)(const U &) { return _get_func; } - - void (*getSetFunc() const)(U &, V) { return _set_func; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + U &object() const { return m_u; } + T (*getterFunc() const)(const U &) { return m_getFunc; } + void (*setterFunc() const)(U &, V) { return m_setFunc; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - U &_u; - T (*_get_func)(const U &); - void (*_set_func)(U &, V); - Parameters _parameters; + QString m_qualifiedName; + U &m_u; + T (*m_getFunc)(const U &); + void (*m_setFunc)(U &, V); + Parameters m_parameters; }; template<class U, typename T, typename V> -GetSetFuncRef<U, T *, V *> ref(const QString &qualified_name, U &u, T *(*get_func)(const U &), void (*set_func)(U &, V *)) +GetSetFuncRef<U, T *, V *> ref(const QString &qualifiedName, U &u, T *(*func)(const U &), + void (*setFunc)(U &, V *)) { - return GetSetFuncRef<U, T *, V *>(qualified_name, u, get_func, set_func); + return GetSetFuncRef<U, T *, V *>(qualifiedName, u, func, setFunc); } template<class U, typename T, typename V> -GetSetFuncRef<U, T *, V *> ref(const QString &qualified_name, U &u, T *(*get_func)(const U &), void (*set_func)(U &, V *), const Parameters ¶meters) +GetSetFuncRef<U, T *, V *> ref(const QString &qualifiedName, U &u, T *(*func)(const U &), + void (*setFunc)(U &, V *), const Parameters ¶meters) { - return GetSetFuncRef<U, T *, V *>(qualified_name, u, get_func, set_func, parameters); + return GetSetFuncRef<U, T *, V *>(qualifiedName, u, func, setFunc, parameters); } template<class U, typename T, typename V> -GetSetFuncRef<U, T *, V * const &> ref(const QString &qualified_name, U &u, T *(*get_func)(const U &), void (*set_func)(U &, V * const &)) +GetSetFuncRef<U, T *, V * const &> ref(const QString &qualifiedName, U &u, T *(*func)(const U &), + void (*setFunc)(U &, V * const &)) { - return GetSetFuncRef<U, T *, V * const &>(qualified_name, u, get_func, set_func); + return GetSetFuncRef<U, T *, V * const &>(qualifiedName, u, func, setFunc); } template<class U, typename T, typename V> -GetSetFuncRef<U, T *, V * const &> ref(const QString &qualified_name, U &u, T *(*get_func)(const U &), void (*set_func)(U &, V * const &), const Parameters ¶meters) +GetSetFuncRef<U, T *, V * const &> ref(const QString &qualifiedName, U &u, T *(*func)(const U &), + void (*setFunc)(U &, V * const &), + const Parameters ¶meters) { - return GetSetFuncRef<U, T *, V * const &>(qualified_name, u, get_func, set_func, parameters); + return GetSetFuncRef<U, T *, V * const &>(qualifiedName, u, func, setFunc, parameters); } -} +} // namespace qark #endif // QARK_REFERENCE_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize.h index f471d3460f..6dfb05f5de 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize.h @@ -45,7 +45,6 @@ #include <type_traits> - // qark is (Q)t(Ar)chiving(K)it namespace qark { @@ -64,13 +63,13 @@ inline Archive &operator>>(Archive &archive, T &t) } template<class Archive, class T> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, T &t) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||(Archive &archive, T &t) { return archive << t; } template<class Archive, class T> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, T &t) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||(Archive &archive, T &t) { return archive >> t; } @@ -90,13 +89,13 @@ inline Archive &operator>>(Archive &archive, T (*f)()) } template<class Archive, class T> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, T (*f)()) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||(Archive &archive, T (*f)()) { return archive << f; } template<class Archive, class T> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, T (*f)()) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||(Archive &archive, T (*f)()) { return archive >> f; } @@ -116,13 +115,15 @@ inline Archive &operator>>(Archive &archive, const Tag &tag) } template<class Archive> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const Tag &tag) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const Tag &tag) { return archive << tag; } template<class Archive> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const Tag &tag) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const Tag &tag) { return archive >> tag; } @@ -142,13 +143,15 @@ inline Archive &operator>>(Archive &archive, const Object<T> &object) } template<class Archive, class T> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const Object<T> &object) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const Object<T> &object) { return archive << object; } template<class Archive, class T> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const Object<T> &object) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const Object<T> &object) { return archive >> object; } @@ -168,13 +171,15 @@ inline Archive &operator>>(Archive &archive, const End &end) } template<class Archive> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const End &end) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const End &end) { return archive << end; } template<class Archive> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const End &end) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const End &end) { return archive >> end; } @@ -183,7 +188,7 @@ template<class Archive, class T, class U> Archive &operator<<(Archive &archive, const Base<T, U> &base) { archive.beginBase(base); - archive << base.getBase(); + archive << base.base(); archive.endBase(base); return archive; } @@ -196,13 +201,15 @@ Archive &operator>>(Archive &archive, const Base<T, U> &base) } template<class Archive, class T, class U> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const Base<T, U> &base) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const Base<T, U> &base) { return archive << base; } template<class Archive, class T, class U> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const Base<T, U> &base) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const Base<T, U> &base) { return archive >> base; } @@ -211,7 +218,7 @@ template<class Archive, typename T> Archive &operator<<(Archive &archive, const Attr<T> &attr) { archive.beginAttribute(attr); - save(archive, *attr.getValue(), attr.getParameters()); + save(archive, *attr.value(), attr.parameters()); archive.endAttribute(attr); return archive; } @@ -224,13 +231,15 @@ Archive &operator>>(Archive &archive, const Attr<T> &attr) } template<class Archive, typename T> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const Attr<T> &attr) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const Attr<T> &attr) { return archive << attr; } template<class Archive, typename T> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const Attr<T> &attr) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const Attr<T> &attr) { return archive >> attr; } @@ -239,9 +248,9 @@ template<class Archive, class U, typename T> typename std::enable_if<!std::is_abstract<U>::value, Archive &>::type operator<<(Archive &archive, const GetterAttr<U, T> &attr) { - if (!((attr.getObject().*(attr.getGetter()))() == (U().*(attr.getGetter()))())) { + if (!((attr.object().*(attr.getter()))() == (U().*(attr.getter()))())) { archive.beginAttribute(attr); - save(archive, (attr.getObject().*(attr.getGetter()))(), attr.getParameters()); + save(archive, (attr.object().*(attr.getter()))(), attr.parameters()); archive.endAttribute(attr); } return archive; @@ -252,7 +261,7 @@ typename std::enable_if<std::is_abstract<U>::value, Archive &>::type operator<<(Archive &archive, const GetterAttr<U, T> &attr) { archive.beginAttribute(attr); - save(archive, (attr.getObject().*(attr.getGetter()))(), attr.getParameters()); + save(archive, (attr.object().*(attr.getter()))(), attr.parameters()); archive.endAttribute(attr); return archive; } @@ -269,9 +278,9 @@ template<class Archive, class U, typename T, typename V> typename std::enable_if<!std::is_abstract<U>::value, Archive &>::type operator<<(Archive &archive, const GetterSetterAttr<U, T, V> &attr) { - if (!((attr.getObject().*(attr.getGetter()))() == (U().*(attr.getGetter()))())) { + if (!((attr.object().*(attr.getter()))() == (U().*(attr.getter()))())) { archive.beginAttribute(attr); - save(archive, (attr.getObject().*(attr.getGetter()))(), attr.getParameters()); + save(archive, (attr.object().*(attr.getter()))(), attr.parameters()); archive.endAttribute(attr); } return archive; @@ -283,7 +292,7 @@ typename std::enable_if<std::is_abstract<U>::value, Archive &>::type operator<<(Archive &archive, const GetterSetterAttr<U, T, V> &attr) { archive.beginAttribute(attr); - save(archive, (attr.getObject().*(attr.getGetter()))(), attr.getParameters()); + save(archive, (attr.object().*(attr.getter()))(), attr.parameters()); archive.endAttribute(attr); return archive; } @@ -296,13 +305,15 @@ Archive &operator>>(Archive &archive, const GetterSetterAttr<U, T, V> &attr) } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const GetterSetterAttr<U, T, V> &attr) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const GetterSetterAttr<U, T, V> &attr) { return archive << attr; } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const GetterSetterAttr<U, T, V> &attr) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const GetterSetterAttr<U, T, V> &attr) { return archive >> attr; } @@ -311,7 +322,7 @@ template<class Archive, class U, typename T> Archive &operator<<(Archive &archive, const GetFuncAttr<U, T> &attr) { archive.beginAttribute(attr); - save(archive, ((*attr.getGetFunc())(attr.getObject())), attr.getParameters()); + save(archive, ((*attr.getterFunc())(attr.object())), attr.parameters()); archive.endAttribute(attr); return archive; } @@ -327,7 +338,7 @@ template<class Archive, class U, typename T, typename V> Archive &operator<<(Archive &archive, const GetSetFuncAttr<U, T, V> &attr) { archive.beginAttribute(attr); - save(archive, ((*attr.getGetFunc())(attr.getObject())), attr.getParameters()); + save(archive, ((*attr.getterFunc())(attr.object())), attr.parameters()); archive.endAttribute(attr); return archive; } @@ -340,13 +351,15 @@ Archive &operator>>(Archive &archive, const GetSetFuncAttr<U, T, V> &attr) } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const GetSetFuncAttr<U, T, V> &attr) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const GetSetFuncAttr<U, T, V> &attr) { return archive << attr; } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const GetSetFuncAttr<U, T, V> &attr) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const GetSetFuncAttr<U, T, V> &attr) { return archive >> attr; } @@ -355,7 +368,7 @@ template<class Archive, typename T> Archive &operator<<(Archive &archive, const Ref<T *> &ref) { archive.beginReference(ref); - save(archive, *ref.getValue(), ref.getParameters()); + save(archive, *ref.value(), ref.parameters()); archive.endReference(ref); return archive; } @@ -364,7 +377,7 @@ template<class Archive, typename T> Archive &operator<<(Archive &archive, const Ref<T * const> &ref) { archive.beginReference(ref); - save(archive, *ref.getValue(), ref.getParameters()); + save(archive, *ref.value(), ref.parameters()); archive.endReference(ref); return archive; } @@ -377,16 +390,18 @@ Archive &operator>>(Archive &archive, const Ref<T> &ref) } template<class Archive, typename T> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const Ref<T *> &ref) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const Ref<T *> &ref) { archive.beginReference(ref); - save(archive, *ref.getValue(), ref.getParameters()); + save(archive, *ref.value(), ref.parameters()); archive.endReference(ref); return archive; } template<class Archive, typename T> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const Ref<T> &ref) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const Ref<T> &ref) { return archive >> ref; } @@ -395,7 +410,7 @@ template<class Archive, class U, typename T> Archive &operator<<(Archive &archive, const GetterRef<U, T> &ref) { archive.beginReference(ref); - save(archive, (ref.getObject().*(ref.getGetter()))(), ref.getParameters()); + save(archive, (ref.object().*(ref.getter()))(), ref.parameters()); archive.endReference(ref); return archive; } @@ -411,7 +426,7 @@ template<class Archive, class U, typename T, typename V> Archive &operator<<(Archive &archive, const GetterSetterRef<U, T, V> &ref) { archive.beginReference(ref); - save(archive, (ref.getObject().*(ref.getGetter()))(), ref.getParameters()); + save(archive, (ref.object().*(ref.getter()))(), ref.parameters()); archive.endReference(ref); return archive; } @@ -424,13 +439,15 @@ Archive &operator>>(Archive &archive, const GetterSetterRef<U, T, V> &ref) } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const GetterSetterRef<U, T, V> &ref) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const GetterSetterRef<U, T, V> &ref) { return archive << ref; } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const GetterSetterRef<U, T, V> &ref) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const GetterSetterRef<U, T, V> &ref) { return archive >> ref; } @@ -439,7 +456,7 @@ template<class Archive, class U, typename T> Archive &operator<<(Archive &archive, const GetFuncRef<U, T> &ref) { archive.beginReference(ref); - save(archive, ref.getGetFunc()(ref.getObject()), ref.getParameters()); + save(archive, ref.getterFunc()(ref.object()), ref.parameters()); archive.endReference(ref); return archive; } @@ -455,7 +472,7 @@ template<class Archive, class U, typename T, typename V> Archive &operator<<(Archive &archive, const GetSetFuncRef<U, T, V> &ref) { archive.beginReference(ref); - save(archive, ref.getGetFunc()(ref.getObject()), ref.getParameters()); + save(archive, ref.getterFunc()(ref.object()), ref.parameters()); archive.endReference(ref); return archive; } @@ -468,17 +485,19 @@ Archive &operator>>(Archive &archive, const GetSetFuncRef<U, T, V> &ref) } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::out_archive, Archive &>::type operator||(Archive &archive, const GetSetFuncRef<U, T, V> &ref) +typename std::enable_if<Archive::outArchive, Archive &>::type operator||( + Archive &archive, const GetSetFuncRef<U, T, V> &ref) { return archive << ref; } template<class Archive, class U, typename T, typename V> -typename std::enable_if<Archive::in_archive, Archive &>::type operator||(Archive &archive, const GetSetFuncRef<U, T, V> &ref) +typename std::enable_if<Archive::inArchive, Archive &>::type operator||( + Archive &archive, const GetSetFuncRef<U, T, V> &ref) { return archive >> ref; } -} +} // namespace qark #endif // QARK_SERIALIZE_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_basic.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_basic.h index 05d3e82d48..e1863313ab 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_basic.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_basic.h @@ -40,7 +40,6 @@ #include <QRectF> #include <QDateTime> - #define QARK_BASIC_SAVELOAD(TYPE) \ template<class Archive> \ inline void save(Archive &archive, TYPE v, const Parameters &) \ @@ -53,7 +52,6 @@ archive.read(&v); \ } - namespace qark { QARK_BASIC_SAVELOAD(char) @@ -76,7 +74,6 @@ QARK_BASIC_SAVELOAD(QString) #undef QARK_BASIC_SAVELOAD - // QPointF template<class Archive> @@ -90,18 +87,19 @@ inline void load(Archive &archive, QPointF &point, const Parameters &) { QString s; archive.read(&s); - if (QStringParser(s).parse(QStringLiteral("x:%1;y:%2")).arg(point, &QPointF::setX).arg(point, &QPointF::setY).failed()) { + if (QStringParser(s).parse(QStringLiteral("x:%1;y:%2")) + .arg(point, &QPointF::setX).arg(point, &QPointF::setY).failed()) { throw typename Archive::FileFormatException(); } } - // QRectF template<class Archive> inline void save(Archive &archive, const QRectF &rect, const Parameters &) { - archive.write(QString(QStringLiteral("x:%1;y:%2;w:%3;h:%4")).arg(rect.x()).arg(rect.y()).arg(rect.width()).arg(rect.height())); + archive.write(QString(QStringLiteral("x:%1;y:%2;w:%3;h:%4")) + .arg(rect.x()).arg(rect.y()).arg(rect.width()).arg(rect.height())); } template<class Archive> @@ -109,28 +107,29 @@ inline void load(Archive &archive, QRectF &point, const Parameters &) { QString s; archive.read(&s); - if (QStringParser(s).parse(QStringLiteral("x:%1;y:%2;w:%3;h:%4")).arg(point, &QRectF::setX).arg(point, &QRectF::setY).arg(point, &QRectF::setWidth).arg(point, &QRectF::setHeight).failed()) { + if (QStringParser(s).parse(QStringLiteral("x:%1;y:%2;w:%3;h:%4")) + .arg(point, &QRectF::setX).arg(point, &QRectF::setY) + .arg(point, &QRectF::setWidth).arg(point, &QRectF::setHeight).failed()) { throw typename Archive::FileFormatException(); } } - // QDateTime template<class Archive> -inline void save(Archive &archive, const QDateTime &date_time, const Parameters &) +inline void save(Archive &archive, const QDateTime &dateTime, const Parameters &) { - archive << date_time.toMSecsSinceEpoch(); + archive << dateTime.toMSecsSinceEpoch(); } template<class Archive> -inline void load(Archive &archive, QDateTime &date_time, const Parameters &) +inline void load(Archive &archive, QDateTime &dateTime, const Parameters &) { qint64 t; archive >> t; - date_time = QDateTime::fromMSecsSinceEpoch(t); + dateTime = QDateTime::fromMSecsSinceEpoch(t); } -} +} // namespace qark #endif // QARK_SERIALIZE_BASIC_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_container.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_container.h index be6bb3d4e9..771407dcbd 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_container.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_container.h @@ -40,16 +40,14 @@ namespace qark { static Flag ENFORCE_REFERENCED_ITEMS; - // QList template<class Archive, class T> inline void save(Archive &archive, const QList<T> &list, const Parameters &) { archive << tag("qlist"); - foreach (const T &t, list) { + foreach (const T &t, list) archive << attr(QStringLiteral("item"), t); - } archive << end; } @@ -58,13 +56,11 @@ inline void save(Archive &archive, const QList<T *> &list, const Parameters &par { archive << tag("qlist"); if (parameters.hasFlag(ENFORCE_REFERENCED_ITEMS)) { - foreach (const T *t, list) { + foreach (const T *t, list) archive << ref(QStringLiteral("item"), t); - } } else { - foreach (const T *t, list) { + foreach (const T *t, list) archive << attr(QStringLiteral("item"), t); - } } archive << end; } @@ -91,16 +87,14 @@ inline void load(Archive &archive, QList<T *> &list, const Parameters ¶meter archive >> end; } - // QSet template<class Archive, class T> inline void save(Archive &archive, const QSet<T> &set, const Parameters &) { archive << tag("qset"); - foreach (const T &t, set) { + foreach (const T &t, set) archive << attr(QStringLiteral("item"), t); - } archive << end; } @@ -109,13 +103,11 @@ inline void save(Archive &archive, const QSet<T *> &set, const Parameters ¶m { archive << tag("qset"); if (parameters.hasFlag(ENFORCE_REFERENCED_ITEMS)) { - foreach (const T *t, set) { + foreach (const T *t, set) archive << ref(QStringLiteral("item"), t); - } } else { - foreach (const T *t, set) { + foreach (const T *t, set) archive << attr(QStringLiteral("item"), t); - } } archive << end; } @@ -127,7 +119,7 @@ void insertIntoSet(QSet<T> &set, const T &t) { set.insert(t); } -} +} // namespace impl template<class Archive, class T> inline void load(Archive &archive, QSet<T> &set, const Parameters &) @@ -141,37 +133,37 @@ template<class Archive, class T> inline void load(Archive &archive, QSet<T *> &set, const Parameters ¶meters) { archive >> tag(QStringLiteral("qset")); - if (parameters.hasFlag(ENFORCE_REFERENCED_ITEMS)) { + if (parameters.hasFlag(ENFORCE_REFERENCED_ITEMS)) archive >> ref(QStringLiteral("item"), set, &impl::insertIntoSet<T *>); - } else { - archive >> attr<QSet<T *>, T * const &>(QStringLiteral("item"), set, &impl::insertIntoSet<T *>); - } + else + archive >> attr<QSet<T *>, T * const &>(QStringLiteral("item"), set, + &impl::insertIntoSet<T *>); archive >> end; } - // QHash namespace impl { template<typename KEY, typename VALUE> -class KeyValuePair { +class KeyValuePair +{ public: KeyValuePair() { } - explicit KeyValuePair(const KEY &key, const VALUE &value) : _key(key), _value(value) { } + explicit KeyValuePair(const KEY &key, const VALUE &value) : m_key(key), m_value(value) { } - KEY _key; - VALUE _value; + KEY m_key; + VALUE m_value; }; -} +} // namespace impl template<class Archive, class KEY, class VALUE> inline void save(Archive &archive, const impl::KeyValuePair<KEY, VALUE> &pair, const Parameters &) { archive << tag(QStringLiteral("pair")) - << attr(QStringLiteral("key"), pair._key) - << attr(QStringLiteral("value"), pair._value) + << attr(QStringLiteral("key"), pair.m_key) + << attr(QStringLiteral("value"), pair.m_value) << end; } @@ -179,8 +171,8 @@ template<class Archive, class KEY, class VALUE> inline void load(Archive &archive, impl::KeyValuePair<KEY, VALUE> &pair, const Parameters &) { archive >> tag(QStringLiteral("pair")) - >> attr(QStringLiteral("key"), pair._key) - >> attr(QStringLiteral("value"), pair._value) + >> attr(QStringLiteral("key"), pair.m_key) + >> attr(QStringLiteral("value"), pair.m_value) >> end; } @@ -200,10 +192,10 @@ namespace impl { template<class KEY, class VALUE> inline void keyValuePairInsert(QHash<KEY, VALUE> &hash, const KeyValuePair<KEY, VALUE> &pair) { - hash.insert(pair._key, pair._value); + hash.insert(pair.m_key, pair.m_value); } -} +} // namespace impl template<class Archive, class KEY, class VALUE> inline void load(Archive &archive, QHash<KEY, VALUE> &hash, const Parameters &) @@ -213,6 +205,6 @@ inline void load(Archive &archive, QHash<KEY, VALUE> &hash, const Parameters &) archive >> end; } -} +} // namespace qark #endif // QARK_SERIALIZE_CONTAINER_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_enum.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_enum.h index b72561dd60..d6b21d5dfa 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_enum.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_enum.h @@ -37,16 +37,18 @@ namespace qark { -#if 0 // ambigous with default implementation in access.h +#if 0 // TODO this is ambigous with default implementation in access.h template<class Archive, typename T> -inline typename std::enable_if<std::is_enum<T>::value, void>::type save(Archive &archive, const T &value, const Parameters &) +inline typename std::enable_if<std::is_enum<T>::value, void>::type save( + Archive &archive, const T &value, const Parameters &) { - archive.write((int) value); + archive.write(static_cast<int>(value)); } template<class Archive, typename T> -inline typename std::enable_if<std::is_enum<T>::value, void>::type load(Archive &archive, T &value, const Parameters &) +inline typename std::enable_if<std::is_enum<T>::value, void>::type load( + Archive &archive, T &value, const Parameters &) { int i = 0; archive.read(&i); @@ -59,7 +61,7 @@ inline typename std::enable_if<std::is_enum<T>::value, void>::type load(Archive template<class Archive> \ inline void save(Archive &archive, const ENUM &e, const Parameters &) \ { \ - archive.write((int) e); \ + archive.write(static_cast<int>(e)); \ } \ template<class Archive> \ inline void load(Archive &archive, ENUM &e, const Parameters &) \ @@ -83,6 +85,6 @@ inline void load(Archive &archive, QFlags<T> &flags, const Parameters &) flags = QFlags<T>(i); } -} +} // namespace qark #endif // QARK_SERIALIZE_ENUM_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_pointer.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_pointer.h index d90633a08b..5ef67cab0b 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_pointer.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/serialize_pointer.h @@ -46,16 +46,15 @@ inline void save(Archive &archive, T *p, const Parameters &) } else { if (typeid(*p) == typeid(T)) { archive.beginInstance(); - registry::save_pointer<Archive, T, T>(archive, p); + registry::savePointer<Archive, T, T>(archive, p); archive.endInstance(); } else { - archive.beginInstance(get_type_uid(*p)); - typename registry::TypeRegistry<Archive, T>::type_info type_data = get_type_info<Archive, T>(*p); - if (type_data.save_func == 0) { - throw unregistered_type(); - } else { - type_data.save_func(archive, p); - } + archive.beginInstance(typeUid(*p)); + typename registry::TypeRegistry<Archive, T>::TypeInfo typeData = typeInfo<Archive, T>(*p); + if (typeData.m_saveFunc == 0) + throw UnregisteredType(); + else + typeData.m_saveFunc(archive, p); archive.endInstance(); } } @@ -68,31 +67,30 @@ inline void save(Archive &archive, T *p, const Parameters &) template<class Archive, class T> void load(Archive &archive, T *&p, const Parameters &) { - typename Archive::ReferenceTag ref_tag = archive.readReferenceTag(); - switch (ref_tag.kind) { - case Archive::NULLPOINTER: + typename Archive::ReferenceTag refTag = archive.readReferenceTag(); + switch (refTag.kind) { + case Archive::Nullpointer: p = 0; break; - case Archive::POINTER: + case Archive::Pointer: archive.read(p); break; - case Archive::INSTANCE: - if (ref_tag.type_name.isEmpty()) { - registry::load_non_virtual_pointer<Archive,T>(archive, p); + case Archive::Instance: + if (refTag.typeName.isEmpty()) { + registry::loadNonVirtualPointer<Archive,T>(archive, p); } else { - typename registry::TypeRegistry<Archive, T>::type_info type_data = get_type_info<Archive, T>(ref_tag.type_name); - if (type_data.load_func == 0) { - throw unregistered_type(); - } else { - type_data.load_func(archive, p); - } + typename registry::TypeRegistry<Archive, T>::TypeInfo typeData = typeInfo<Archive, T>(refTag.typeName); + if (typeData.m_loadFunc == 0) + throw UnregisteredType(); + else + typeData.m_loadFunc(archive, p); } break; } - archive.readReferenceEndTag(ref_tag.kind); + archive.readReferenceEndTag(refTag.kind); } -} +} // namespace qark #endif // QARK_SERIALIZE_POINTER_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/tag.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/tag.h index ae3a07b9f0..79ad295afa 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/tag.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/tag.h @@ -36,116 +36,112 @@ #include <QString> - namespace qark { -class Tag { +class Tag +{ public: - explicit Tag(const QString &qualified_name) - : _qualified_name(qualified_name) + explicit Tag(const QString &qualifiedName) + : m_qualifiedName(qualifiedName) { } - Tag(const QString &qualified_name, const Parameters ¶meters) - : _qualified_name(qualified_name), - _parameters(parameters) + Tag(const QString &qualifiedName, const Parameters ¶meters) + : m_qualifiedName(qualifiedName), + m_parameters(parameters) { } - const QString &getQualifiedName() const { return _qualified_name; } - - Parameters getParameters() const { return _parameters; } + const QString &qualifiedName() const { return m_qualifiedName; } + Parameters parameters() const { return m_parameters; } private: - QString _qualified_name; - Parameters _parameters; + QString m_qualifiedName; + Parameters m_parameters; }; - template<class T> -class Object : - public Tag +class Object : public Tag { public: - Object(const QString &qualified_name, T *object) - : Tag(qualified_name), - _object(object) + Object(const QString &qualifiedName, T *object) + : Tag(qualifiedName), + m_object(object) { } - Object(const QString &qualified_name, T *object, const Parameters ¶meters) - : Tag(qualified_name, parameters), - _object(object) + Object(const QString &qualifiedName, T *object, const Parameters ¶meters) + : Tag(qualifiedName, parameters), + m_object(object) { } - T *getObject() const { return _object; } + T *object() const { return m_object; } private: - T *_object; + T *m_object; }; - -inline Tag tag(const QString &qualified_name) +inline Tag tag(const QString &qualifiedName) { - return Tag(qualified_name); + return Tag(qualifiedName); } -inline Tag tag(const QString &qualified_name, const Parameters ¶meters) +inline Tag tag(const QString &qualifiedName, const Parameters ¶meters) { - return Tag(qualified_name, parameters); + return Tag(qualifiedName, parameters); } -inline Tag tag(const char *qualified_name) +inline Tag tag(const char *qualifiedName) { - return Tag(QLatin1String(qualified_name)); + return Tag(QLatin1String(qualifiedName)); } -inline Tag tag(const char *qualified_name, const Parameters ¶meters) +inline Tag tag(const char *qualifiedName, const Parameters ¶meters) { - return Tag(QLatin1String(qualified_name), parameters); + return Tag(QLatin1String(qualifiedName), parameters); } template<class T> inline Object<T> tag(T &object) { - return Object<T>(get_type_uid<T>(), &object); + return Object<T>(typeUid<T>(), &object); } template<class T> inline Object<T> tag(T &object, const Parameters ¶meters) { - return Object<T>(get_type_uid<T>(), &object, parameters); + return Object<T>(typeUid<T>(), &object, parameters); } template<class T> -inline Object<T> tag(const QString &qualified_name, T &object) +inline Object<T> tag(const QString &qualifiedName, T &object) { - return Object<T>(qualified_name, &object); + return Object<T>(qualifiedName, &object); } template<class T> -inline Object<T> tag(const QString &qualified_name, T &object, const Parameters ¶meters) +inline Object<T> tag(const QString &qualifiedName, T &object, const Parameters ¶meters) { - return Object<T>(qualified_name, &object, parameters); + return Object<T>(qualifiedName, &object, parameters); } - -class End { +class End +{ public: explicit End() { } explicit End(const Parameters ¶meters) - : _parameters(parameters) + : m_parameters(parameters) { } - Parameters getParameters() const { return _parameters; } + Parameters parameters() const { return m_parameters; } private: - Parameters _parameters; + Parameters m_parameters; }; inline End end() @@ -158,6 +154,6 @@ inline End end(const Parameters ¶meters) return End(parameters); } -} +} // namespace qark #endif // QARK_TAG_H diff --git a/src/libs/3rdparty/modeling/qtserialization/inc/qark/typeregistry.h b/src/libs/3rdparty/modeling/qtserialization/inc/qark/typeregistry.h index 89955c7bc8..15beaae8bb 100644 --- a/src/libs/3rdparty/modeling/qtserialization/inc/qark/typeregistry.h +++ b/src/libs/3rdparty/modeling/qtserialization/inc/qark/typeregistry.h @@ -42,183 +42,156 @@ #include <QString> #include <QHash> - namespace qark { -class unregistered_type : - public std::exception +class UnregisteredType : public std::exception { }; -class abstract_type : - public std::exception +class AbstractType : public std::exception { }; - namespace registry { // we use a template to allow definition of static variables in header template<int N> -class TypeNameMaps { -public: - - typedef QHash<QString, QString> map_type; - +class TypeNameMaps +{ public: + typedef QHash<QString, QString> MapType; - static map_type &get_name_to_uid_map() { return *typeid_name_to_uid_map; } - - static map_type &get_uid_to_name_map() { return *typeid_uid_to_name_map; } + static MapType &nameToUidMap() { return *typeidNameToUidMap; } + static MapType &uidToNameMap() { return *typeidUidToNameMap; } #if !defined(QT_NO_DEBUG) - static bool has_name_to_uid_map() { return typeid_name_to_uid_map != 0; } - - static bool has_uid_to_name_map() { return typeid_uid_to_name_map != 0; } + static bool hasNameToUidMap() { return typeidNameToUidMap != 0; } + static bool hasUidToNameMap() { return typeidUidToNameMap != 0; } #endif protected: - static void init() { static bool initialized = false; - static map_type name_to_uid_map; - static map_type uid_to_name_map; + static MapType nameToUidMap; + static MapType uidToNameMap; if (!initialized) { - typeid_name_to_uid_map = &name_to_uid_map; - typeid_uid_to_name_map = &uid_to_name_map; + typeidNameToUidMap = &nameToUidMap; + typeidUidToNameMap = &uidToNameMap; initialized = true; } } private: - - static map_type *typeid_name_to_uid_map; - - static map_type *typeid_uid_to_name_map; + static MapType *typeidNameToUidMap; + static MapType *typeidUidToNameMap; }; template<int N> -typename TypeNameMaps<N>::map_type *TypeNameMaps<N>::typeid_name_to_uid_map; +typename TypeNameMaps<N>::MapType *TypeNameMaps<N>::typeidNameToUidMap; template<int N> -typename TypeNameMaps<N>::map_type *TypeNameMaps<N>::typeid_uid_to_name_map; - +typename TypeNameMaps<N>::MapType *TypeNameMaps<N>::typeidUidToNameMap; template<class T> -class TypeNameRegistry : - public TypeNameMaps<0> +class TypeNameRegistry : public TypeNameMaps<0> { + typedef TypeNameMaps<0> Base; - typedef TypeNameMaps<0> base; - -private: + static int staticInit; - static int __static_init; - -private: - static int __init(const QString &name) + static int init(const QString &name) { - base::init(); - QMT_CHECK(!base::get_name_to_uid_map().contains(QLatin1String(typeid(T).name())) || base::get_name_to_uid_map().value(QLatin1String(typeid(T).name())) == name); - QMT_CHECK(!base::get_uid_to_name_map().contains(name) || base::get_uid_to_name_map().value(name) == QLatin1String(typeid(T).name())); - base::get_name_to_uid_map().insert(QLatin1String(typeid(T).name()), name); - base::get_uid_to_name_map().insert(name, QLatin1String(typeid(T).name())); + Base::init(); + QMT_CHECK(!Base::nameToUidMap().contains(QLatin1String(typeid(T).name())) + || Base::nameToUidMap().value(QLatin1String(typeid(T).name())) == name); + QMT_CHECK(!Base::uidToNameMap().contains(name) + || Base::uidToNameMap().value(name) == QLatin1String(typeid(T).name())); + Base::nameToUidMap().insert(QLatin1String(typeid(T).name()), name); + Base::uidToNameMap().insert(name, QLatin1String(typeid(T).name())); return 0; } }; - - template<class Archive, class BASE> -class TypeRegistry { +class TypeRegistry +{ public: + class TypeInfo + { + public: + typedef Archive &(*SaveFuncType)(Archive &, BASE * const &p); + typedef Archive &(*LoadFuncType)(Archive &, BASE * &p); - struct type_info { - - typedef Archive &(*save_func_type)(Archive &, BASE * const &p); - typedef Archive &(*load_func_type)(Archive &, BASE * &p); - - explicit type_info() - : save_func(0), - load_func(0) + explicit TypeInfo() + : m_saveFunc(0), + m_loadFunc(0) { } - explicit type_info(save_func_type sfunc, load_func_type lfunc) - : save_func(sfunc), - load_func(lfunc) + explicit TypeInfo(SaveFuncType sfunc, LoadFuncType lfunc) + : m_saveFunc(sfunc), + m_loadFunc(lfunc) { } - bool operator==(const type_info &rhs) const + bool operator==(const TypeInfo &rhs) const { - return save_func == rhs.save_func && load_func == rhs.load_func; + return m_saveFunc == rhs.m_saveFunc && m_loadFunc == rhs.m_loadFunc; } - save_func_type save_func; - load_func_type load_func; + SaveFuncType m_saveFunc; + LoadFuncType m_loadFunc; }; - typedef QHash<QString, type_info> map_type; + typedef QHash<QString, TypeInfo> MapType; -public: - - static map_type &get_map() { return *map; } + static MapType &map() { return *m_map; } #if !defined(QT_NO_DEBUG) - static bool has_map() { return map != 0; } + static bool hasMap() { return m_map != 0; } #endif protected: - static void init() { static bool initialized = false; - static map_type the_map; + static MapType theMap; if (!initialized) { - map = &the_map; + m_map = &theMap; initialized = true; } } private: - - static map_type *map; + static MapType *m_map; }; template<class Archive, class BASE> -typename TypeRegistry<Archive, BASE>::map_type *TypeRegistry<Archive,BASE>::map; - +typename TypeRegistry<Archive, BASE>::MapType *TypeRegistry<Archive,BASE>::m_map; template<class Archive, class BASE, class DERIVED> -class DerivedTypeRegistry : - public TypeRegistry<Archive, BASE> +class DerivedTypeRegistry : public TypeRegistry<Archive, BASE> { + typedef TypeRegistry<Archive, BASE> Base; + typedef Archive &(*SaveFuncType)(Archive &, BASE * const &); + typedef Archive &(*LoadFuncType)(Archive &, BASE * &); - typedef TypeRegistry<Archive, BASE> base; + static int staticInit; - typedef Archive &(*save_func_type)(Archive &, BASE * const &); - - typedef Archive &(*load_func_type)(Archive &, BASE * &); - -private: - - static int __static_init; - -private: - static int __init(save_func_type sfunc, load_func_type lfunc) + static int init(SaveFuncType sfunc, LoadFuncType lfunc) { - base::init(); - QMT_CHECK(!base::get_map().contains(QLatin1String(typeid(DERIVED).name())) || base::get_map().value(QLatin1String(typeid(DERIVED).name())) == typename base::type_info(sfunc, lfunc)); - base::get_map().insert(QLatin1String(typeid(DERIVED).name()), typename base::type_info(sfunc, lfunc)); + Base::init(); + QMT_CHECK(!Base::map().contains(QLatin1String(typeid(DERIVED).name())) + || Base::map().value(QLatin1String(typeid(DERIVED).name())) == typename Base::TypeInfo(sfunc, lfunc)); + Base::map().insert(QLatin1String(typeid(DERIVED).name()), typename Base::TypeInfo(sfunc, lfunc)); return 0; } }; template<class Archive, class BASE, class DERIVED> -Archive &save_pointer(Archive &ar, BASE * const &p) +Archive &savePointer(Archive &ar, BASE * const &p) { DERIVED &t = dynamic_cast<DERIVED &>(*p); save(ar, t, Parameters()); @@ -226,7 +199,7 @@ Archive &save_pointer(Archive &ar, BASE * const &p) } template<class Archive, class BASE, class DERIVED> -Archive &load_pointer(Archive &ar, BASE *&p) +Archive &loadPointer(Archive &ar, BASE *&p) { DERIVED *t = new DERIVED(); load(ar, *t, Parameters()); @@ -235,104 +208,110 @@ Archive &load_pointer(Archive &ar, BASE *&p) } template<class Archive, class T> -typename std::enable_if<!std::is_abstract<T>::value, void>::type load_non_virtual_pointer(Archive &archive, T *&p) +typename std::enable_if<!std::is_abstract<T>::value, void>::type loadNonVirtualPointer( + Archive &archive, T *&p) { - registry::load_pointer<Archive, T, T>(archive, p); + registry::loadPointer<Archive, T, T>(archive, p); } template<class Archive, class T> -typename std::enable_if<std::is_abstract<T>::value, void>::type load_non_virtual_pointer(Archive &archive, T *&p) +typename std::enable_if<std::is_abstract<T>::value, void>::type loadNonVirtualPointer( + Archive &archive, T *&p) { (void) archive; (void) p; - throw abstract_type(); + throw AbstractType(); } -inline QString demangle_typename(const char *mangled_name) +inline QString demangleTypename(const char *mangledName) { - // TODO convert compiler specific mangled_name into human readable type name - return QLatin1String(mangled_name); + // TODO convert compiler specific mangledName into human readable type name + return QLatin1String(mangledName); } -inline QString flatten_typename(const char *type_name) +inline QString flattenTypename(const char *typeName) { // convert C++ type name into simple identifier (no extra characters) - return QString(QLatin1String(type_name)).replace(QChar(QLatin1Char(':')), QLatin1String("-")); + return QString(QLatin1String(typeName)).replace(QChar(QLatin1Char(':')), QLatin1String("-")); } -} +} // namespace registry template<class T> -QString get_type_uid() +QString typeUid() { -#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::has_name_to_uid_map in Qt >= 5.5 - QMT_CHECK_X((registry::TypeNameRegistry<T>::has_name_to_uid_map()), "get_type_uid<T>()", "type maps are not correctly initialized"); - QMT_CHECK_X((registry::TypeNameRegistry<T>::get_name_to_uid_map().contains(QLatin1String(typeid(T).name()))), "get_type_uid<T>()", - qPrintable(QString(QLatin1String("type with typeid %1 is not registered. Use QARK_REGISTER_TYPE or QARK_REGISTER_TYPE_NAME.")).arg(registry::demangle_typename(typeid(T).name())))); +#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::hasNameToUidMap in Qt >= 5.5 + QMT_CHECK_X((registry::TypeNameRegistry<T>::hasNameToUidMap()), + "typeUid<T>()", "type maps are not correctly initialized"); + QMT_CHECK_X((registry::TypeNameRegistry<T>::nameToUidMap().contains(QLatin1String(typeid(T).name()))), + "typeUid<T>()", + qPrintable(QString(QLatin1String("type with typeid %1 is not registered. Use QARK_REGISTER_TYPE or QARK_REGISTER_TYPE_NAME.")).arg(registry::demangleTypename(typeid(T).name())))); #endif - return registry::TypeNameRegistry<T>::get_name_to_uid_map().value(QLatin1String(typeid(T).name())); + return registry::TypeNameRegistry<T>::nameToUidMap().value(QLatin1String(typeid(T).name())); } template<class T> -QString get_type_uid(const T &t) +QString typeUid(const T &t) { - Q_UNUSED(t); -#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::has_name_to_uid_map in Qt >= 5.5 - QMT_CHECK_X((registry::TypeNameRegistry<T>::has_name_to_uid_map()), "get_type_uid<T>()", "type maps are not correctly initialized"); - QMT_CHECK_X((registry::TypeNameRegistry<T>::get_name_to_uid_map().contains(QLatin1String(typeid(t).name()))), "get_type_uid<T>()", - qPrintable(QString(QLatin1String("type with typeid %1 is not registered. Use QARK_REGISTER_TYPE or QARK_REGISTER_TYPE_NAME.")).arg(registry::demangle_typename(typeid(t).name())))); + Q_UNUSED(t); // avoid warning in some compilers +#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::hasNameToUidMap in Qt >= 5.5 + QMT_CHECK_X((registry::TypeNameRegistry<T>::hasNameToUidMap()), + "typeUid<T>()", "type maps are not correctly initialized"); + QMT_CHECK_X((registry::TypeNameRegistry<T>::nameToUidMap().contains(QLatin1String(typeid(t).name()))), + "typeUid<T>()", + qPrintable(QString(QLatin1String("type with typeid %1 is not registered. Use QARK_REGISTER_TYPE or QARK_REGISTER_TYPE_NAME.")).arg(registry::demangleTypename(typeid(t).name())))); #endif - return registry::TypeNameRegistry<T>::get_name_to_uid_map().value(QLatin1String(typeid(t).name())); + return registry::TypeNameRegistry<T>::nameToUidMap().value(QLatin1String(typeid(t).name())); } template<class Archive, class T> -typename registry::TypeRegistry<Archive, T>::type_info get_type_info(const T &t) +typename registry::TypeRegistry<Archive, T>::TypeInfo typeInfo(const T &t) { - Q_UNUSED(t); -#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::has_name_to_uid_map in Qt >= 5.5 - QMT_CHECK_X((registry::TypeRegistry<Archive,T>::has_map()), - qPrintable(QString(QLatin1String("TypeRegistry<Archive, %1>::get_type_info(const T&)")).arg(get_type_uid<T>())), - qPrintable(QString(QLatin1String("%1 is not a registered base class. Declare your derived classes with QARK_REGISTER_DERIVED_CLASS.")).arg(get_type_uid<T>()))); + Q_UNUSED(t); // avoid warning in some compilers +#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::hasNameToUidMap in Qt >= 5.5 + QMT_CHECK_X((registry::TypeRegistry<Archive,T>::hasMap()), + qPrintable(QString(QLatin1String("TypeRegistry<Archive, %1>::typeInfo(const T&)")).arg(typeUid<T>())), + qPrintable(QString(QLatin1String("%1 is not a registered base class. Declare your derived classes with QARK_REGISTER_DERIVED_CLASS.")).arg(typeUid<T>()))); #endif - return registry::TypeRegistry<Archive,T>::get_map()[QLatin1String(typeid(t).name())]; + return registry::TypeRegistry<Archive,T>::map()[QLatin1String(typeid(t).name())]; } template<class Archive, class T> -typename registry::TypeRegistry<Archive,T>::type_info get_type_info(const QString &uid) +typename registry::TypeRegistry<Archive,T>::TypeInfo typeInfo(const QString &uid) { -#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::has_name_to_uid_map in Qt >= 5.5 - QMT_CHECK_X((registry::TypeNameRegistry<T>::has_uid_to_name_map()), "get_type_info<T>(const QString &)", "type maps are not correctly initialized"); - QMT_CHECK_X((registry::TypeRegistry<Archive,T>::has_map()), - qPrintable(QString(QLatin1String("TypeRegistry<Archive, %1>::get_type_info(const QString &)")).arg(get_type_uid<T>())), - qPrintable(QString(QLatin1String("%1 is not a registered base class. Declare your derived classes with QARK_REGISTER_DERIVED_CLASS.")).arg(get_type_uid<T>()))); +#if !defined(QT_NO_DEBUG) // avoid warning about unused function ::hasNameToUidMap in Qt >= 5.5 + QMT_CHECK_X((registry::TypeNameRegistry<T>::hasUidToNameMap()), + "typeInfo<T>(const QString &)", "type maps are not correctly initialized"); + QMT_CHECK_X((registry::TypeRegistry<Archive,T>::hasMap()), + qPrintable(QString(QLatin1String("TypeRegistry<Archive, %1>::typeInfo(const QString &)")).arg(typeUid<T>())), + qPrintable(QString(QLatin1String("%1 is not a registered base class. Declare your derived classes with QARK_REGISTER_DERIVED_CLASS.")).arg(typeUid<T>()))); #endif - return registry::TypeRegistry<Archive,T>::get_map().value(registry::TypeNameRegistry<T>::get_uid_to_name_map().value(uid)); -} - + return registry::TypeRegistry<Archive,T>::map().value(registry::TypeNameRegistry<T>::uidToNameMap().value(uid)); } +} // namespace qark #define QARK_TYPE_STRING(T) #T #define QARK_REGISTER_TYPE_NAME(T, NAME) \ template<> \ - int qark::registry::TypeNameRegistry<T>::__static_init = qark::registry::TypeNameRegistry<T>::__init(QLatin1String(NAME)); + int qark::registry::TypeNameRegistry<T>::staticInit = qark::registry::TypeNameRegistry<T>::init(QLatin1String(NAME)); #define QARK_REGISTER_TYPE(T) \ template<> \ - int qark::registry::TypeNameRegistry<T>::__static_init = qark::registry::TypeNameRegistry<T>::__init(qark::registry::flatten_typename(QARK_TYPE_STRING(T))); + int qark::registry::TypeNameRegistry<T>::staticInit = qark::registry::TypeNameRegistry<T>::init(qark::registry::flattenTypename(QARK_TYPE_STRING(T))); #define QARK_REGISTER_DERIVED_CLASS(INARCHIVE, OUTARCHIVE, DERIVED, BASE) \ template<> \ - int qark::registry::DerivedTypeRegistry<INARCHIVE,BASE,DERIVED>::__static_init = \ - qark::registry::DerivedTypeRegistry<INARCHIVE, BASE, DERIVED>::__init(0, qark::registry::load_pointer<INARCHIVE, BASE, DERIVED>); \ + int qark::registry::DerivedTypeRegistry<INARCHIVE,BASE,DERIVED>::staticInit = \ + qark::registry::DerivedTypeRegistry<INARCHIVE, BASE, DERIVED>::init(0, qark::registry::loadPointer<INARCHIVE, BASE, DERIVED>); \ template<> \ - int qark::registry::DerivedTypeRegistry<OUTARCHIVE, BASE, DERIVED>::__static_init = \ - qark::registry::DerivedTypeRegistry<OUTARCHIVE, BASE, DERIVED>::__init(qark::registry::save_pointer<OUTARCHIVE, BASE, DERIVED>, 0); \ + int qark::registry::DerivedTypeRegistry<OUTARCHIVE, BASE, DERIVED>::staticInit = \ + qark::registry::DerivedTypeRegistry<OUTARCHIVE, BASE, DERIVED>::init(qark::registry::savePointer<OUTARCHIVE, BASE, DERIVED>, 0); \ template<> \ - int qark::registry::DerivedTypeRegistry<OUTARCHIVE, typename std::add_const<BASE>::type, typename std::add_const<DERIVED>::type>::__static_init = \ + int qark::registry::DerivedTypeRegistry<OUTARCHIVE, typename std::add_const<BASE>::type, typename std::add_const<DERIVED>::type>::staticInit = \ qark::registry::DerivedTypeRegistry<OUTARCHIVE, typename std::add_const<BASE>::type, typename std::add_const<DERIVED>::type>:: \ - __init(qark::registry::save_pointer<OUTARCHIVE, typename std::add_const<BASE>::type, typename std::add_const<DERIVED>::type>, 0); + init(qark::registry::savePointer<OUTARCHIVE, typename std::add_const<BASE>::type, typename std::add_const<DERIVED>::type>, 0); #endif // QARK_TYPEREGISTRY_H diff --git a/src/libs/3rdparty/modeling/qtserialization/src/flag.cpp b/src/libs/3rdparty/modeling/qtserialization/src/flag.cpp index ce015a04d2..6049061c3c 100644 --- a/src/libs/3rdparty/modeling/qtserialization/src/flag.cpp +++ b/src/libs/3rdparty/modeling/qtserialization/src/flag.cpp @@ -32,6 +32,6 @@ namespace qark { -Flag::mask_type Flag::_next_mask = 1; +Flag::MaskType Flag::m_nextMask = 1; -} +} // namespace qark diff --git a/src/libs/3rdparty/modeling/qtserialization/src/savingrefmap.cpp b/src/libs/3rdparty/modeling/qtserialization/src/savingrefmap.cpp index c8cd8c04a1..81b0c67de8 100644 --- a/src/libs/3rdparty/modeling/qtserialization/src/savingrefmap.cpp +++ b/src/libs/3rdparty/modeling/qtserialization/src/savingrefmap.cpp @@ -31,49 +31,44 @@ #include "qark/impl/savingrefmap.h" namespace qark { - namespace impl { int SavingRefMap::countDanglingReferences() { int dangling = 0; - for (map_type::const_iterator it = _references.begin(); it != _references.end(); ++it) { - if (!it.value().second) { + for (MapType::const_iterator it = m_references.begin(); it != m_references.end(); ++it) { + if (!it.value().second) ++dangling; - } } return dangling; } -bool SavingRefMap::hasRef(const void *address, const char *type_name) +bool SavingRefMap::hasRef(const void *address, const char *typeName) { - return _references.find(key_type(address, type_name)) != _references.end(); + return m_references.find(KeyType(address, typeName)) != m_references.end(); } -bool SavingRefMap::hasDefinedRef(const void *address, const char *type_name) +bool SavingRefMap::hasDefinedRef(const void *address, const char *typeName) { - map_type::const_iterator it = _references.find(key_type(address, type_name)); - if (it == _references.end()) { + MapType::const_iterator it = m_references.find(KeyType(address, typeName)); + if (it == m_references.end()) return false; - } return it.value().second; } -ObjectId SavingRefMap::getRef(const void *address, const char *type_name, bool define) +ObjectId SavingRefMap::ref(const void *address, const char *typeName, bool define) { - key_type k = key_type(address, type_name); - map_type::iterator it = _references.find(k); - if (it != _references.end()) { - if (define) { + KeyType k = KeyType(address, typeName); + MapType::iterator it = m_references.find(k); + if (it != m_references.end()) { + if (define) it.value().second = true; - } return it.value().first; } - ObjectId id = _next_ref++; - _references[k] = value_type(id, define); + ObjectId id = m_nextRef++; + m_references[k] = ValueType(id, define); return id; } -} - -} +} // namespace impl +} // namespace qark diff --git a/src/libs/modelinglib/modelinglib.qbs b/src/libs/modelinglib/modelinglib.qbs index ced437f0a5..7c8dea096e 100644 --- a/src/libs/modelinglib/modelinglib.qbs +++ b/src/libs/modelinglib/modelinglib.qbs @@ -9,6 +9,7 @@ QtcLibrary { ]) Depends { name: "Qt.widgets" } + Depends { name: "Utils" } Group { name: "Qmt" diff --git a/src/libs/modelinglib/modelinglib_dependencies.pri b/src/libs/modelinglib/modelinglib_dependencies.pri index d2031c3f58..a099e82fcd 100644 --- a/src/libs/modelinglib/modelinglib_dependencies.pri +++ b/src/libs/modelinglib/modelinglib_dependencies.pri @@ -1,4 +1,4 @@ QTC_LIB_NAME = Modeling -QTC_LIB_DEPENDS += +QTC_LIB_DEPENDS += utils INCLUDEPATH *= $$IDE_SOURCE_TREE/src/libs/3rdparty/modeling INCLUDEPATH *= $$IDE_SOURCE_TREE/src/libs/3rdparty/modeling/qtserialization/inc diff --git a/src/libs/qmldebug/baseenginedebugclient.cpp b/src/libs/qmldebug/baseenginedebugclient.cpp index e04d60cb02..a3fea23b34 100644 --- a/src/libs/qmldebug/baseenginedebugclient.cpp +++ b/src/libs/qmldebug/baseenginedebugclient.cpp @@ -30,6 +30,7 @@ #include "baseenginedebugclient.h" #include "qmldebugconstants.h" +#include "qpacketprotocol.h" namespace QmlDebug { @@ -182,7 +183,7 @@ void BaseEngineDebugClient::stateChanged(State state) void BaseEngineDebugClient::messageReceived(const QByteArray &data) { - QmlDebugStream ds(data); + QPacket ds(connection()->currentDataStreamVersion(), data); int queryId; QByteArray type; ds >> type >> queryId; @@ -254,11 +255,10 @@ quint32 BaseEngineDebugClient::addWatch(const PropertyReference &property) quint32 id = 0; if (state() == Enabled) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("WATCH_PROPERTY") << id << property.m_objectDebugId << property.m_name.toUtf8(); - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -276,10 +276,9 @@ quint32 BaseEngineDebugClient::addWatch(const ObjectReference &object, quint32 id = 0; if (state() == Enabled) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("WATCH_EXPR_OBJECT") << id << object.m_debugId << expr; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -289,10 +288,9 @@ quint32 BaseEngineDebugClient::addWatch(int objectDebugId) quint32 id = 0; if (state() == Enabled) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("WATCH_OBJECT") << id << objectDebugId; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -306,10 +304,9 @@ quint32 BaseEngineDebugClient::addWatch(const FileReference &/*file*/) void BaseEngineDebugClient::removeWatch(quint32 id) { if (state() == Enabled) { - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("NO_WATCH") << id; - sendMessage(message); + sendMessage(ds.data()); } } @@ -318,10 +315,9 @@ quint32 BaseEngineDebugClient::queryAvailableEngines() quint32 id = 0; if (state() == Enabled) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("LIST_ENGINES") << id; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -331,10 +327,9 @@ quint32 BaseEngineDebugClient::queryRootContexts(const EngineReference &engine) quint32 id = 0; if (state() == Enabled && engine.m_debugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("LIST_OBJECTS") << id << engine.m_debugId; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -344,11 +339,10 @@ quint32 BaseEngineDebugClient::queryObject(int objectId) quint32 id = 0; if (state() == Enabled && objectId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("FETCH_OBJECT") << id << objectId << false << true; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -358,11 +352,10 @@ quint32 BaseEngineDebugClient::queryObjectRecursive(int objectId) quint32 id = 0; if (state() == Enabled && objectId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("FETCH_OBJECT") << id << objectId << true << true; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -374,11 +367,10 @@ quint32 BaseEngineDebugClient::queryExpressionResult(int objectDebugId, quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("EVAL_EXPRESSION") << id << objectDebugId << expr << engineId; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -393,11 +385,10 @@ quint32 BaseEngineDebugClient::setBindingForObject( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("SET_BINDING") << id << objectDebugId << propertyName << bindingExpression << isLiteralValue << source << line; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -409,10 +400,9 @@ quint32 BaseEngineDebugClient::resetBindingForObject( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("RESET_BINDING") << id << objectDebugId << propertyName; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -424,11 +414,10 @@ quint32 BaseEngineDebugClient::setMethodBody( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("SET_METHOD_BODY") << id << objectDebugId << methodName << methodBody; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -439,12 +428,11 @@ quint32 BaseEngineDebugClient::queryObjectsForLocation( quint32 id = 0; if (state() == Enabled) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("FETCH_OBJECTS_FOR_LOCATION") << id << fileName << lineNumber << columnNumber << false << true; - sendMessage(message); + sendMessage(ds.data()); } return id; } diff --git a/src/libs/qmldebug/declarativeenginedebugclient.cpp b/src/libs/qmldebug/declarativeenginedebugclient.cpp index 1e77b4d869..d9dff061e0 100644 --- a/src/libs/qmldebug/declarativeenginedebugclient.cpp +++ b/src/libs/qmldebug/declarativeenginedebugclient.cpp @@ -31,6 +31,7 @@ #include "declarativeenginedebugclient.h" #include "qmldebugconstants.h" #include "qmldebugclient.h" +#include "qpacketprotocol.h" namespace QmlDebug { @@ -50,11 +51,10 @@ quint32 DeclarativeEngineDebugClient::setBindingForObject( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("SET_BINDING") << objectDebugId << propertyName << bindingExpression << isLiteralValue << source << line; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -66,10 +66,9 @@ quint32 DeclarativeEngineDebugClient::resetBindingForObject( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("RESET_BINDING") << objectDebugId << propertyName; - sendMessage(message); + sendMessage(ds.data()); } return id; } @@ -81,18 +80,17 @@ quint32 DeclarativeEngineDebugClient::setMethodBody( quint32 id = 0; if (state() == Enabled && objectDebugId != -1) { id = getId(); - QByteArray message; - QmlDebugStream ds(&message, QIODevice::WriteOnly); + QPacket ds(connection()->currentDataStreamVersion()); ds << QByteArray("SET_METHOD_BODY") << objectDebugId << methodName << methodBody; - sendMessage(message); + sendMessage(ds.data()); } return id; } void DeclarativeEngineDebugClient::messageReceived(const QByteArray &data) { - QmlDebugStream ds(data); + QPacket ds(connection()->currentDataStreamVersion(), data); QByteArray type; ds >> type; diff --git a/src/libs/qmldebug/declarativetoolsclient.cpp b/src/libs/qmldebug/declarativetoolsclient.cpp index 2aef5dd518..a0131e7da5 100644 --- a/src/libs/qmldebug/declarativetoolsclient.cpp +++ b/src/libs/qmldebug/declarativetoolsclient.cpp @@ -232,7 +232,7 @@ void DeclarativeToolsClient::reload(const QHash<QString, { Q_UNUSED(changesHash); - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -248,7 +248,7 @@ void DeclarativeToolsClient::reload(const QHash<QString, void DeclarativeToolsClient::setDesignModeBehavior(bool inDesignMode) { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -265,7 +265,7 @@ void DeclarativeToolsClient::setDesignModeBehavior(bool inDesignMode) void DeclarativeToolsClient::changeToSelectTool() { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -283,7 +283,7 @@ void DeclarativeToolsClient::changeToSelectTool() void DeclarativeToolsClient::changeToSelectMarqueeTool() { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -301,7 +301,7 @@ void DeclarativeToolsClient::changeToSelectMarqueeTool() void DeclarativeToolsClient::changeToZoomTool() { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -319,7 +319,7 @@ void DeclarativeToolsClient::changeToZoomTool() void DeclarativeToolsClient::showAppOnTop(bool showOnTop) { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; diff --git a/src/libs/qmldebug/qdebugmessageclient.cpp b/src/libs/qmldebug/qdebugmessageclient.cpp index 788be9bb74..c67902539d 100644 --- a/src/libs/qmldebug/qdebugmessageclient.cpp +++ b/src/libs/qmldebug/qdebugmessageclient.cpp @@ -65,6 +65,14 @@ void QDebugMessageClient::messageReceived(const QByteArray &data) info.line = line; info.file = QString::fromUtf8(file); info.function = QString::fromUtf8(function); + info.timestamp = -1; + if (!ds.atEnd()) { + QByteArray category; + ds >> category; + info.category = QString::fromUtf8(category); + if (!ds.atEnd()) + ds >> info.timestamp; + } emit message(QtMsgType(type), QString::fromUtf8(debugMessage), info); } } diff --git a/src/libs/qmldebug/qdebugmessageclient.h b/src/libs/qmldebug/qdebugmessageclient.h index 66060b8854..2de0cfda06 100644 --- a/src/libs/qmldebug/qdebugmessageclient.h +++ b/src/libs/qmldebug/qdebugmessageclient.h @@ -42,6 +42,8 @@ struct QDebugContextInfo int line; QString file; QString function; + QString category; + qint64 timestamp; }; class QMLDEBUG_EXPORT QDebugMessageClient : public QmlDebugClient diff --git a/src/libs/qmldebug/qmldebug.pro b/src/libs/qmldebug/qmldebug.pro index 9ac2badc48..061747ce8d 100644 --- a/src/libs/qmldebug/qmldebug.pro +++ b/src/libs/qmldebug/qmldebug.pro @@ -3,6 +3,3 @@ QT += network include(../../qtcreatorlibrary.pri) include(qmldebug-lib.pri) -DISTFILES += \ - qmldebug.pri - diff --git a/src/libs/qmldebug/qmldebugclient.cpp b/src/libs/qmldebug/qmldebugclient.cpp index 2f5b7976cd..fb21d84341 100644 --- a/src/libs/qmldebug/qmldebugclient.cpp +++ b/src/libs/qmldebug/qmldebugclient.cpp @@ -35,11 +35,12 @@ #include <qdebug.h> #include <qstringlist.h> #include <qnetworkproxy.h> +#include <qlocalserver.h> +#include <qlocalsocket.h> namespace QmlDebug { const int protocolVersion = 1; -int QmlDebugClient::s_dataStreamVersion = QDataStream::Qt_4_7; const QString serverId = QLatin1String("QDeclarativeDebugServer"); const QString clientId = QLatin1String("QDeclarativeDebugClient"); @@ -54,88 +55,107 @@ public: QmlDebugConnection *connection; }; -class QmlDebugConnectionPrivate : public QObject +class QmlDebugConnectionPrivate { - Q_OBJECT public: - QmlDebugConnectionPrivate(QmlDebugConnection *c); - QmlDebugConnection *q; + QmlDebugConnectionPrivate(); QPacketProtocol *protocol; + QLocalServer *server; QIODevice *device; // Currently a QTcpSocket bool gotHello; QHash <QString, float> serverPlugins; QHash<QString, QmlDebugClient *> plugins; + int currentDataStreamVersion; + int maximumDataStreamVersion; + void advertisePlugins(); void flush(); - -public Q_SLOTS: - void connected(); - void disconnected(); - void error(QAbstractSocket::SocketError error); - void readyRead(); - void stateChanged(QAbstractSocket::SocketState state); }; -QmlDebugConnectionPrivate::QmlDebugConnectionPrivate(QmlDebugConnection *c) - : QObject(c), q(c), protocol(0), device(0), gotHello(false) +QString QmlDebugConnection::socketStateToString(QAbstractSocket::SocketState state) +{ + switch (state) { + case QAbstractSocket::UnconnectedState: + return tr("Network connection dropped"); + case QAbstractSocket::HostLookupState: + return tr("Resolving host"); + case QAbstractSocket::ConnectingState: + return tr("Establishing network connection ..."); + case QAbstractSocket::ConnectedState: + return tr("Network connection established"); + case QAbstractSocket::ClosingState: + return tr("Network connection closing"); + case QAbstractSocket::BoundState: + return tr("Socket state changed to BoundState. This should not happen!"); + case QAbstractSocket::ListeningState: + return tr("Socket state changed to ListeningState. This should not happen!"); + default: + return tr("Unknown state %1").arg(state); + } +} + +QString QmlDebugConnection::socketErrorToString(QAbstractSocket::SocketError error) +{ + if (error == QAbstractSocket::RemoteHostClosedError) { + return tr("Error: Remote host closed the connection"); + } else { + return tr("Error: Unknown socket error %1").arg(error); + } +} + +QmlDebugConnectionPrivate::QmlDebugConnectionPrivate() : + protocol(0), server(0), device(0), gotHello(false), + currentDataStreamVersion(QDataStream::Qt_4_7), + maximumDataStreamVersion(QDataStream::Qt_DefaultCompiledVersion) { } void QmlDebugConnectionPrivate::advertisePlugins() { - if (!q->isOpen()) + if (!gotHello) return; - QPacket pack; + QPacket pack(currentDataStreamVersion); pack << serverId << 1 << plugins.keys(); - protocol->send(pack); + protocol->send(pack.data()); flush(); } -void QmlDebugConnectionPrivate::connected() +void QmlDebugConnection::socketConnected() { - QPacket pack; - QDataStream str; - pack << serverId << 0 << protocolVersion << plugins.keys() << QDataStream().version(); - protocol->send(pack); - flush(); + Q_D(QmlDebugConnection); + QPacket pack(d->currentDataStreamVersion); + pack << serverId << 0 << protocolVersion << d->plugins.keys() << d->maximumDataStreamVersion; + d->protocol->send(pack.data()); + d->flush(); } -void QmlDebugConnectionPrivate::disconnected() +void QmlDebugConnection::socketDisconnected() { - if (gotHello) { - gotHello = false; - QHash<QString, QmlDebugClient*>::iterator iter = plugins.begin(); - for (; iter != plugins.end(); ++iter) + Q_D(QmlDebugConnection); + if (d->gotHello) { + d->gotHello = false; + QHash<QString, QmlDebugClient*>::iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) iter.value()->stateChanged(QmlDebugClient::NotConnected); - emit q->closed(); + emit disconnected(); } - delete protocol; - protocol = 0; - if (device) { + delete d->protocol; + d->protocol = 0; + if (d->device) { // Don't immediately delete it as it may do some cleanup on returning from a signal. - device->deleteLater(); - device = 0; + d->device->deleteLater(); + d->device = 0; } } -void QmlDebugConnectionPrivate::error(QAbstractSocket::SocketError socketError) -{ - //: %1=error code, %2=error message - emit q->errorMessage(tr("Error: (%1) %2").arg(socketError) - .arg(device ? device->errorString() : tr("<device is gone>"))); - if (socketError == QAbstractSocket::RemoteHostClosedError) - emit q->error(QDebugSupport::RemoteClosedConnectionError); - else - emit q->error(QDebugSupport::UnknownError); -} - -void QmlDebugConnectionPrivate::readyRead() +void QmlDebugConnection::protocolReadyRead() { - if (!gotHello) { - QPacket pack = protocol->read(); + Q_D(QmlDebugConnection); + if (!d->gotHello) { + QPacket pack(d->currentDataStreamVersion, d->protocol->read()); QString name; pack >> name; @@ -151,7 +171,7 @@ void QmlDebugConnectionPrivate::readyRead() QStringList pluginNames; QList<float> pluginVersions; pack >> pluginNames; - if (!pack.isEmpty()) + if (!pack.atEnd()) pack >> pluginVersions; const int pluginNamesSize = pluginNames.size(); @@ -160,13 +180,12 @@ void QmlDebugConnectionPrivate::readyRead() float pluginVersion = 1.0; if (i < pluginVersionsSize) pluginVersion = pluginVersions.at(i); - serverPlugins.insert(pluginNames.at(i), pluginVersion); + d->serverPlugins.insert(pluginNames.at(i), pluginVersion); } if (!pack.atEnd()) { - pack >> QmlDebugClient::s_dataStreamVersion; - if (QmlDebugClient::s_dataStreamVersion - > QDataStream().version()) + pack >> d->currentDataStreamVersion; + if (d->currentDataStreamVersion > d->maximumDataStreamVersion) qWarning() << "Server returned invalid data stream version!"; } validHello = true; @@ -176,23 +195,24 @@ void QmlDebugConnectionPrivate::readyRead() if (!validHello) { qWarning("QML Debug Client: Invalid hello message"); - QObject::disconnect(protocol, SIGNAL(readyRead()), this, SLOT(readyRead())); + QObject::disconnect(d->protocol, &QPacketProtocol::readyRead, + this, &QmlDebugConnection::protocolReadyRead); return; } - gotHello = true; + d->gotHello = true; - QHash<QString, QmlDebugClient *>::Iterator iter = plugins.begin(); - for (; iter != plugins.end(); ++iter) { + QHash<QString, QmlDebugClient *>::Iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) { QmlDebugClient::State newState = QmlDebugClient::Unavailable; - if (serverPlugins.contains(iter.key())) + if (d->serverPlugins.contains(iter.key())) newState = QmlDebugClient::Enabled; iter.value()->stateChanged(newState); } - emit q->opened(); + emit connected(); } - while (protocol && protocol->packetsAvailable()) { - QPacket pack = protocol->read(); + while (d->protocol && d->protocol->packetsAvailable()) { + QPacket pack(d->currentDataStreamVersion, d->protocol->read()); QString name; pack >> name; @@ -202,13 +222,13 @@ void QmlDebugConnectionPrivate::readyRead() if (op == 1) { // Service Discovery - QHash<QString, float> oldServerPlugins = serverPlugins; - serverPlugins.clear(); + QHash<QString, float> oldServerPlugins = d->serverPlugins; + d->serverPlugins.clear(); QStringList pluginNames; QList<float> pluginVersions; pack >> pluginNames; - if (!pack.isEmpty()) + if (!pack.atEnd()) pack >> pluginVersions; const int pluginNamesSize = pluginNames.size(); @@ -217,18 +237,18 @@ void QmlDebugConnectionPrivate::readyRead() float pluginVersion = 1.0; if (i < pluginVersionsSize) pluginVersion = pluginVersions.at(i); - serverPlugins.insert(pluginNames.at(i), pluginVersion); + d->serverPlugins.insert(pluginNames.at(i), pluginVersion); } - QHash<QString, QmlDebugClient *>::Iterator iter = plugins.begin(); - for (; iter != plugins.end(); ++iter) { + QHash<QString, QmlDebugClient *>::Iterator iter = d->plugins.begin(); + for (; iter != d->plugins.end(); ++iter) { const QString pluginName = iter.key(); QmlDebugClient::State newState = QmlDebugClient::Unavailable; - if (serverPlugins.contains(pluginName)) + if (d->serverPlugins.contains(pluginName)) newState = QmlDebugClient::Enabled; if (oldServerPlugins.contains(pluginName) - != serverPlugins.contains(pluginName)) { + != d->serverPlugins.contains(pluginName)) { iter.value()->stateChanged(newState); } } @@ -239,9 +259,8 @@ void QmlDebugConnectionPrivate::readyRead() QByteArray message; pack >> message; - QHash<QString, QmlDebugClient *>::Iterator iter = - plugins.find(name); - if (iter == plugins.end()) + QHash<QString, QmlDebugClient *>::Iterator iter = d->plugins.find(name); + if (iter == d->plugins.end()) qWarning() << "QML Debug Client: Message received for missing plugin" << name; else (*iter)->messageReceived(message); @@ -249,63 +268,85 @@ void QmlDebugConnectionPrivate::readyRead() } } -void QmlDebugConnectionPrivate::stateChanged(QAbstractSocket::SocketState state) -{ - switch (state) { - case QAbstractSocket::UnconnectedState: - emit q->stateMessage(tr("Network connection dropped")); - break; - case QAbstractSocket::HostLookupState: - emit q->stateMessage(tr("Resolving host")); - break; - case QAbstractSocket::ConnectingState: - emit q->stateMessage(tr("Establishing network connection ...")); - break; - case QAbstractSocket::ConnectedState: - emit q->stateMessage(tr("Network connection established")); - break; - case QAbstractSocket::ClosingState: - emit q->stateMessage(tr("Network connection closing")); - break; - case QAbstractSocket::BoundState: - emit q->errorMessage(tr("Socket state changed to BoundState. This should not happen!")); - break; - case QAbstractSocket::ListeningState: - emit q->errorMessage(tr("Socket state changed to ListeningState. This should not happen!")); - break; - } -} - QmlDebugConnection::QmlDebugConnection(QObject *parent) - : QObject(parent), d(new QmlDebugConnectionPrivate(this)) + : QObject(parent), d_ptr(new QmlDebugConnectionPrivate) { } QmlDebugConnection::~QmlDebugConnection() { - d->disconnected(); + Q_D(QmlDebugConnection); + socketDisconnected(); QHash<QString, QmlDebugClient*>::iterator iter = d->plugins.begin(); for (; iter != d->plugins.end(); ++iter) iter.value()->d_func()->connection = 0; } -bool QmlDebugConnection::isOpen() const +bool QmlDebugConnection::isConnected() const { + Q_D(const QmlDebugConnection); // gotHello can only be set if the connection is open. return d->gotHello; } bool QmlDebugConnection::isConnecting() const { - return !isOpen() && d->device; + Q_D(const QmlDebugConnection); + return !d->gotHello && d->device; } void QmlDebugConnection::close() { + Q_D(QmlDebugConnection); if (d->device && d->device->isOpen()) d->device->close(); // will trigger disconnected() at some point. } +QmlDebugClient *QmlDebugConnection::client(const QString &name) const +{ + Q_D(const QmlDebugConnection); + return d->plugins.value(name, 0); +} + +bool QmlDebugConnection::addClient(const QString &name, QmlDebugClient *client) +{ + Q_D(QmlDebugConnection); + if (d->plugins.contains(name)) + return false; + d->plugins.insert(name, client); + d->advertisePlugins(); + return true; +} + +bool QmlDebugConnection::removeClient(const QString &name) +{ + Q_D(QmlDebugConnection); + if (!d->plugins.contains(name)) + return false; + d->plugins.remove(name); + d->advertisePlugins(); + return true; +} + +float QmlDebugConnection::serviceVersion(const QString &serviceName) const +{ + Q_D(const QmlDebugConnection); + return d->serverPlugins.value(serviceName, -1); +} + +bool QmlDebugConnection::sendMessage(const QString &name, const QByteArray &message) +{ + Q_D(QmlDebugConnection); + if (!d->gotHello || !d->serverPlugins.contains(name)) + return false; + + QPacket pack(d->currentDataStreamVersion); + pack << name << message; + d->protocol->send(pack.data()); + d->flush(); + return true; +} + void QmlDebugConnectionPrivate::flush() { QAbstractSocket *socket = qobject_cast<QAbstractSocket*>(device); @@ -317,32 +358,80 @@ void QmlDebugConnectionPrivate::flush() void QmlDebugConnection::connectToHost(const QString &hostName, quint16 port) { - d->disconnected(); - emit stateMessage(tr("Connecting to debug server at %1:%2 ...") - .arg(hostName).arg(QString::number(port))); - QTcpSocket *socket = new QTcpSocket(d); + Q_D(QmlDebugConnection); + socketDisconnected(); + QTcpSocket *socket = new QTcpSocket(this); socket->setProxy(QNetworkProxy::NoProxy); d->device = socket; - d->protocol = new QPacketProtocol(d->device, this); - connect(d->protocol, SIGNAL(readyRead()), d, SLOT(readyRead())); - connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), - d, SLOT(stateChanged(QAbstractSocket::SocketState))); - connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), - d, SLOT(error(QAbstractSocket::SocketError))); - connect(socket, SIGNAL(connected()), d, SLOT(connected())); - connect(socket, SIGNAL(disconnected()), d, SLOT(disconnected())); + d->protocol = new QPacketProtocol(socket, this); + QObject::connect(d->protocol, &QPacketProtocol::readyRead, + this, &QmlDebugConnection::protocolReadyRead); + connect(socket, &QAbstractSocket::stateChanged, this, &QmlDebugConnection::socketStateChanged); + connect(socket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> + (&QAbstractSocket::error), this, &QmlDebugConnection::socketError); + connect(socket, &QAbstractSocket::connected, this, &QmlDebugConnection::socketConnected); + connect(socket, &QAbstractSocket::disconnected, this, &QmlDebugConnection::socketDisconnected); socket->connectToHost(hostName, port); } -// +void QmlDebugConnection::startLocalServer(const QString &fileName) +{ + Q_D(QmlDebugConnection); + if (d->gotHello) + close(); + if (d->server) + d->server->deleteLater(); + d->server = new QLocalServer(this); + // QueuedConnection so that waitForNewConnection() returns true. + connect(d->server, SIGNAL(newConnection()), this, SLOT(newConnection()), Qt::QueuedConnection); + d->server->listen(fileName); +} + +void QmlDebugConnection::newConnection() +{ + Q_D(QmlDebugConnection); + delete d->device; + QLocalSocket *socket = d->server->nextPendingConnection(); + d->server->close(); + d->device = socket; + delete d->protocol; + d->protocol = new QPacketProtocol(socket, this); + QObject::connect(d->protocol, &QPacketProtocol::readyRead, + this, &QmlDebugConnection::protocolReadyRead); + + connect(socket, &QLocalSocket::disconnected, this, &QmlDebugConnection::socketDisconnected); + + connect(socket, static_cast<void (QLocalSocket::*)(QLocalSocket::LocalSocketError)> + (&QLocalSocket::error), this, [this](QLocalSocket::LocalSocketError error) { + socketError(static_cast<QAbstractSocket::SocketError>(error)); + }); + + connect(socket, &QLocalSocket::stateChanged, + this, [this](QLocalSocket::LocalSocketState state) { + socketStateChanged(static_cast<QAbstractSocket::SocketState>(state)); + }); + + socketConnected(); +} + +int QmlDebugConnection::currentDataStreamVersion() const +{ + Q_D(const QmlDebugConnection); + return d->currentDataStreamVersion; +} + +void QmlDebugConnection::setMaximumDataStreamVersion(int maximumVersion) +{ + Q_D(QmlDebugConnection); + d->maximumDataStreamVersion = maximumVersion; +} QmlDebugClientPrivate::QmlDebugClientPrivate() : connection(0) { } -QmlDebugClient::QmlDebugClient(const QString &name, - QmlDebugConnection *parent) +QmlDebugClient::QmlDebugClient(const QString &name, QmlDebugConnection *parent) : QObject(parent), d_ptr(new QmlDebugClientPrivate()) { Q_D(QmlDebugClient); @@ -352,22 +441,15 @@ QmlDebugClient::QmlDebugClient(const QString &name, if (!d->connection) return; - if (d->connection->d->plugins.contains(name)) { - qWarning() << "QML Debug Client: Conflicting plugin name" << name; - d->connection = 0; - } else { - d->connection->d->plugins.insert(name, this); - d->connection->d->advertisePlugins(); - } + d->connection->addClient(name, this); } QmlDebugClient::~QmlDebugClient() { Q_D(const QmlDebugClient); - if (d->connection && d->connection->d) { - d->connection->d->plugins.remove(d->name); - d->connection->d->advertisePlugins(); - } + + if (d->connection) + d->connection->removeClient(d->name); } QString QmlDebugClient::name() const @@ -376,40 +458,43 @@ QString QmlDebugClient::name() const return d->name; } -int QmlDebugClient::remoteVersion() const +float QmlDebugClient::serviceVersion() const { Q_D(const QmlDebugClient); // The version is internally saved as float for compatibility reasons. Exposing that to clients // is a bad idea because floats cannot be properly compared. IEEE 754 floats represent integers // exactly up to about 2^24, so the cast shouldn't be a problem for any realistic version // numbers. - if (d->connection && d->connection->d->serverPlugins.contains(d->name)) - return static_cast<int>(d->connection->d->serverPlugins.value(d->name)); + if (d->connection) + return d->connection->serviceVersion(d->name); return -1; } QmlDebugClient::State QmlDebugClient::state() const { Q_D(const QmlDebugClient); - if (!d->connection || !d->connection->isOpen()) + if (!d->connection || !d->connection->isConnected()) return NotConnected; - if (d->connection->d->serverPlugins.contains(d->name)) + if (d->connection->client(d->name) == this) return Enabled; return Unavailable; } +QmlDebugConnection *QmlDebugClient::connection() const +{ + Q_D(const QmlDebugClient); + return d->connection; +} + void QmlDebugClient::sendMessage(const QByteArray &message) { Q_D(QmlDebugClient); if (state() != Enabled) return; - QPacket pack; - pack << d->name << message; - d->connection->d->protocol->send(pack); - d->connection->d->flush(); + d->connection->sendMessage(d->name, message); } void QmlDebugClient::stateChanged(State) @@ -420,30 +505,4 @@ void QmlDebugClient::messageReceived(const QByteArray &) { } -QmlDebugStream::QmlDebugStream() - : QDataStream() -{ - setVersion(QmlDebugClient::s_dataStreamVersion); -} - -QmlDebugStream::QmlDebugStream(QIODevice *d) - : QDataStream(d) -{ - setVersion(QmlDebugClient::s_dataStreamVersion); -} - -QmlDebugStream::QmlDebugStream(QByteArray *ba, QIODevice::OpenMode flags) - : QDataStream(ba, flags) -{ - setVersion(QmlDebugClient::s_dataStreamVersion); -} - -QmlDebugStream::QmlDebugStream(const QByteArray &ba) - : QDataStream(ba) -{ - setVersion(QmlDebugClient::s_dataStreamVersion); -} - } // namespace QmlDebug - -#include <qmldebugclient.moc> diff --git a/src/libs/qmldebug/qmldebugclient.h b/src/libs/qmldebug/qmldebugclient.h index 01c871ba09..862f058c17 100644 --- a/src/libs/qmldebug/qmldebugclient.h +++ b/src/libs/qmldebug/qmldebugclient.h @@ -36,42 +36,53 @@ #include <QDataStream> -namespace QDebugSupport { -enum Error { - RemoteClosedConnectionError, - UnknownError -}; -} - namespace QmlDebug { +class QmlDebugClient; class QmlDebugConnectionPrivate; class QMLDEBUG_EXPORT QmlDebugConnection : public QObject { Q_OBJECT Q_DISABLE_COPY(QmlDebugConnection) + Q_DECLARE_PRIVATE(QmlDebugConnection) public: QmlDebugConnection(QObject * = 0); ~QmlDebugConnection(); void connectToHost(const QString &hostName, quint16 port); + void startLocalServer(const QString &fileName); - bool isOpen() const; + int currentDataStreamVersion() const; + void setMaximumDataStreamVersion(int maximumVersion); + + bool isConnected() const; bool isConnecting() const; void close(); + QmlDebugClient *client(const QString &name) const; + bool addClient(const QString &name, QmlDebugClient *client); + bool removeClient(const QString &name); + + float serviceVersion(const QString &serviceName) const; + bool sendMessage(const QString &name, const QByteArray &message); + + static QString socketStateToString(QAbstractSocket::SocketState state); + static QString socketErrorToString(QAbstractSocket::SocketError error); + signals: - void opened(); - void error(QDebugSupport::Error); - void closed(); - void stateMessage(const QString &message); - void errorMessage(const QString &message); + void connected(); + void disconnected(); + void socketError(QAbstractSocket::SocketError error); + void socketStateChanged(QAbstractSocket::SocketState state); + +private slots: + void newConnection(); + void socketConnected(); + void socketDisconnected(); + void protocolReadyRead(); private: - friend class QmlDebugConnectionPrivate; - QmlDebugConnectionPrivate *d; - friend class QmlDebugClient; - friend class QmlDebugClientPrivate; + QScopedPointer<QmlDebugConnectionPrivate> d_ptr; }; class QmlDebugClientPrivate; @@ -88,8 +99,9 @@ public: ~QmlDebugClient(); QString name() const; - int remoteVersion() const; + float serviceVersion() const; State state() const; + QmlDebugConnection *connection() const; virtual void sendMessage(const QByteArray &); @@ -99,20 +111,7 @@ protected: private: friend class QmlDebugConnection; - friend class QmlDebugConnectionPrivate; QScopedPointer<QmlDebugClientPrivate> d_ptr; - -public: - static int s_dataStreamVersion; -}; - -class QMLDEBUG_EXPORT QmlDebugStream : public QDataStream -{ -public: - QmlDebugStream(); - explicit QmlDebugStream(QIODevice *d); - QmlDebugStream(QByteArray *ba, QIODevice::OpenMode flags); - QmlDebugStream(const QByteArray &ba); }; } // namespace QmlDebug diff --git a/src/libs/qmldebug/qmldebugcommandlinearguments.h b/src/libs/qmldebug/qmldebugcommandlinearguments.h index cfa26d929d..fd2c5645b0 100644 --- a/src/libs/qmldebug/qmldebugcommandlinearguments.h +++ b/src/libs/qmldebug/qmldebugcommandlinearguments.h @@ -50,7 +50,7 @@ static inline QString qmlDebugServices(QmlDebugServicesPreset preset) case QmlDebuggerServices: return QStringLiteral("DebugMessages,QmlDebugger,V8Debugger,QmlInspector"); case QmlProfilerServices: - return QStringLiteral("CanvasFrameRate,EngineControl"); + return QStringLiteral("CanvasFrameRate,EngineControl,DebugMessages"); case QmlNativeDebuggerServices: return QStringLiteral("NativeQmlDebugger"); default: @@ -60,18 +60,31 @@ static inline QString qmlDebugServices(QmlDebugServicesPreset preset) } static inline QString qmlDebugCommandLineArguments(QmlDebugServicesPreset services, - quint16 port = 0) + const QString &connectionMode, bool block) { if (services == NoQmlDebugServices) return QString(); - if (services == QmlNativeDebuggerServices) - return QString::fromLatin1("-qmljsdebugger=native,services:%1") - .arg(qmlDebugServices(services)); + return QString::fromLatin1("-qmljsdebugger=%1%2,services:%3").arg(connectionMode) + .arg(QLatin1String(block ? ",block" : "")).arg(qmlDebugServices(services)); +} + +static inline QString qmlDebugTcpArguments(QmlDebugServicesPreset services, quint16 port = 0, + bool block = true) +{ + return qmlDebugCommandLineArguments(services, port ? QString::fromLatin1("port:%1").arg(port) : + QStringLiteral("port:%qml_port%"), block); +} - return QString::fromLatin1("-qmljsdebugger=port:%1,block,services:%2") - .arg(port ? QString::number(port) : QStringLiteral("%qml_port%")) - .arg(qmlDebugServices(services)); +static inline QString qmlDebugNativeArguments(QmlDebugServicesPreset services, bool block = true) +{ + return qmlDebugCommandLineArguments(services, QLatin1String("native"), block); +} + +static inline QString qmlDebugLocalArguments(QmlDebugServicesPreset services, const QString &socket, + bool block = true) +{ + return qmlDebugCommandLineArguments(services, QLatin1String("file:") + socket, block); } } // namespace QmlDebug diff --git a/src/libs/qmldebug/qmldebugconstants.h b/src/libs/qmldebug/qmldebugconstants.h index 0431d707b8..bd73cd0c98 100644 --- a/src/libs/qmldebug/qmldebugconstants.h +++ b/src/libs/qmldebug/qmldebugconstants.h @@ -38,8 +38,8 @@ const char STR_WAITING_FOR_CONNECTION[] = "Waiting for connection "; const char STR_ON_PORT_PATTERN[] = "on port (\\d+)"; const char STR_UNABLE_TO_LISTEN[] = "Unable to listen "; const char STR_IGNORING_DEBUGGER[] = "Ignoring \"-qmljsdebugger="; -const char STR_IGNORING_DEBUGGER2[] = "Ignoring\"-qmljsdebugger="; // There is (was?) a bug in one of the error strings - safest to handle both const char STR_CONNECTION_ESTABLISHED[] = "Connection established"; +const char STR_CONNECTING_TO_SOCKET[] = "Connecting to socket"; const char QDECLARATIVE_ENGINE[] = "QDeclarativeEngine"; diff --git a/src/libs/qmldebug/qmloutputparser.cpp b/src/libs/qmldebug/qmloutputparser.cpp index ed65274a1d..b6c5e98a98 100644 --- a/src/libs/qmldebug/qmloutputparser.cpp +++ b/src/libs/qmldebug/qmloutputparser.cpp @@ -77,8 +77,8 @@ void QmlOutputParser::processOutput(const QString &output) static QString waitingForConnection = QLatin1String(Constants::STR_WAITING_FOR_CONNECTION); static QString unableToListen = QLatin1String(Constants::STR_UNABLE_TO_LISTEN); static QString debuggingNotEnabled = QLatin1String(Constants::STR_IGNORING_DEBUGGER); - static QString debuggingNotEnabled2 = QLatin1String(Constants::STR_IGNORING_DEBUGGER2); static QString connectionEstablished = QLatin1String(Constants::STR_CONNECTION_ESTABLISHED); + static QString connectingToSocket = QLatin1String(Constants::STR_CONNECTING_TO_SOCKET); if (status.startsWith(waitingForConnection)) { status.remove(0, waitingForConnection.size()); // chop of 'Waiting for connection ' @@ -95,11 +95,13 @@ void QmlOutputParser::processOutput(const QString &output) } else if (status.startsWith(unableToListen)) { //: Error message shown after 'Could not connect ... debugger:" emit errorMessage(tr("The port seems to be in use.")); - } else if (status.startsWith(debuggingNotEnabled) || status.startsWith(debuggingNotEnabled2)) { + } else if (status.startsWith(debuggingNotEnabled)) { //: Error message shown after 'Could not connect ... debugger:" emit errorMessage(tr("The application is not set up for QML/JS debugging.")); } else if (status.startsWith(connectionEstablished)) { emit connectionEstablishedMessage(); + } else if (status.startsWith(connectingToSocket)) { + emit connectingToSocketMessage(); } else { emit unknownMessage(status); } diff --git a/src/libs/qmldebug/qmloutputparser.h b/src/libs/qmldebug/qmloutputparser.h index ecac308ef3..5390ecf77c 100644 --- a/src/libs/qmldebug/qmloutputparser.h +++ b/src/libs/qmldebug/qmloutputparser.h @@ -49,6 +49,7 @@ public: signals: void waitingForConnectionOnPort(quint16 port); void connectionEstablishedMessage(); + void connectingToSocketMessage(); void errorMessage(const QString &detailedError); void unknownMessage(const QString &unknownMessage); void noOutputMessage(); diff --git a/src/libs/qmldebug/qmlprofilereventtypes.h b/src/libs/qmldebug/qmlprofilereventtypes.h index 5ada64c4e9..1842fdb34c 100644 --- a/src/libs/qmldebug/qmlprofilereventtypes.h +++ b/src/libs/qmldebug/qmlprofilereventtypes.h @@ -45,6 +45,7 @@ enum Message { PixmapCacheEvent, SceneGraphFrame, MemoryAllocation, + DebugMessage, MaximumMessage }; @@ -91,6 +92,21 @@ enum PixmapEventType { MaximumPixmapEventType }; +enum InputEventType { + InputKeyPress, + InputKeyRelease, + InputKeyUnknown, + + InputMousePress, + InputMouseRelease, + InputMouseMove, + InputMouseDoubleClick, + InputMouseWheel, + InputMouseUnknown, + + MaximumInputEventType +}; + enum SceneGraphFrameType { SceneGraphRendererFrame, // Render Thread SceneGraphAdaptationLayerFrame, // Render Thread @@ -133,6 +149,7 @@ enum ProfileFeature { ProfileBinding, ProfileHandlingSignal, ProfileInputEvents, + ProfileDebugMessages, MaximumProfileFeature }; diff --git a/src/libs/qmldebug/qmlprofilertraceclient.cpp b/src/libs/qmldebug/qmlprofilertraceclient.cpp index 6c222e91a8..1040129661 100644 --- a/src/libs/qmldebug/qmlprofilertraceclient.cpp +++ b/src/libs/qmldebug/qmlprofilertraceclient.cpp @@ -30,6 +30,8 @@ #include "qmlprofilertraceclient.h" #include "qmlenginecontrolclient.h" +#include "qdebugmessageclient.h" +#include "qpacketprotocol.h" namespace QmlDebug { @@ -53,6 +55,7 @@ public: QmlProfilerTraceClient *q; QmlEngineControlClient engineControl; + QScopedPointer<QDebugMessageClient> messageClient; qint64 inProgressRanges; QStack<qint64> rangeStartTimes[MaximumRangeType]; QStack<QString> rangeDatas[MaximumRangeType]; @@ -70,25 +73,22 @@ public: using namespace QmlDebug; -static const int GAP_TIME = 150; - void QmlProfilerTraceClientPrivate::sendRecordingStatus(int engineId) { - QByteArray ba; - QmlDebugStream stream(&ba, QIODevice::WriteOnly); + QPacket stream(q->connection()->currentDataStreamVersion()); stream << recording << engineId; // engineId -1 is OK. It means "all of them" if (recording) stream << requestedFeatures << flushInterval; - q->sendMessage(ba); + q->sendMessage(stream.data()); } QmlProfilerTraceClient::QmlProfilerTraceClient(QmlDebugConnection *client, quint64 features) : QmlDebugClient(QLatin1String("CanvasFrameRate"), client) , d(new QmlProfilerTraceClientPrivate(this, client)) { - d->requestedFeatures = features; - connect(&d->engineControl, SIGNAL(engineAboutToBeAdded(int,QString)), - this, SLOT(sendRecordingStatus(int))); + setRequestedFeatures(features); + connect(&d->engineControl, &QmlEngineControlClient::engineAboutToBeAdded, + this, &QmlProfilerTraceClient::newEngine); } QmlProfilerTraceClient::~QmlProfilerTraceClient() @@ -121,11 +121,6 @@ void QmlProfilerTraceClient::sendRecordingStatus(int engineId) d->sendRecordingStatus(engineId); } -bool QmlProfilerTraceClient::isEnabled() const -{ - return state() == Enabled; -} - bool QmlProfilerTraceClient::isRecording() const { return d->recording; @@ -152,6 +147,17 @@ quint64 QmlProfilerTraceClient::recordedFeatures() const void QmlProfilerTraceClient::setRequestedFeatures(quint64 features) { d->requestedFeatures = features; + if (features & static_cast<quint64>(1) << ProfileDebugMessages) { + d->messageClient.reset(new QDebugMessageClient(connection())); + connect(d->messageClient.data(), &QDebugMessageClient::message, this, [this](QtMsgType type, + const QString &text, const QmlDebug::QDebugContextInfo &context) + { + emit debugMessage(type, context.timestamp, text, + QmlDebug::QmlEventLocation(context.file, context.line, 1)); + }); + } else { + d->messageClient.reset(); + } } void QmlProfilerTraceClient::setFlushInterval(quint32 flushInterval) @@ -179,15 +185,15 @@ bool QmlProfilerTraceClientPrivate::updateFeatures(ProfileFeature feature) return true; } -void QmlProfilerTraceClient::stateChanged(State /*status*/) +void QmlProfilerTraceClient::stateChanged(State status) { - emit enabledChanged(); + if (status == Enabled) + sendRecordingStatus(-1); } void QmlProfilerTraceClient::messageReceived(const QByteArray &data) { - QByteArray rwData = data; - QmlDebugStream stream(&rwData, QIODevice::ReadOnly); + QPacket stream(connection()->currentDataStreamVersion(), data); qint64 time; int messageType; @@ -199,9 +205,6 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) else subtype = -1; - if (time > (d->maximumTime + GAP_TIME) && 0 == d->inProgressRanges) - emit gap(time); - switch (messageType) { case Event: { switch (subtype) { @@ -214,7 +217,7 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) stream >> id; engineIds << id; } - emit this->traceStarted(time, engineIds); + emit traceStarted(time, engineIds); d->maximumTime = time; break; } @@ -225,7 +228,7 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) stream >> id; engineIds << id; } - emit this->traceFinished(time, engineIds); + emit traceFinished(time, engineIds); d->maximumTime = time; d->maximumTime = qMax(time, d->maximumTime); break; @@ -251,9 +254,18 @@ void QmlProfilerTraceClient::messageReceived(const QByteArray &data) case Mouse: if (!d->updateFeatures(ProfileInputEvents)) break; + int inputType = (subtype == Key ? InputKeyUnknown : InputMouseUnknown); + if (!stream.atEnd()) + stream >> inputType; + int a = -1; + if (!stream.atEnd()) + stream >> a; + int b = -1; + if (!stream.atEnd()) + stream >> b; - emit this->rangedEvent(Event, MaximumRangeType, subtype, time, 0, QString(), - QmlEventLocation(), 0, 0, 0, 0, 0); + emit rangedEvent(Event, MaximumRangeType, subtype, time, 0, QString(), + QmlEventLocation(), inputType, a, b, 0, 0); d->maximumTime = qMax(time, d->maximumTime); break; } diff --git a/src/libs/qmldebug/qmlprofilertraceclient.h b/src/libs/qmldebug/qmlprofilertraceclient.h index 71def3772d..7dcfe9d84d 100644 --- a/src/libs/qmldebug/qmlprofilertraceclient.h +++ b/src/libs/qmldebug/qmlprofilertraceclient.h @@ -44,7 +44,6 @@ namespace QmlDebug { class QMLDEBUG_EXPORT QmlProfilerTraceClient : public QmlDebug::QmlDebugClient { Q_OBJECT - Q_PROPERTY(bool enabled READ isEnabled NOTIFY enabledChanged) Q_PROPERTY(bool recording READ isRecording WRITE setRecording NOTIFY recordingChanged) // don't hide by signal @@ -54,7 +53,6 @@ public: QmlProfilerTraceClient(QmlDebugConnection *client, quint64 features); ~QmlProfilerTraceClient(); - bool isEnabled() const; bool isRecording() const; void setRecording(bool); quint64 recordedFeatures() const; @@ -67,17 +65,18 @@ public slots: signals: void complete(qint64 maximumTime); - void gap(qint64 time); void traceFinished(qint64 time, const QList<int> &engineIds); void traceStarted(qint64 time, const QList<int> &engineIds); void rangedEvent(QmlDebug::Message, QmlDebug::RangeType, int detailType, qint64 startTime, qint64 length, const QString &data, const QmlDebug::QmlEventLocation &location, qint64 param1, qint64 param2, qint64 param3, qint64 param4, qint64 param5); + void debugMessage(QtMsgType type, qint64 timestamp, const QString &text, + const QmlDebug::QmlEventLocation &location); void recordingChanged(bool arg); void recordedFeaturesChanged(quint64 features); + void newEngine(int engineId); - void enabledChanged(); void cleared(); protected: diff --git a/src/libs/qmldebug/qmltoolsclient.cpp b/src/libs/qmldebug/qmltoolsclient.cpp index 1287c0f45a..385d7c68fb 100644 --- a/src/libs/qmldebug/qmltoolsclient.cpp +++ b/src/libs/qmldebug/qmltoolsclient.cpp @@ -106,7 +106,7 @@ void QmlToolsClient::setObjectIdList( void QmlToolsClient::reload(const QHash<QString, QByteArray> &changesHash) { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; m_reloadQueryId = m_requestId; @@ -123,7 +123,7 @@ void QmlToolsClient::reload(const QHash<QString, QByteArray> &changesHash) void QmlToolsClient::setDesignModeBehavior(bool inDesignMode) { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; @@ -156,7 +156,7 @@ void QmlToolsClient::changeToZoomTool() void QmlToolsClient::showAppOnTop(bool showOnTop) { - if (!m_connection || !m_connection->isOpen()) + if (!m_connection || !m_connection->isConnected()) return; QByteArray message; diff --git a/src/libs/qmldebug/qpacketprotocol.cpp b/src/libs/qmldebug/qpacketprotocol.cpp index 6ec50f7b02..0bf46b6ba5 100644 --- a/src/libs/qmldebug/qpacketprotocol.cpp +++ b/src/libs/qmldebug/qpacketprotocol.cpp @@ -30,7 +30,6 @@ #include "qpacketprotocol.h" -#include <qbuffer.h> #include <qelapsedtimer.h> namespace QmlDebug { @@ -109,26 +108,23 @@ public: { Q_ASSERT(4 == sizeof(qint32)); - QObject::connect(this, SIGNAL(readyRead()), - parent, SIGNAL(readyRead())); - QObject::connect(this, SIGNAL(packetWritten()), - parent, SIGNAL(packetWritten())); - QObject::connect(this, SIGNAL(invalidPacket()), - parent, SIGNAL(invalidPacket())); - QObject::connect(dev, SIGNAL(readyRead()), - this, SLOT(readyToRead())); - QObject::connect(dev, SIGNAL(aboutToClose()), - this, SLOT(aboutToClose())); - QObject::connect(dev, SIGNAL(bytesWritten(qint64)), - this, SLOT(bytesWritten(qint64))); + QObject::connect(this, &QPacketProtocolPrivate::readyRead, + parent, &QPacketProtocol::readyRead); + QObject::connect(this, &QPacketProtocolPrivate::invalidPacket, + parent, &QPacketProtocol::invalidPacket); + QObject::connect(dev, &QIODevice::readyRead, + this, &QPacketProtocolPrivate::readyToRead); + QObject::connect(dev, &QIODevice::aboutToClose, + this, &QPacketProtocolPrivate::aboutToClose); + QObject::connect(dev, &QIODevice::bytesWritten, + this, &QPacketProtocolPrivate::bytesWritten); } -Q_SIGNALS: +signals: void readyRead(); - void packetWritten(); void invalidPacket(); -public Q_SLOTS: +public slots: void aboutToClose() { inProgress.clear(); @@ -147,7 +143,6 @@ public Q_SLOTS: } else { bytes -= sendingPackets.at(0); sendingPackets.removeFirst(); - emit packetWritten(); } } } @@ -168,12 +163,12 @@ public Q_SLOTS: // Check sizing constraints if (inProgressSize > maxPacketSize) { - QObject::disconnect(dev, SIGNAL(readyRead()), - this, SLOT(readyToRead())); - QObject::disconnect(dev, SIGNAL(aboutToClose()), - this, SLOT(aboutToClose())); - QObject::disconnect(dev, SIGNAL(bytesWritten(qint64)), - this, SLOT(bytesWritten(qint64))); + QObject::disconnect(dev, &QIODevice::readyRead, + this, &QPacketProtocolPrivate::readyToRead); + QObject::disconnect(dev, &QIODevice::aboutToClose, + this, &QPacketProtocolPrivate::aboutToClose); + QObject::disconnect(dev, &QIODevice::bytesWritten, + this, &QPacketProtocolPrivate::bytesWritten); dev = 0; emit invalidPacket(); return; @@ -218,69 +213,21 @@ QPacketProtocol::QPacketProtocol(QIODevice *dev, QObject *parent) } /*! - Destroys the QPacketProtocol instance. - */ -QPacketProtocol::~QPacketProtocol() -{ -} - -/*! - Returns the maximum packet size allowed. By default this is - 2,147,483,647 bytes. - - If a packet claiming to be larger than the maximum packet size is received, - the QPacketProtocol::invalidPacket() signal is emitted. - - \sa QPacketProtocol::setMaximumPacketSize() - */ -qint32 QPacketProtocol::maximumPacketSize() const -{ - return d->maxPacketSize; -} - -/*! - Sets the maximum allowable packet size to \a max. - - \sa QPacketProtocol::maximumPacketSize() - */ -qint32 QPacketProtocol::setMaximumPacketSize(qint32 max) -{ - if (max > (signed)sizeof(qint32)) - d->maxPacketSize = max; - return d->maxPacketSize; -} - -/*! - Returns a streamable object that is transmitted on destruction. For example - - \code - protocol.send() << "Hello world" << 123; - \endcode - - will send a packet containing "Hello world" and 123. To construct more - complex packets, explicitly construct a QPacket instance. - */ -QPacketAutoSend QPacketProtocol::send() -{ - return QPacketAutoSend(this); -} - -/*! Transmits the packet \a p. */ -void QPacketProtocol::send(const QPacket & p) +void QPacketProtocol::send(const QByteArray &p) { - if (p.b.isEmpty()) + if (p.isEmpty()) return; // We don't send empty packets - qint64 sendSize = p.b.size() + sizeof(qint32); + qint64 sendSize = p.size() + sizeof(qint32); d->sendingPackets.append(sendSize); qint32 sendSize32 = sendSize; qint64 writeBytes = d->dev->write((char *)&sendSize32, sizeof(qint32)); Q_ASSERT(writeBytes == sizeof(qint32)); - writeBytes = d->dev->write(p.b); - Q_ASSERT(writeBytes == p.b.size()); + writeBytes = d->dev->write(p); + Q_ASSERT(writeBytes == p.size()); Q_UNUSED(writeBytes); // For building in release mode. } @@ -293,25 +240,15 @@ qint64 QPacketProtocol::packetsAvailable() const } /*! - Discards any unread packets. - */ -void QPacketProtocol::clear() -{ - d->packets.clear(); -} - -/*! Returns the next unread packet, or an invalid QPacket instance if no packets are available. This function does NOT block. */ -QPacket QPacketProtocol::read() +QByteArray QPacketProtocol::read() { if (0 == d->packets.count()) - return QPacket(); + return QByteArray(); - QPacket rv(d->packets.at(0)); - d->packets.removeFirst(); - return rv; + return d->packets.takeFirst(); } @@ -358,14 +295,6 @@ bool QPacketProtocol::waitForReadyRead(int msecs) } /*! - Returns the QIODevice passed to the QPacketProtocol constructor. -*/ -QIODevice *QPacketProtocol::device() -{ - return d->dev; -} - -/*! \fn void QPacketProtocol::readyRead() Emitted whenever a new packet is received. Applications may use @@ -381,13 +310,6 @@ QIODevice *QPacketProtocol::device() */ /*! - \fn void QPacketProtocol::packetWritten() - - Emitted each time a packet is completely written to the device. This signal - may be used for communications flow control. - */ - -/*! \class QPacket \internal @@ -434,55 +356,22 @@ QIODevice *QPacketProtocol::device() /*! Constructs an empty write-only packet. */ -QPacket::QPacket() - : QDataStream(), buf(0) +QPacket::QPacket(int version) { - buf = new QBuffer(&b); - buf->open(QIODevice::WriteOnly); - setDevice(buf); - setVersion(QDataStream::Qt_4_7); + buf.open(QIODevice::WriteOnly); + setDevice(&buf); + setVersion(version); } /*! - Destroys the QPacket instance. - */ -QPacket::~QPacket() -{ - if (buf) { - delete buf; - buf = 0; - } -} - -/*! - Creates a copy of \a other. The initial stream positions are shared, but the - two packets are otherwise independent. + Constructs a read-only packet. */ -QPacket::QPacket(const QPacket & other) - : QDataStream(), b(other.b), buf(0) +QPacket::QPacket(int version, const QByteArray &data) { - buf = new QBuffer(&b); - buf->open(other.buf->openMode()); - setDevice(buf); -} - -/*! - \internal - */ -QPacket::QPacket(const QByteArray & ba) - : QDataStream(), b(ba), buf(0) -{ - buf = new QBuffer(&b); - buf->open(QIODevice::ReadOnly); - setDevice(buf); -} - -/*! - Returns true if this packet is empty - that is, contains no data. - */ -bool QPacket::isEmpty() const -{ - return b.isEmpty(); + buf.setData(data); + buf.open(QIODevice::ReadOnly); + setDevice(&buf); + setVersion(version); } /*! @@ -490,48 +379,7 @@ bool QPacket::isEmpty() const */ QByteArray QPacket::data() const { - return b; -} - -/*! - Clears data in the packet. This is useful for reusing one writable packet. - For example - \code - QPacketProtocol protocol(...); - - QPacket packet; - - packet << "Hello world!" << 123; - protocol.send(packet); - - packet.clear(); - packet << "Goodbyte world!" << 789; - protocol.send(packet); - \endcode - */ -void QPacket::clear() -{ - QBuffer::OpenMode oldMode = buf->openMode(); - buf->close(); - b.clear(); - buf->setBuffer(&b); // reset QBuffer internals with new size of b. - buf->open(oldMode); -} - -/*! - \class QPacketAutoSend - \internal - - */ -QPacketAutoSend::QPacketAutoSend(QPacketProtocol *_p) - : QPacket(), p(_p) -{ -} - -QPacketAutoSend::~QPacketAutoSend() -{ - if (!b.isEmpty()) - p->send(*this); + return buf.data(); } } // namespace QmlDebug diff --git a/src/libs/qmldebug/qpacketprotocol.h b/src/libs/qmldebug/qpacketprotocol.h index 1d3871f8e2..7903c2c7ed 100644 --- a/src/libs/qmldebug/qpacketprotocol.h +++ b/src/libs/qmldebug/qpacketprotocol.h @@ -31,81 +31,49 @@ #ifndef QPACKETPROTOCOL_H #define QPACKETPROTOCOL_H +#include "qmldebug_global.h" + #include <qobject.h> #include <qdatastream.h> +#include <qbuffer.h> QT_BEGIN_NAMESPACE class QIODevice; -class QBuffer; QT_END_NAMESPACE namespace QmlDebug { -class QPacket; -class QPacketAutoSend; - class QPacketProtocolPrivate; - -class QPacketProtocol : public QObject +class QMLDEBUG_EXPORT QPacketProtocol : public QObject { Q_OBJECT - + Q_DECLARE_PRIVATE(QPacketProtocol) public: explicit QPacketProtocol(QIODevice *dev, QObject *parent = 0); - virtual ~QPacketProtocol(); - - qint32 maximumPacketSize() const; - qint32 setMaximumPacketSize(qint32); - - QPacketAutoSend send(); - void send(const QPacket &); + void send(const QByteArray &data); qint64 packetsAvailable() const; - QPacket read(); - + QByteArray read(); bool waitForReadyRead(int msecs = 3000); - void clear(); - - QIODevice *device(); - Q_SIGNALS: void readyRead(); void invalidPacket(); - void packetWritten(); private: QPacketProtocolPrivate *d; }; - -class QPacket : public QDataStream +class QMLDEBUG_EXPORT QPacket : public QDataStream { public: - QPacket(); - QPacket(const QPacket &); - virtual ~QPacket(); - - void clear(); - bool isEmpty() const; + QPacket(int version); + explicit QPacket(int version, const QByteArray &ba); QByteArray data() const; -protected: - friend class QPacketProtocol; - QPacket(const QByteArray &ba); - QByteArray b; - QBuffer *buf; -}; - -class QPacketAutoSend : public QPacket -{ -public: - virtual ~QPacketAutoSend(); - private: - friend class QPacketProtocol; - QPacketAutoSend(QPacketProtocol *); - QPacketProtocol *p; + void init(QIODevice::OpenMode mode); + QBuffer buf; }; } // QmlDebug diff --git a/src/libs/timeline/qml/MainView.qml b/src/libs/timeline/qml/MainView.qml index 254a27241e..289e0ff6df 100644 --- a/src/libs/timeline/qml/MainView.qml +++ b/src/libs/timeline/qml/MainView.qml @@ -50,8 +50,6 @@ Rectangle { property bool selectionRangeReady: selectionRange.ready property int typeId: content.typeId - onTypeIdChanged: updateCursorPosition() - color: "#dcdcdc" // ***** connections with external objects @@ -93,6 +91,7 @@ Rectangle { zoomSlider.value = zoomSlider.minimumValue; } + // This is called from outside to synchronize the timeline to other views function selectByTypeId(typeId) { if (lockItemSelection || typeId === -1) @@ -130,13 +129,22 @@ Rectangle { if (modelIndex !== -1 && modelIndex < timelineModelAggregator.models.length && itemIndex !== -1) { // select an item, lock to it, and recenter if necessary + + // set this here, so that propagateSelection doesn't trigger updateCursorPosition() + content.typeId = typeId; content.select(modelIndex, itemIndex); content.selectionLocked = true; } } + // This is called from outside to synchronize the timeline to other views function selectByIndices(modelIndex, eventIndex) { + if (modelIndex >= 0 && modelIndex < timelineModelAggregator.models.length && + selectedItem !== -1) { + // set this here, so that propagateSelection doesn't trigger updateCursorPosition() + content.typeId = timelineModelAggregator.models[modelIndex].typeId(eventIndex); + } content.select(modelIndex, eventIndex); } @@ -228,22 +236,22 @@ Rectangle { // update in other views var model = timelineModelAggregator.models[selectedModel]; var eventLocation = model.location(selectedItem); - gotoSourceLocation(eventLocation.file, eventLocation.line, - eventLocation.column); - typeId = model.typeId(selectedItem); + if (eventLocation.file !== undefined) { + root.fileName = eventLocation.file; + root.lineNumber = eventLocation.line; + root.columnNumber = eventLocation.column; + } + var newTypeId = model.typeId(selectedItem); + if (newTypeId !== typeId) { + typeId = newTypeId; + if (eventLocation.file !== undefined) + root.updateCursorPosition(); + } } else { rangeDetails.hide(); } lockItemSelection = false; } - - onGotoSourceLocation: { - if (file !== undefined) { - root.fileName = file; - root.lineNumber = line; - root.columnNumber = column; - } - } } MouseArea { @@ -299,7 +307,7 @@ Rectangle { zoomer: zoomControl onRangeDoubleClicked: { - var diff = 500 - zoomer.selectionDuration; + var diff = zoomer.minimumRangeLength - zoomer.selectionDuration; if (diff > 0) zoomControl.setRange(zoomer.selectionStart - diff / 2, zoomer.selectionEnd + diff / 2); @@ -351,7 +359,6 @@ Rectangle { notes: timelineModelAggregator.notes hasContents: false onRecenterOnItem: { - content.gotoSourceLocation(file, line, column); content.select(selectedModel, selectedItem) } onToggleSelectionLocked: { diff --git a/src/libs/timeline/qml/Overview.qml b/src/libs/timeline/qml/Overview.qml index f1cd43173a..455c98e6f0 100644 --- a/src/libs/timeline/qml/Overview.qml +++ b/src/libs/timeline/qml/Overview.qml @@ -48,7 +48,8 @@ Rectangle { zoomer.traceStart; var newEndTime = rangeMover.rangeRight * zoomer.traceDuration / width + zoomer.traceStart; - if (isFinite(newStartTime) && isFinite(newEndTime) && newEndTime - newStartTime > 500) + if (isFinite(newStartTime) && isFinite(newEndTime) && + newEndTime - newStartTime > zoomer.minimumRangeLength) zoomer.setRange(newStartTime, newEndTime); recursionGuard = false; } diff --git a/src/libs/timeline/qml/RangeDetails.qml b/src/libs/timeline/qml/RangeDetails.qml index 30c7c53556..e8c059bb28 100644 --- a/src/libs/timeline/qml/RangeDetails.qml +++ b/src/libs/timeline/qml/RangeDetails.qml @@ -98,7 +98,7 @@ Item { eventInfo.append({content : eventData[k]}); } } - hasContents = true; + hasContents = eventInfo.count > 0; var location = timelineModel.location(selectedItem) if (location.hasOwnProperty("file")) { // not empty diff --git a/src/libs/timeline/qml/TimelineContent.qml b/src/libs/timeline/qml/TimelineContent.qml index ebc9e892f3..7096a06e25 100644 --- a/src/libs/timeline/qml/TimelineContent.qml +++ b/src/libs/timeline/qml/TimelineContent.qml @@ -47,7 +47,6 @@ ScrollView { property int typeId signal propagateSelection(int newModel, int newItem) - signal gotoSourceLocation(string file, int line, int column) function clearChildren() { diff --git a/src/libs/timeline/timelinerenderer.cpp b/src/libs/timeline/timelinerenderer.cpp index 3d037609f1..08b3683e25 100644 --- a/src/libs/timeline/timelinerenderer.cpp +++ b/src/libs/timeline/timelinerenderer.cpp @@ -205,6 +205,33 @@ void TimelineRenderer::hoverMoveEvent(QHoverEvent *event) event->setAccepted(false); } +void TimelineRenderer::wheelEvent(QWheelEvent *event) +{ + // ctrl-wheel means zoom + if (event->modifiers() & Qt::ControlModifier) { + event->setAccepted(true); + TimelineZoomControl *zoom = zoomer(); + + int degrees = (event->angleDelta().x() + event->angleDelta().y()) / 8; + const qint64 circle = 360; + qint64 mouseTime = event->pos().x() * zoom->windowDuration() / width() + + zoom->windowStart(); + qint64 beforeMouse = (mouseTime - zoom->rangeStart()) * (circle - degrees) / circle; + qint64 afterMouse = (zoom->rangeEnd() - mouseTime) * (circle - degrees) / circle; + + qint64 newStart = qBound(zoom->traceStart(), zoom->traceEnd(), mouseTime - beforeMouse); + if (newStart + zoom->minimumRangeLength() > zoom->traceEnd()) + return; // too close to trace end + + qint64 newEnd = qBound(newStart + zoom->minimumRangeLength(), zoom->traceEnd(), + mouseTime + afterMouse); + + zoom->setRange(newStart, newEnd); + } else { + TimelineAbstractRenderer::wheelEvent(event); + } +} + void TimelineRenderer::TimelineRendererPrivate::manageClicked() { Q_Q(TimelineRenderer); diff --git a/src/libs/timeline/timelinerenderer.h b/src/libs/timeline/timelinerenderer.h index 513b30f75c..ce96488f7f 100644 --- a/src/libs/timeline/timelinerenderer.h +++ b/src/libs/timeline/timelinerenderer.h @@ -66,6 +66,7 @@ protected: virtual void mouseReleaseEvent(QMouseEvent *event); virtual void mouseMoveEvent(QMouseEvent *event); virtual void hoverMoveEvent(QHoverEvent *event); + virtual void wheelEvent(QWheelEvent *event); private: class TimelineRendererPrivate; diff --git a/src/libs/timeline/timelinezoomcontrol.cpp b/src/libs/timeline/timelinezoomcontrol.cpp index 50e59a8c84..2a82bd18b3 100644 --- a/src/libs/timeline/timelinezoomcontrol.cpp +++ b/src/libs/timeline/timelinezoomcontrol.cpp @@ -120,13 +120,13 @@ void TimelineZoomControl::rebuildWindow() qint64 oldWindowStart = m_windowStart; qint64 oldWindowEnd = m_windowEnd; - if (traceDuration() / shownDuration < MAX_ZOOM_FACTOR) { + if (traceDuration() / shownDuration < maximumZoomFactor()) { m_windowStart = m_traceStart; m_windowEnd = m_traceEnd; - } else if (windowDuration() / shownDuration > MAX_ZOOM_FACTOR || - windowDuration() / shownDuration * 2 < MAX_ZOOM_FACTOR || + } else if (windowDuration() / shownDuration > maximumZoomFactor() || + windowDuration() / shownDuration * 2 < maximumZoomFactor() || m_rangeStart < m_windowStart || m_rangeEnd > m_windowEnd) { - qint64 keep = shownDuration * MAX_ZOOM_FACTOR / 2 - shownDuration; + qint64 keep = shownDuration * maximumZoomFactor() / 2 - shownDuration; m_windowStart = m_rangeStart - keep; if (m_windowStart < m_traceStart) { keep += m_traceStart - m_windowStart; @@ -139,7 +139,7 @@ void TimelineZoomControl::rebuildWindow() m_windowEnd = m_traceEnd; } } else { - m_timer.start(500); + m_timer.start(501); } if (oldWindowStart != m_windowStart || oldWindowEnd != m_windowEnd) { bool runTimer = m_timer.isActive(); diff --git a/src/libs/timeline/timelinezoomcontrol.h b/src/libs/timeline/timelinezoomcontrol.h index 6386f117c2..07a39e60d0 100644 --- a/src/libs/timeline/timelinezoomcontrol.h +++ b/src/libs/timeline/timelinezoomcontrol.h @@ -58,8 +58,12 @@ class TIMELINE_EXPORT TimelineZoomControl : public QObject { Q_PROPERTY(bool windowLocked READ windowLocked WRITE setWindowLocked NOTIFY windowLockedChanged) Q_PROPERTY(bool windowMoving READ windowMoving NOTIFY windowMovingChanged) + Q_PROPERTY(qint64 maximumZoomFactor READ maximumZoomFactor CONSTANT) + Q_PROPERTY(qint64 minimumRangeLength READ minimumRangeLength CONSTANT) + public: - static const qint64 MAX_ZOOM_FACTOR = 1 << 10; + qint64 maximumZoomFactor() const { return 1 << 10; } + qint64 minimumRangeLength() const { return 500; } TimelineZoomControl(QObject *parent = 0); qint64 traceStart() const { return m_traceStart; } diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index fa3ebabe5d..b80d2aa33b 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -35,6 +35,8 @@ #include <algorithm> #include <functional> +#include <tuple> + #include <QStringList> namespace Utils @@ -360,6 +362,64 @@ C filtered(const C &container, R (S::*predicate)() const) } ////////////////// +// partition +///////////////// + +// Recommended usage: +// C hit; +// C miss; +// std::tie(hit, miss) = Utils::partition(container, predicate); + +template<typename C, typename F> +Q_REQUIRED_RESULT +std::tuple<C, C> partition(const C &container, F predicate) +{ + C hit; + C miss; + auto hitIns = inserter(hit); + auto missIns = inserter(miss); + foreach (auto i, container) { + if (predicate(i)) + hitIns = i; + else + missIns = i; + } + return std::make_tuple(hit, miss); +} + +template<typename C, typename R, typename S> +Q_REQUIRED_RESULT +std::tuple<C, C> partition(const C &container, R (S::*predicate)() const) +{ + return partition(container, std::mem_fn(predicate)); +} + +////////////////// +// filteredUnique +///////////////// + +template<typename C> +Q_REQUIRED_RESULT +C filteredUnique(const C &container) +{ + C result; + auto ins = inserter(result); + + QSet<typename C::value_type> seen; + int setSize = 0; + + auto endIt = container.end(); + for (auto it = container.begin(); it != endIt; ++it) { + seen.insert(*it); + if (setSize == seen.size()) // unchanged size => was already seen + continue; + ++setSize; + ins = *it; + } + return result; +} + +////////////////// // sort ///////////////// template <typename Container> diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp index 0da1248ceb..5c0dc2a88a 100644 --- a/src/libs/utils/fancylineedit.cpp +++ b/src/libs/utils/fancylineedit.cpp @@ -33,6 +33,8 @@ #include "historycompleter.h" #include "hostosinfo.h" #include "qtcassert.h" +#include "themehelper.h" +#include "stylehelper.h" #include <QAbstractItemView> #include <QDebug> @@ -362,7 +364,10 @@ void FancyLineEdit::setFiltering(bool on) QIcon icon = QIcon::fromTheme(layoutDirection() == Qt::LeftToRight ? QLatin1String("edit-clear-locationbar-rtl") : QLatin1String("edit-clear-locationbar-ltr"), - QIcon::fromTheme(QLatin1String("edit-clear"), QIcon(QLatin1String(":/core/images/editclear.png")))); + QIcon::fromTheme(QLatin1String("edit-clear"), + ThemeHelper::recoloredPixmap( + QLatin1String(":/core/images/editclear.png"), + ThemeHelper::inputfieldIconColor()))); setButtonPixmap(Right, icon.pixmap(16)); setButtonVisible(Right, true); diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 858838fb0a..601605e2b7 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -763,25 +763,6 @@ QTextStream &operator<<(QTextStream &s, const FileName &fn) return s << fn.toString(); } -int FileNameList::removeDuplicates() -{ - QSet<FileName> seen; - int removed = 0; - - for (int i = 0; i < size(); ) { - const FileName &fn = at(i); - if (seen.contains(fn)) { - removeAt(i); - ++removed; - } else { - seen.insert(fn); - ++i; - } - } - - return removed; -} - } // namespace Utils QT_BEGIN_NAMESPACE diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index bcb2fd5f93..523e582b20 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -105,16 +105,7 @@ private: QTCREATOR_UTILS_EXPORT QTextStream &operator<<(QTextStream &s, const FileName &fn); -class QTCREATOR_UTILS_EXPORT FileNameList : public QList<FileName> -{ -public: - inline FileNameList() { } - inline explicit FileNameList(const FileName &i) { append(i); } - inline FileNameList(const FileNameList &l) : QList<FileName>(l) { } - inline FileNameList(const QList<FileName> &l) : QList<FileName>(l) { } - - int removeDuplicates(); -}; +using FileNameList = QList<FileName>; class QTCREATOR_UTILS_EXPORT FileUtils { public: diff --git a/src/libs/utils/projectintropage.cpp b/src/libs/utils/projectintropage.cpp index 55553f6225..f218a61c99 100644 --- a/src/libs/utils/projectintropage.cpp +++ b/src/libs/utils/projectintropage.cpp @@ -60,11 +60,13 @@ namespace Utils { -struct ProjectIntroPagePrivate +class ProjectIntroPagePrivate { +public: ProjectIntroPagePrivate(); Ui::ProjectIntroPage m_ui; bool m_complete; + QRegularExpressionValidator m_projectNameValidator; // Status label style sheets const QString m_errorStyleSheet; const QString m_warningStyleSheet; @@ -91,7 +93,7 @@ ProjectIntroPage::ProjectIntroPage(QWidget *parent) : d->m_ui.nameLineEdit->setInitialText(tr("<Enter_Name>")); d->m_ui.nameLineEdit->setFocus(); d->m_ui.nameLineEdit->setValidationFunction([this](FancyLineEdit *edit, QString *errorString) { - return ProjectIntroPage::validateProjectName(edit->text(), errorString); + return validateProjectName(edit->text(), errorString); }); d->m_ui.projectLabel->setVisible(d->m_forceSubProject); d->m_ui.projectComboBox->setVisible(d->m_forceSubProject); @@ -140,6 +142,12 @@ void ProjectIntroPage::setPath(const QString &path) d->m_ui.pathChooser->setPath(path); } +void ProjectIntroPage::setProjectNameRegularExpression(const QRegularExpression ®Ex) +{ + Q_ASSERT_X(regEx.isValid(), Q_FUNC_INFO, qPrintable(regEx.errorString())); + d->m_projectNameValidator.setRegularExpression(regEx); +} + void ProjectIntroPage::setProjectName(const QString &name) { d->m_ui.nameLineEdit->setText(name); @@ -250,23 +258,45 @@ int ProjectIntroPage::projectIndex() const return d->m_ui.projectComboBox->currentIndex(); } -bool ProjectIntroPage::validateProjectName(const QString &name, QString *errorMessage /* = 0*/) +bool ProjectIntroPage::validateProjectName(const QString &name, QString *errorMessage) { - // Validation is file name + checking for dots - if (!FileNameValidatingLineEdit::validateFileName(name, false, errorMessage)) - return false; - - int pos = FileUtils::indexOfQmakeUnfriendly(name); + int pos = -1; + // if we have a pattern it was set + if (!d->m_projectNameValidator.regularExpression().pattern().isEmpty()) { + if (name.isEmpty()) { + if (errorMessage) + *errorMessage = tr("Name is empty."); + return false; + } + // pos is set by reference + QString tmp = name; + QValidator::State validatorState = d->m_projectNameValidator.validate(tmp, pos); + + // if pos is set by validate it is cought at the bottom where it shows + // a more detailed error message + if (validatorState != QValidator::Acceptable && (pos == -1 || pos >= name.count())) { + if (errorMessage) { + *errorMessage = tr("Name does not match \"%1\".").arg( + d->m_projectNameValidator.regularExpression().pattern()); + } + return false; + } + } else { // no validator means usually a qmake project + // Validation is file name + checking for dots + if (!FileNameValidatingLineEdit::validateFileName(name, false, errorMessage)) + return false; + if (name.contains(QLatin1Char('.'))) { + if (errorMessage) + *errorMessage = tr("Invalid character \".\"."); + return false; + } + pos = FileUtils::indexOfQmakeUnfriendly(name); + } if (pos >= 0) { if (errorMessage) *errorMessage = tr("Invalid character \"%1\" found.").arg(name.at(pos)); return false; } - if (name.contains(QLatin1Char('.'))) { - if (errorMessage) - *errorMessage = tr("Invalid character \".\"."); - return false; - } return true; } diff --git a/src/libs/utils/projectintropage.h b/src/libs/utils/projectintropage.h index 87cc394487..c672f83c10 100644 --- a/src/libs/utils/projectintropage.h +++ b/src/libs/utils/projectintropage.h @@ -36,7 +36,7 @@ namespace Utils { -struct ProjectIntroPagePrivate; +class ProjectIntroPagePrivate; class QTCREATOR_UTILS_EXPORT ProjectIntroPage : public WizardPage { @@ -67,7 +67,7 @@ public: void setProjectDirectories(const QStringList &directoryList); int projectIndex() const; - static bool validateProjectName(const QString &name, QString *errorMessage /* = 0*/); + bool validateProjectName(const QString &name, QString *errorMessage); signals: void activated(); @@ -77,6 +77,7 @@ public slots: void setProjectName(const QString &name); void setDescription(const QString &description); void setUseAsDefaultPath(bool u); + void setProjectNameRegularExpression(const QRegularExpression ®Ex); private slots: void slotChanged(); diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 13c2d28903..90ef68fb3b 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -515,13 +515,31 @@ QString StyleHelper::dpiSpecificImageFile(const QString &fileName) { // See QIcon::addFile() if (qApp->devicePixelRatio() > 1.0) { - const QFileInfo fi(fileName); - const QString at2xfileName = fi.path() + QLatin1Char('/') - + fi.completeBaseName() + QStringLiteral("@2x.") + fi.suffix(); - if (QFile::exists(at2xfileName)) - return at2xfileName; + const QString atDprfileName = + imageFileWithResolution(fileName, qRound(qApp->devicePixelRatio())); + if (QFile::exists(atDprfileName)) + return atDprfileName; } return fileName; } +QString StyleHelper::imageFileWithResolution(const QString &fileName, int dpr) +{ + const QFileInfo fi(fileName); + return dpr == 1 ? fileName : + fi.path() + QLatin1Char('/') + fi.completeBaseName() + + QLatin1Char('@') + QString::number(dpr) + + QLatin1String("x.") + fi.suffix(); +} + +QList<int> StyleHelper::availableImageResolutions(const QString &fileName) +{ + QList<int> result; + const int maxResolutions = qApp->devicePixelRatio(); + for (int i = 1; i <= maxResolutions; ++i) + if (QFile::exists(imageFileWithResolution(fileName, i))) + result.append(i); + return result; +} + } // namespace Utils diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index d22eb0bf1a..4e4295f530 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -95,6 +95,8 @@ public: static QLinearGradient statusBarGradient(const QRect &statusBarRect); static QString dpiSpecificImageFile(const QString &fileName); + static QString imageFileWithResolution(const QString &fileName, int dpr); + static QList<int> availableImageResolutions(const QString &fileName); private: static QColor m_baseColor; diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index 12c635e03b..bd39884762 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -130,6 +130,18 @@ public: TreeViewArrowColorNormal, TreeViewArrowColorSelected, + /* Icons */ + + IconsBaseColor, + IconsInfoColor, + IconsWarningColor, + IconsErrorColor, + IconsRunColor, + IconsStopColor, + IconsInterruptColor, + IconsDebugColor, + IconsNavigationArrowsColor, + /* Output panes */ OutputPanes_DebugTextColor, diff --git a/src/libs/utils/themehelper.cpp b/src/libs/utils/themehelper.cpp new file mode 100644 index 0000000000..bffeb37f10 --- /dev/null +++ b/src/libs/utils/themehelper.cpp @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "themehelper.h" +#include "theme/theme.h" +#include "stylehelper.h" + +#include <QApplication> +#include <QIcon> +#include <QImage> +#include <QMetaEnum> +#include <QPainter> + +namespace Utils { + +static QPixmap maskToColorAndAlpha(const QPixmap &mask, const QColor &color) +{ + QImage result(mask.toImage().convertToFormat(QImage::Format_ARGB32)); + result.setDevicePixelRatio(mask.devicePixelRatio()); + QRgb *bitsStart = reinterpret_cast<QRgb*>(result.bits()); + const QRgb *bitsEnd = bitsStart + result.width() * result.height(); + const QRgb tint = color.rgb() & 0x00ffffff; + const qreal alpha = color.alphaF(); + for (QRgb *pixel = bitsStart; pixel < bitsEnd; ++pixel) { + QRgb pixelAlpha = ~(*pixel & 0xff) * alpha; + *pixel = (pixelAlpha << 24) | tint; + } + return QPixmap::fromImage(result); +} + +typedef QPair<QPixmap, QColor> MaskAndColor; +typedef QList<MaskAndColor> MasksAndColors; +static MasksAndColors masksAndColors(const QString &mask, int dpr) +{ + MasksAndColors result; + const QStringList list = mask.split(QLatin1Char(',')); + for (QStringList::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it) { + const QStringList items = (*it).split(QLatin1Char('|')); + const QString fileName = items.first().trimmed(); + QColor color = creatorTheme()->color(Theme::IconsBaseColor); + if (items.count() > 1) { + const QString colorName = items.at(1); + static const QMetaObject &m = Theme::staticMetaObject; + static const QMetaEnum colorEnum = m.enumerator(m.indexOfEnumerator("Color")); + bool keyFound = false; + const int colorEnumKey = colorEnum.keyToValue(colorName.toLatin1().constData(), &keyFound); + if (keyFound) { + color = creatorTheme()->color(static_cast<Theme::Color>(colorEnumKey)); + } else { + const QColor colorFromName(colorName); + if (colorFromName.isValid()) + color = colorFromName; + } + } + const QString dprFileName = StyleHelper::availableImageResolutions(fileName).contains(dpr) ? + StyleHelper::imageFileWithResolution(fileName, dpr) : fileName; + result.append(qMakePair(QPixmap(dprFileName), color)); + } + return result; +} + +static void smearPixmap(QPainter *painter, const QPixmap &pixmap) +{ + painter->drawPixmap(QPointF(-0.501, -0.501), pixmap); + painter->drawPixmap(QPointF(0, -0.501), pixmap); + painter->drawPixmap(QPointF( 0.5, -0.501), pixmap); + painter->drawPixmap(QPointF( 0.5, 0), pixmap); + painter->drawPixmap(QPointF( 0.5, 0.5), pixmap); + painter->drawPixmap(QPointF( 0, 0.5), pixmap); + painter->drawPixmap(QPointF(-0.501, 0.5), pixmap); + painter->drawPixmap(QPointF(-0.501, 0), pixmap); +} + +static QPixmap combinedMask(const MasksAndColors &masks) +{ + if (masks.count() == 1) + return masks.first().first; + + QPixmap result(masks.first().first); + QPainter p(&result); + p.setCompositionMode(QPainter::CompositionMode_Darken); + MasksAndColors::const_iterator maskImage = masks.constBegin(); + maskImage++; + for (;maskImage != masks.constEnd(); ++maskImage) { + p.save(); + p.setOpacity(0.4); + p.setCompositionMode(QPainter::CompositionMode_Lighten); + smearPixmap(&p, maskToColorAndAlpha((*maskImage).first, Qt::white)); + p.restore(); + p.drawPixmap(0, 0, (*maskImage).first); + } + p.end(); + return result; +} + +static QPixmap masksToIcon(const MasksAndColors &masks, const QPixmap &combinedMask) +{ + QPixmap result(combinedMask.size()); + result.setDevicePixelRatio(combinedMask.devicePixelRatio()); + result.fill(Qt::transparent); + QPainter p(&result); + + for (MasksAndColors::const_iterator maskImage = masks.constBegin(); + maskImage != masks.constEnd(); ++maskImage) { + if (maskImage != masks.constBegin()) { + // Punch a transparent outline around an overlay. + p.save(); + p.setOpacity(0.4); + p.setCompositionMode(QPainter::CompositionMode_DestinationOut); + smearPixmap(&p, maskToColorAndAlpha((*maskImage).first, Qt::white)); + p.restore(); + } + p.drawPixmap(0, 0, maskToColorAndAlpha((*maskImage).first, (*maskImage).second)); + } + + const QPixmap shadowMask = maskToColorAndAlpha(combinedMask, Qt::black); + p.setCompositionMode(QPainter::CompositionMode_DestinationOver); + p.setOpacity(0.05); + p.drawPixmap(QPointF(0, -0.501), shadowMask); + p.drawPixmap(QPointF(-0.501, 0), shadowMask); + p.drawPixmap(QPointF(0.5, 0), shadowMask); + p.drawPixmap(QPointF(0.5, 0.5), shadowMask); + p.drawPixmap(QPointF(-0.501, 0.5), shadowMask); + p.setOpacity(0.2); + p.drawPixmap(0, 1, shadowMask); + + p.end(); + + return result; +} + +QIcon ThemeHelper::themedIcon(const QString &mask) +{ + QIcon result; + const MasksAndColors masks = masksAndColors(mask, qRound(qApp->devicePixelRatio())); + const QPixmap combinedMask = Utils::combinedMask(masks); + result.addPixmap(masksToIcon(masks, combinedMask)); + + QColor disabledColor = creatorTheme()->palette().mid().color(); + disabledColor.setAlphaF(0.6); + result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); + return result; +} + +QPixmap ThemeHelper::themedIconPixmap(const QString &mask) +{ + const MasksAndColors masks = + masksAndColors(mask, qRound(qApp->devicePixelRatio())); + const QPixmap combinedMask = Utils::combinedMask(masks); + return masksToIcon(masks, combinedMask); +} + +QPixmap ThemeHelper::recoloredPixmap(const QString &maskImage, const QColor &color) +{ + return maskToColorAndAlpha(QPixmap(Utils::StyleHelper::dpiSpecificImageFile(maskImage)), color); +} + +QColor ThemeHelper::inputfieldIconColor() +{ + // See QLineEdit::paintEvent + QColor color = QApplication::palette().text().color(); + color.setAlpha(128); + return color; +} + +} // namespace Utils diff --git a/src/plugins/coreplugin/icorelistener.h b/src/libs/utils/themehelper.h index d3debac5a0..b72992a743 100644 --- a/src/plugins/coreplugin/icorelistener.h +++ b/src/libs/utils/themehelper.h @@ -28,26 +28,35 @@ ** ****************************************************************************/ -#ifndef ICORELISTENER_H -#define ICORELISTENER_H +#ifndef THEMEHELPER_H +#define THEMEHELPER_H -#include "core_global.h" -#include <QObject> +#include "utils_global.h" -namespace Core { -class IEditor; +QT_FORWARD_DECLARE_CLASS(QColor) +QT_FORWARD_DECLARE_CLASS(QIcon) +QT_FORWARD_DECLARE_CLASS(QPixmap) -class CORE_EXPORT ICoreListener : public QObject +namespace Utils { + +class QTCREATOR_UTILS_EXPORT ThemeHelper { - Q_OBJECT public: - ICoreListener(QObject *parent = 0) : QObject(parent) {} - virtual ~ICoreListener() {} + // Returns a recolored icon with shadow and custom disabled state for a + // grayscale mask. The mask can range from a single image filename to + // a list of filename|color,... pairs. + // The color can be a Theme::Color enum key name. If invalid, it is run + // through QColor(const QString &name). + static QIcon themedIcon(const QString &mask); + // Same as themedIcon() but without disabled state. + static QPixmap themedIconPixmap(const QString &mask); + + // Simple recoloring of a mask. No shadow. maskImage is a single file. + static QPixmap recoloredPixmap(const QString &maskImage, const QColor &color); - virtual bool editorAboutToClose(IEditor * /*editor*/) { return true; } - virtual bool coreAboutToClose() { return true; } + static QColor inputfieldIconColor(); }; -} // namespace Core +} // namespace Utils -#endif // ICORELISTENER_H +#endif // THEMEHELPER_H diff --git a/src/libs/utils/tooltip/tips.cpp b/src/libs/utils/tooltip/tips.cpp index 89000a30da..f8fb29a9b9 100644 --- a/src/libs/utils/tooltip/tips.cpp +++ b/src/libs/utils/tooltip/tips.cpp @@ -108,19 +108,16 @@ void ColorTip::paintEvent(QPaintEvent *event) { QTipLabel::paintEvent(event); - QPen pen; - pen.setWidth(1); - if (m_color.value() > 100) - pen.setColor(m_color.darker()); - else - pen.setColor(m_color.lighter()); - QPainter painter(this); - painter.setPen(pen); painter.setBrush(m_color); - QRect r(0, 0, rect().width() - 1, rect().height() - 1); - painter.drawTiledPixmap(r, m_tilePixmap); - painter.drawRect(r); + painter.drawTiledPixmap(rect(), m_tilePixmap); + + QPen pen; + pen.setColor(m_color.value() > 100 ? m_color.darker() : m_color.lighter()); + pen.setJoinStyle(Qt::MiterJoin); + const QRectF borderRect = QRectF(rect()).adjusted(0.5, 0.5, -0.5, -0.5); + painter.setPen(pen); + painter.drawRect(borderRect); } TextTip::TextTip(QWidget *parent) : QTipLabel(parent) diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp index d761ba5e9c..149d1a4c00 100644 --- a/src/libs/utils/treemodel.cpp +++ b/src/libs/utils/treemodel.cpp @@ -682,6 +682,7 @@ void TreeItem::appendChild(TreeItem *item) void TreeItem::insertChild(int pos, TreeItem *item) { + QTC_CHECK(!item->model()); QTC_CHECK(!item->parent()); QTC_ASSERT(0 <= pos && pos <= m_children.size(), return); // '<= size' is intentional. diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index 9c5be39c03..9c6ea3a5fd 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -89,6 +89,7 @@ SOURCES += $$PWD/environment.cpp \ $$PWD/proxycredentialsdialog.cpp \ $$PWD/macroexpander.cpp \ $$PWD/theme/theme.cpp \ + $$PWD/themehelper.cpp \ $$PWD/progressindicator.cpp \ $$PWD/fadingindicator.cpp \ $$PWD/overridecursor.cpp \ @@ -193,6 +194,7 @@ HEADERS += \ $$PWD/macroexpander.h \ $$PWD/theme/theme.h \ $$PWD/theme/theme_p.h \ + $$PWD/themehelper.h \ $$PWD/progressindicator.h \ $$PWD/fadingindicator.h \ $$PWD/executeondestruction.h \ diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs index 88f8a5b65e..c69eebd21f 100644 --- a/src/libs/utils/utils.qbs +++ b/src/libs/utils/utils.qbs @@ -197,6 +197,8 @@ QtcLibrary { "textfieldcombobox.h", "textfileformat.cpp", "textfileformat.h", + "themehelper.cpp", + "themehelper.h", "treemodel.cpp", "treemodel.h", "treeviewcombobox.cpp", diff --git a/src/plugins/analyzerbase/analyzerbase.qbs b/src/plugins/analyzerbase/analyzerbase.qbs index 05db2a4022..b54dcaf9c7 100644 --- a/src/plugins/analyzerbase/analyzerbase.qbs +++ b/src/plugins/analyzerbase/analyzerbase.qbs @@ -35,15 +35,15 @@ QtcPlugin { "ianalyzertool.h", "startremotedialog.cpp", "startremotedialog.h", - "images/analyzer_category.png", - "images/analyzer_start_small.png", - "images/analyzer_stop_small.png", - "images/mode_analyze.png", - "images/mode_analyze@2x.png", ] + Group { + name: "Images" + prefix: "images/" + files: ["*.png"] + } + Export { Depends { name: "CPlusPlus" } } } - diff --git a/src/plugins/analyzerbase/analyzerbase.qrc b/src/plugins/analyzerbase/analyzerbase.qrc index 96643b0278..b6c5662d1f 100644 --- a/src/plugins/analyzerbase/analyzerbase.qrc +++ b/src/plugins/analyzerbase/analyzerbase.qrc @@ -3,7 +3,7 @@ <file>images/mode_analyze.png</file> <file>images/mode_analyze@2x.png</file> <file>images/analyzer_category.png</file> - <file>images/analyzer_start_small.png</file> - <file>images/analyzer_stop_small.png</file> + <file>images/analyzer_overlay_small.png</file> + <file>images/analyzer_overlay_small@2x.png</file> </qresource> </RCC> diff --git a/src/plugins/analyzerbase/analyzerconstants.h b/src/plugins/analyzerbase/analyzerconstants.h index bfe65bf5e8..a38b939953 100644 --- a/src/plugins/analyzerbase/analyzerconstants.h +++ b/src/plugins/analyzerbase/analyzerconstants.h @@ -54,8 +54,7 @@ const char G_ANALYZER_REMOTE_TOOLS[] = "Menu.Group.Analyzer.RemoteTools"; const char G_ANALYZER_OPTIONS[] = "Menu.Group.Analyzer.Options"; // Manager controls. -const char ANALYZER_CONTROL_START_ICON[] = ":/images/analyzer_start_small.png"; -const char ANALYZER_CONTROL_STOP_ICON[] = ":/images/analyzer_stop_small.png"; +const char ANALYZER_CONTROL_START_ICON[] = ":/images/analyzer_overlay_small.png,:/core/images/run_overlay_small.png|IconsRunColor"; const char ANALYZERTASK_ID[] = "Analyzer.TaskId"; diff --git a/src/plugins/analyzerbase/analyzermanager.cpp b/src/plugins/analyzerbase/analyzermanager.cpp index 47d01234f5..83d867fdfa 100644 --- a/src/plugins/analyzerbase/analyzermanager.cpp +++ b/src/plugins/analyzerbase/analyzermanager.cpp @@ -61,6 +61,7 @@ #include <utils/qtcassert.h> #include <utils/checkablemessagebox.h> #include <utils/statuslabel.h> +#include <utils/themehelper.h> #include <QVariant> #include <QDebug> @@ -240,14 +241,16 @@ void AnalyzerManagerPrivate::setupActions() menubar->addMenu(mtools, m_menu); m_startAction = new QAction(tr("Start"), m_menu); - m_startAction->setIcon(QIcon(QLatin1String(ANALYZER_CONTROL_START_ICON))); + m_startAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(ANALYZER_CONTROL_START_ICON))); ActionManager::registerAction(m_startAction, "Analyzer.Start"); connect(m_startAction, &QAction::triggered, this, &AnalyzerManagerPrivate::startCurrentTool); m_stopAction = new QAction(tr("Stop"), m_menu); m_stopAction->setEnabled(false); - m_stopAction->setIcon(QIcon(QLatin1String(ANALYZER_CONTROL_STOP_ICON))); + m_stopAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(ProjectExplorer::Constants::ICON_STOP_SMALL))); command = ActionManager::registerAction(m_stopAction, "Analyzer.Stop"); m_menu->addAction(command, G_ANALYZER_CONTROL); diff --git a/src/plugins/analyzerbase/analyzerruncontrol.cpp b/src/plugins/analyzerbase/analyzerruncontrol.cpp index 48f6103bcc..7cfd7a5ae0 100644 --- a/src/plugins/analyzerbase/analyzerruncontrol.cpp +++ b/src/plugins/analyzerbase/analyzerruncontrol.cpp @@ -51,7 +51,7 @@ AnalyzerRunControl::AnalyzerRunControl(const AnalyzerStartParameters &sp, RunConfiguration *runConfiguration) : RunControl(runConfiguration, sp.runMode) { - setIcon(QLatin1String(":/images/analyzer_start_small.png")); + setIcon(QLatin1String(Constants::ANALYZER_CONTROL_START_ICON)); m_sp = sp; diff --git a/src/plugins/analyzerbase/analyzerstartparameters.h b/src/plugins/analyzerbase/analyzerstartparameters.h index 3eab41f734..c840095eef 100644 --- a/src/plugins/analyzerbase/analyzerstartparameters.h +++ b/src/plugins/analyzerbase/analyzerstartparameters.h @@ -62,6 +62,7 @@ public: QString workingDirectory; QString sysroot; QString analyzerHost; + QString analyzerSocket; quint16 analyzerPort = 0; }; diff --git a/src/plugins/analyzerbase/images/analyzer_overlay_small.png b/src/plugins/analyzerbase/images/analyzer_overlay_small.png Binary files differnew file mode 100644 index 0000000000..138391ddd0 --- /dev/null +++ b/src/plugins/analyzerbase/images/analyzer_overlay_small.png diff --git a/src/plugins/analyzerbase/images/analyzer_overlay_small@2x.png b/src/plugins/analyzerbase/images/analyzer_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..7fb5ea48b7 --- /dev/null +++ b/src/plugins/analyzerbase/images/analyzer_overlay_small@2x.png diff --git a/src/plugins/analyzerbase/images/analyzer_start_small.png b/src/plugins/analyzerbase/images/analyzer_start_small.png Binary files differdeleted file mode 100644 index 4a5f7e4092..0000000000 --- a/src/plugins/analyzerbase/images/analyzer_start_small.png +++ /dev/null diff --git a/src/plugins/analyzerbase/images/analyzer_stop_small.png b/src/plugins/analyzerbase/images/analyzer_stop_small.png Binary files differdeleted file mode 100644 index 1063d08998..0000000000 --- a/src/plugins/analyzerbase/images/analyzer_stop_small.png +++ /dev/null diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index 9db178b098..9d0cfc2fc7 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -97,7 +97,7 @@ AndroidBuildApkStep::AndroidBuildApkStep(ProjectExplorer::BuildStepList *parent, } } -bool AndroidBuildApkStep::init() +bool AndroidBuildApkStep::init(QList<const BuildStep *> &earlierSteps) { ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); @@ -132,7 +132,7 @@ bool AndroidBuildApkStep::init() m_openPackageLocationForRun = m_openPackageLocation; m_apkPath = AndroidManager::androidQtSupport(target())->apkPath(target()).toString(); - bool result = AbstractProcessStep::init(); + bool result = AbstractProcessStep::init(earlierSteps); if (!result) return false; diff --git a/src/plugins/android/androidbuildapkstep.h b/src/plugins/android/androidbuildapkstep.h index a32d78a6e8..b0de45fc45 100644 --- a/src/plugins/android/androidbuildapkstep.h +++ b/src/plugins/android/androidbuildapkstep.h @@ -54,8 +54,8 @@ public: BundleLibrariesDeployment }; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; AndroidDeployAction deployAction() const; @@ -79,7 +79,7 @@ public: bool useGradle() const; void setUseGradle(bool b); - bool runInGuiThread() const; + bool runInGuiThread() const override; QString buildTargetSdk() const; void setBuildTargetSdk(const QString &sdk); @@ -97,10 +97,10 @@ protected: bool keystorePassword(); bool certificatePassword(); - bool init(); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const { return true; } - void processFinished(int exitCode, QProcess::ExitStatus status); + bool init(QList<const BuildStep *> &earlierSteps) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override { return true; } + void processFinished(int exitCode, QProcess::ExitStatus status) override; protected: AndroidDeployAction m_deployAction; diff --git a/src/plugins/android/androidbuildapkwidget.cpp b/src/plugins/android/androidbuildapkwidget.cpp index 573422bb83..81474c9fbe 100644 --- a/src/plugins/android/androidbuildapkwidget.cpp +++ b/src/plugins/android/androidbuildapkwidget.cpp @@ -36,6 +36,7 @@ #include "androidmanager.h" #include "ui_androidbuildapkwidget.h" +#include <coreplugin/coreconstants.h> #include <projectexplorer/buildconfiguration.h> #include <projectexplorer/project.h> #include <projectexplorer/target.h> @@ -43,6 +44,7 @@ #include <utils/fancylineedit.h> #include <utils/pathchooser.h> +#include <utils/themehelper.h> #include <QFileDialog> @@ -89,8 +91,12 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) m_ui->KeystoreLocationPathChooser->setInitialBrowsePathBackup(QDir::homePath()); m_ui->KeystoreLocationPathChooser->setPromptDialogFilter(tr("Keystore files (*.keystore *.jks)")); m_ui->KeystoreLocationPathChooser->setPromptDialogTitle(tr("Select Keystore File")); + m_ui->signingDebugWarningIcon->setPixmap( + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING))); m_ui->signingDebugWarningIcon->hide(); m_ui->signingDebugWarningLabel->hide(); + m_ui->signingDebugDeployErrorIcon->setPixmap( + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_ERROR))); signPackageCheckBoxToggled(m_step->signPackage()); m_ui->useGradleCheckBox->setChecked(m_step->useGradle()); diff --git a/src/plugins/android/androidbuildapkwidget.ui b/src/plugins/android/androidbuildapkwidget.ui index dd084a72c3..e5565873af 100644 --- a/src/plugins/android/androidbuildapkwidget.ui +++ b/src/plugins/android/androidbuildapkwidget.ui @@ -65,12 +65,6 @@ <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> </widget> </item> <item> @@ -133,12 +127,6 @@ <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> <property name="alignment"> <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> </property> @@ -265,8 +253,6 @@ The APK will not be usable on any other device.</string> <container>1</container> </customwidget> </customwidgets> - <resources> - <include location="../coreplugin/core.qrc"/> - </resources> + <resources/> <connections/> </ui> diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 906632bd2d..9cf8bb8ce6 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -57,19 +57,22 @@ namespace Utils { class Environment; } namespace Android { class AndroidPlugin; -struct AndroidDeviceInfo +class AndroidDeviceInfo { +public: QString serialNumber; QString avdname; QStringList cpuAbi; - int sdk; + int sdk = -1; enum State { OkState, UnAuthorizedState, OfflineState }; - State state; - bool unauthorized; + State state = OfflineState; + bool unauthorized = false; enum AndroidDeviceType { Hardware, Emulator }; - AndroidDeviceType type; + AndroidDeviceType type = Emulator; static QStringList adbSelector(const QString &serialNumber); + + bool isValid() { return !serialNumber.isEmpty() && !avdname.isEmpty(); } }; class SdkPlatform diff --git a/src/plugins/android/androiddeployconfiguration.cpp b/src/plugins/android/androiddeployconfiguration.cpp index faf4ed6ec2..ab276e5408 100644 --- a/src/plugins/android/androiddeployconfiguration.cpp +++ b/src/plugins/android/androiddeployconfiguration.cpp @@ -47,6 +47,9 @@ using namespace ProjectExplorer; namespace Android { namespace Internal { +// Qt 5.2 has a new form of deployment +const char ANDROID_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.AndroidDeployConfiguration2"; + AndroidDeployConfiguration::AndroidDeployConfiguration(Target *parent, Core::Id id) : DeployConfiguration(parent, id) { diff --git a/src/plugins/android/androiddeployconfiguration.h b/src/plugins/android/androiddeployconfiguration.h index 1b972949c9..852c3b6447 100644 --- a/src/plugins/android/androiddeployconfiguration.h +++ b/src/plugins/android/androiddeployconfiguration.h @@ -36,10 +36,6 @@ namespace Android { namespace Internal { -// Qt 5.2 has a new form of deployment -const char ANDROID_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.AndroidDeployConfiguration2"; -const char ANDROID_DC_PREFIX[] = "Qt4ProjectManager.AndroidDeployConfiguration2."; - class AndroidDeployConfiguration : public ProjectExplorer::DeployConfiguration { Q_OBJECT diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index e8e567dbc2..0c8f26a8ff 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -52,6 +52,7 @@ #include <qtsupport/qtkitinformation.h> +#include <utils/algorithm.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> @@ -166,8 +167,16 @@ void AndroidDeployQtStep::ctor() this, &AndroidDeployQtStep::slotSetSerialNumber); } -bool AndroidDeployQtStep::init() +static AndroidDeviceInfo earlierDeviceInfo(QList<const ProjectExplorer::BuildStep *> &earlierSteps, Core::Id id) { + const ProjectExplorer::BuildStep *bs + = Utils::findOrDefault(earlierSteps, Utils::equal(&ProjectExplorer::BuildStep::id, id)); + return bs ? static_cast<const AndroidDeployQtStep *>(bs)->deviceInfo() : AndroidDeviceInfo(); +} + +bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps) +{ + Q_UNUSED(earlierSteps); m_androiddeployqtArgs.clear(); if (AndroidManager::checkForQt51Files(project()->projectDirectory())) @@ -190,8 +199,13 @@ bool AndroidDeployQtStep::init() AndroidConfigurations::Options options = AndroidConfigurations::None; if (androidBuildApkStep->deployAction() == AndroidBuildApkStep::DebugDeployment) options = AndroidConfigurations::FilterAndroid5; - AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(project(), deviceAPILevel, m_targetArch, options); - if (info.serialNumber.isEmpty() && info.avdname.isEmpty()) // aborted + AndroidDeviceInfo info = earlierDeviceInfo(earlierSteps, Id); + if (!info.isValid()) { + info = AndroidConfigurations::showDeviceDialog(project(), deviceAPILevel, m_targetArch, options); + m_deviceInfo = info; // Keep around for later steps + } + + if (!info.isValid()) // aborted return false; m_avdName = info.avdname; @@ -478,6 +492,11 @@ void AndroidDeployQtStep::runCommand(const QString &program, const QStringList & } } +AndroidDeviceInfo AndroidDeployQtStep::deviceInfo() const +{ + return m_deviceInfo; +} + ProjectExplorer::BuildStepConfigWidget *AndroidDeployQtStep::createConfigWidget() { return new AndroidDeployQtWidget(this); diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index 1a2e7e0278..d7a36e8e12 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -81,15 +81,17 @@ public: ForceUnintall }; public: - AndroidDeployQtStep(ProjectExplorer::BuildStepList *bc); + explicit AndroidDeployQtStep(ProjectExplorer::BuildStepList *bc); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; - bool runInGuiThread() const; + bool runInGuiThread() const override; UninstallType uninstallPreviousPackage(); + AndroidDeviceInfo deviceInfo() const; + public slots: void setUninstallPreviousPackage(bool uninstall); @@ -98,20 +100,19 @@ signals: void setSerialNumber(const QString &serialNumber); private: - AndroidDeployQtStep(ProjectExplorer::BuildStepList *bc, - AndroidDeployQtStep *other); + AndroidDeployQtStep(ProjectExplorer::BuildStepList *bc, AndroidDeployQtStep *other); void ctor(); void runCommand(const QString &program, const QStringList &arguments); - bool init(); - void run(QFutureInterface<bool> &fi); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; enum DeployResult { Success, Failure, AskUinstall }; DeployResult runDeploy(QFutureInterface<bool> &fi); void slotAskForUninstall(); void slotSetSerialNumber(const QString &serialNumber); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const { return true; } + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override { return true; } void processReadyReadStdOutput(); void stdOutput(const QString &line); @@ -132,16 +133,17 @@ private: QString m_targetArch; bool m_uninstallPreviousPackage; bool m_uninstallPreviousPackageRun; - static const Core::Id Id; bool m_installOk; bool m_useAndroiddeployqt; + bool m_askForUinstall; + static const Core::Id Id; QString m_androiddeployqtArgs; QString m_adbPath; QString m_command; QString m_workingDirectory; Utils::Environment m_environment; Utils::QtcProcess *m_process; - bool m_askForUinstall; + AndroidDeviceInfo m_deviceInfo; }; } diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index 178c3fe4f1..ce5929e992 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -50,6 +50,7 @@ #include <texteditor/texteditoractionhandler.h> #include <texteditor/texteditor.h> #include <utils/algorithm.h> +#include <utils/themehelper.h> #include <QLineEdit> #include <QFileInfo> @@ -166,7 +167,8 @@ void AndroidManifestEditorWidget::initializePage() m_packageNameWarning->setVisible(false); m_packageNameWarningIcon = new QLabel; - m_packageNameWarningIcon->setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + m_packageNameWarningIcon->setPixmap( + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING))); m_packageNameWarningIcon->setVisible(false); m_packageNameWarningIcon->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); diff --git a/src/plugins/android/androidpotentialkit.cpp b/src/plugins/android/androidpotentialkit.cpp index d1d5d9dcce..086787fb69 100644 --- a/src/plugins/android/androidpotentialkit.cpp +++ b/src/plugins/android/androidpotentialkit.cpp @@ -33,6 +33,7 @@ #include "androidconfigurations.h" #include <utils/detailswidget.h> +#include <utils/themehelper.h> #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <projectexplorer/kitmanager.h> @@ -92,7 +93,7 @@ AndroidPotentialKitWidget::AndroidPotentialKitWidget(QWidget *parent) : Utils::DetailsWidget(parent) { setSummaryText(QLatin1String("<b>Android has not been configured. Create Android kits.</b>")); - setIcon(QIcon(QLatin1String(Core::Constants::ICON_WARNING))); + setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))); //detailsWidget->setState(Utils::DetailsWidget::NoSummary); QWidget *mainWidget = new QWidget(this); setWidget(mainWidget); diff --git a/src/plugins/android/androidqtversionfactory.cpp b/src/plugins/android/androidqtversionfactory.cpp index 9621238fe6..2dc05df574 100644 --- a/src/plugins/android/androidqtversionfactory.cpp +++ b/src/plugins/android/androidqtversionfactory.cpp @@ -66,7 +66,7 @@ int AndroidQtVersionFactory::priority() const QtSupport::BaseQtVersion *AndroidQtVersionFactory::create(const Utils::FileName &qmakePath, ProFileEvaluator *evaluator, bool isAutoDetected, const QString &autoDetectionSource) { - QFileInfo fi(qmakePath.toString()); + QFileInfo fi = qmakePath.toFileInfo(); if (!fi.exists() || !fi.isExecutable() || !fi.isFile()) return 0; if (!evaluator->values(QLatin1String("CONFIG")).contains(QLatin1String("android")) diff --git a/src/plugins/android/androidrunconfiguration.h b/src/plugins/android/androidrunconfiguration.h index d62936e8cd..f64e2f5255 100644 --- a/src/plugins/android/androidrunconfiguration.h +++ b/src/plugins/android/androidrunconfiguration.h @@ -43,8 +43,8 @@ class ANDROID_EXPORT AndroidRunConfiguration : public ProjectExplorer::RunConfig public: AndroidRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; + QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; const QString remoteChannel() const; protected: diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 0d90bb65da..c57332902c 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -36,9 +36,11 @@ #include "androidconstants.h" #include "androidtoolchain.h" +#include <coreplugin/coreconstants.h> #include <utils/environment.h> #include <utils/hostosinfo.h> #include <utils/pathchooser.h> +#include <utils/themehelper.h> #include <projectexplorer/toolchainmanager.h> #include <projectexplorer/kitmanager.h> #include <projectexplorer/kitinformation.h> @@ -174,6 +176,17 @@ AndroidSettingsWidget::AndroidSettingsWidget(QWidget *parent) m_ui->downloadAntToolButton->setVisible(!Utils::HostOsInfo::isLinuxHost()); m_ui->downloadOpenJDKToolButton->setVisible(!Utils::HostOsInfo::isLinuxHost()); + const QPixmap warningPixmap = Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING)); + m_ui->jdkWarningIconLabel->setPixmap(warningPixmap); + m_ui->kitWarningIconLabel->setPixmap(warningPixmap); + + const QPixmap errorPixmap = Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_ERROR)); + m_ui->sdkWarningIconLabel->setPixmap(errorPixmap); + m_ui->gdbWarningIconLabel->setPixmap(errorPixmap); + m_ui->ndkWarningIconLabel->setPixmap(errorPixmap); + connect(m_ui->gdbWarningLabel, SIGNAL(linkActivated(QString)), this, SLOT(showGdbWarningDialog())); diff --git a/src/plugins/android/androidsettingswidget.ui b/src/plugins/android/androidsettingswidget.ui index 23d0951046..330de5f768 100644 --- a/src/plugins/android/androidsettingswidget.ui +++ b/src/plugins/android/androidsettingswidget.ui @@ -46,9 +46,6 @@ <property name="text"> <string/> </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> </widget> </item> <item> @@ -123,9 +120,6 @@ <property name="text"> <string/> </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> </widget> </item> <item> @@ -192,9 +186,6 @@ <property name="text"> <string/> </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> </widget> </item> <item> @@ -228,9 +219,6 @@ <property name="text"> <string/> </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> </widget> </item> <item> @@ -280,9 +268,6 @@ <property name="text"> <string/> </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> </widget> </item> <item> @@ -476,7 +461,6 @@ </customwidget> </customwidgets> <resources> - <include location="../coreplugin/core.qrc"/> <include location="android.qrc"/> </resources> <connections> diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 1b4177a0b6..c2ccacbc8f 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -198,9 +198,9 @@ bool AndroidToolChain::fromMap(const QVariantMap &data) return isValid(); } -QList<FileName> AndroidToolChain::suggestedMkspecList() const +FileNameList AndroidToolChain::suggestedMkspecList() const { - return QList<FileName>()<< FileName::fromLatin1("android-g++"); + return FileNameList()<< FileName::fromLatin1("android-g++"); } QString AndroidToolChain::makeCommand(const Environment &env) const diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h index dae082dcc4..71d34a0474 100644 --- a/src/plugins/android/androidtoolchain.h +++ b/src/plugins/android/androidtoolchain.h @@ -56,7 +56,7 @@ public: QVariantMap toMap() const override; bool fromMap(const QVariantMap &data) override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; QString makeCommand(const Utils::Environment &environment) const override; QString ndkToolChainVersion() const; diff --git a/src/plugins/android/avddialog.cpp b/src/plugins/android/avddialog.cpp index 05236100a4..d8e3be5de3 100644 --- a/src/plugins/android/avddialog.cpp +++ b/src/plugins/android/avddialog.cpp @@ -33,6 +33,7 @@ #include <coreplugin/coreconstants.h> #include <utils/tooltip/tooltip.h> +#include <utils/themehelper.h> #include <QKeyEvent> #include <QMessageBox> @@ -62,7 +63,8 @@ AvdDialog::AvdDialog(int minApiLevel, const QString &targetArch, const AndroidCo m_avdDialog.nameLineEdit->setValidator(v); m_avdDialog.nameLineEdit->installEventFilter(this); - m_avdDialog.warningIcon->setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + m_avdDialog.warningIcon->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); updateApiLevelComboBox(); diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.cpp b/src/plugins/autotoolsprojectmanager/autogenstep.cpp index a00482cecf..c1ae56310f 100644 --- a/src/plugins/autotoolsprojectmanager/autogenstep.cpp +++ b/src/plugins/autotoolsprojectmanager/autogenstep.cpp @@ -152,7 +152,7 @@ void AutogenStep::ctor() setDefaultDisplayName(tr("Autogen")); } -bool AutogenStep::init() +bool AutogenStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); @@ -165,7 +165,7 @@ bool AutogenStep::init() pp->setArguments(additionalArguments()); pp->resolveAll(); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void AutogenStep::run(QFutureInterface<bool> &interface) diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.h b/src/plugins/autotoolsprojectmanager/autogenstep.h index 347ffc9e2a..6415f8ed06 100644 --- a/src/plugins/autotoolsprojectmanager/autogenstep.h +++ b/src/plugins/autotoolsprojectmanager/autogenstep.h @@ -94,14 +94,14 @@ class AutogenStep : public ProjectExplorer::AbstractProcessStep friend class AutogenStepConfigWidget; public: - AutogenStep(ProjectExplorer::BuildStepList *bsl); + explicit AutogenStep(ProjectExplorer::BuildStepList *bsl); - bool init(); - void run(QFutureInterface<bool> &interface); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &interface) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QString additionalArguments() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; public slots: void setAdditionalArguments(const QString &list); @@ -113,7 +113,7 @@ protected: AutogenStep(ProjectExplorer::BuildStepList *bsl, AutogenStep *bs); AutogenStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp index 141e095fdb..0967bdcc15 100644 --- a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp +++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp @@ -151,7 +151,7 @@ void AutoreconfStep::ctor() setDefaultDisplayName(tr("Autoreconf")); } -bool AutoreconfStep::init() +bool AutoreconfStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); @@ -164,7 +164,7 @@ bool AutoreconfStep::init() pp->setArguments(additionalArguments()); pp->resolveAll(); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void AutoreconfStep::run(QFutureInterface<bool> &interface) diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.h b/src/plugins/autotoolsprojectmanager/autoreconfstep.h index 9ef2554294..453786852f 100644 --- a/src/plugins/autotoolsprojectmanager/autoreconfstep.h +++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.h @@ -94,14 +94,14 @@ class AutoreconfStep : public ProjectExplorer::AbstractProcessStep friend class AutoreconfStepConfigWidget; public: - AutoreconfStep(ProjectExplorer::BuildStepList *bsl); + explicit AutoreconfStep(ProjectExplorer::BuildStepList *bsl); - bool init(); - void run(QFutureInterface<bool> &interface); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &interface) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QString additionalArguments() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; public slots: void setAdditionalArguments(const QString &list); @@ -113,7 +113,7 @@ protected: AutoreconfStep(ProjectExplorer::BuildStepList *bsl, AutoreconfStep *bs); AutoreconfStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 03969c9427..785afb159e 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -76,7 +76,7 @@ AutotoolsProject::AutotoolsProject(AutotoolsManager *manager, const QString &fil m_fileName(fileName), m_files(), m_file(new AutotoolsProjectFile(this, m_fileName)), - m_rootNode(new AutotoolsProjectNode(this, m_file)), + m_rootNode(new AutotoolsProjectNode(m_file->filePath())), m_fileWatcher(new Utils::FileSystemWatcher(this)), m_watchedFiles(), m_makefileParserThread(0) @@ -275,7 +275,7 @@ void AutotoolsProject::buildFileNodeTree(const QDir &directory, // nodes later. QHash<QString, Node *> nodeHash; foreach (Node * node, nodes(m_rootNode)) - nodeHash.insert(node->path().toString(), node); + nodeHash.insert(node->filePath().toString(), node); // Add the sources to the filenode project tree. Sources // inside the same directory are grouped into a folder-node. @@ -356,7 +356,7 @@ void AutotoolsProject::buildFileNodeTree(const QDir &directory, FolderNode *AutotoolsProject::insertFolderNode(const QDir &nodeDir, QHash<QString, Node *> &nodes) { const Utils::FileName nodePath = Utils::FileName::fromString(nodeDir.absolutePath()); - QFileInfo rootInfo = m_rootNode->path().toFileInfo(); + QFileInfo rootInfo = m_rootNode->filePath().toFileInfo(); const Utils::FileName rootPath = Utils::FileName::fromString(rootInfo.absolutePath()); // Do not create a folder for the root node @@ -370,7 +370,7 @@ FolderNode *AutotoolsProject::insertFolderNode(const QDir &nodeDir, QHash<QStrin // Get parent-folder. If it does not exist, create it recursively. // Take care that the m_rootNode is considered as top folder. FolderNode *parentFolder = m_rootNode; - if ((rootPath != folder->path()) && dir.cdUp()) { + if ((rootPath != folder->filePath()) && dir.cdUp()) { const QString parentDir = dir.absolutePath(); if (!nodes.contains(parentDir)) { FolderNode *insertedFolder = insertFolderNode(parentDir, nodes); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp index f663dac116..ee8b42cd9c 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp @@ -39,12 +39,9 @@ using namespace AutotoolsProjectManager; using namespace AutotoolsProjectManager::Internal; using namespace ProjectExplorer; -AutotoolsProjectNode::AutotoolsProjectNode(AutotoolsProject *project, Core::IDocument *projectFile) : - ProjectNode(projectFile->filePath()), - m_project(project), - m_projectFile(projectFile) -{ -} +AutotoolsProjectNode::AutotoolsProjectNode(const Utils::FileName &projectFilePath) : + ProjectNode(projectFilePath) +{ } bool AutotoolsProjectNode::showInSimpleTree() const { diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h index 65c001a612..fda874282d 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h @@ -54,18 +54,10 @@ class AutotoolsProject; class AutotoolsProjectNode : public ProjectExplorer::ProjectNode { public: - AutotoolsProjectNode(AutotoolsProject *project, Core::IDocument *projectFile); + AutotoolsProjectNode(const Utils::FileName &projectFilePath); - bool showInSimpleTree() const; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - -private: - AutotoolsProject *m_project; - Core::IDocument *m_projectFile; - - // TODO: AutotoolsProject calls the protected function addFileNodes() from AutotoolsProjectNode. - // Instead of this friend declaration, a public interface might be preferable. - friend class AutotoolsProject; + bool showInSimpleTree() const override; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; }; } // namespace Internal diff --git a/src/plugins/autotoolsprojectmanager/configurestep.cpp b/src/plugins/autotoolsprojectmanager/configurestep.cpp index ba65c6b896..4d641d952d 100644 --- a/src/plugins/autotoolsprojectmanager/configurestep.cpp +++ b/src/plugins/autotoolsprojectmanager/configurestep.cpp @@ -166,7 +166,7 @@ void ConfigureStep::ctor() setDefaultDisplayName(tr("Configure")); } -bool ConfigureStep::init() +bool ConfigureStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); @@ -178,7 +178,7 @@ bool ConfigureStep::init() pp->setArguments(additionalArguments()); pp->resolveAll(); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void ConfigureStep::run(QFutureInterface<bool>& interface) diff --git a/src/plugins/autotoolsprojectmanager/configurestep.h b/src/plugins/autotoolsprojectmanager/configurestep.h index 28555237a7..2626e06307 100644 --- a/src/plugins/autotoolsprojectmanager/configurestep.h +++ b/src/plugins/autotoolsprojectmanager/configurestep.h @@ -93,14 +93,14 @@ class ConfigureStep : public ProjectExplorer::AbstractProcessStep friend class ConfigureStepConfigWidget; public: - ConfigureStep(ProjectExplorer::BuildStepList *bsl); + explicit ConfigureStep(ProjectExplorer::BuildStepList *bsl); - bool init(); - void run(QFutureInterface<bool> &interface); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &interface) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QString additionalArguments() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; public slots: void setAdditionalArguments(const QString &list); @@ -114,7 +114,7 @@ protected: ConfigureStep(ProjectExplorer::BuildStepList *bsl, ConfigureStep *bs); ConfigureStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/autotoolsprojectmanager/makestep.cpp b/src/plugins/autotoolsprojectmanager/makestep.cpp index b0a66cd7bf..6a7111f2f3 100644 --- a/src/plugins/autotoolsprojectmanager/makestep.cpp +++ b/src/plugins/autotoolsprojectmanager/makestep.cpp @@ -160,7 +160,7 @@ void MakeStep::setClean(bool clean) m_clean = clean; } -bool MakeStep::init() +bool MakeStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); if (!bc) @@ -200,7 +200,7 @@ bool MakeStep::init() appendOutputParser(parser); outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void MakeStep::run(QFutureInterface<bool> &interface) diff --git a/src/plugins/autotoolsprojectmanager/makestep.h b/src/plugins/autotoolsprojectmanager/makestep.h index dd9bd2e5bb..384b424972 100644 --- a/src/plugins/autotoolsprojectmanager/makestep.h +++ b/src/plugins/autotoolsprojectmanager/makestep.h @@ -92,16 +92,16 @@ class MakeStep : public ProjectExplorer::AbstractProcessStep friend class MakeStepConfigWidget; public: - MakeStep(ProjectExplorer::BuildStepList *bsl); + explicit MakeStep(ProjectExplorer::BuildStepList *bsl); - bool init(); - void run(QFutureInterface<bool> &interface); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &interface) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; void setClean(bool clean); - bool immutable() const; + bool immutable() const override; void setBuildTarget(const QString &target, bool on); QString additionalArguments() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; public slots: void setAdditionalArguments(const QString &list); @@ -113,7 +113,7 @@ protected: MakeStep(ProjectExplorer::BuildStepList *bsl, MakeStep *bs); MakeStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/baremetal/baremetalcustomrunconfiguration.h b/src/plugins/baremetal/baremetalcustomrunconfiguration.h index 94f0bc24a5..46392f5705 100644 --- a/src/plugins/baremetal/baremetalcustomrunconfiguration.h +++ b/src/plugins/baremetal/baremetalcustomrunconfiguration.h @@ -44,23 +44,23 @@ class BareMetalCustomRunConfiguration : public BareMetalRunConfiguration public: BareMetalCustomRunConfiguration(ProjectExplorer::Target *parent); BareMetalCustomRunConfiguration(ProjectExplorer::Target *parent, - BareMetalCustomRunConfiguration *source); + BareMetalCustomRunConfiguration *source); - bool isEnabled() const { return true; } - bool isConfigured() const; - ConfigurationState ensureConfigured(QString *errorMessage); - QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; + bool isEnabled() const override { return true; } + bool isConfigured() const override; + ConfigurationState ensureConfigured(QString *errorMessage) override; + QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; - virtual QString localExecutableFilePath() const { return m_localExecutable; } + virtual QString localExecutableFilePath() const override { return m_localExecutable; } void setLocalExecutableFilePath(const QString &executable) { m_localExecutable = executable; } static Core::Id runConfigId(); static QString runConfigDefaultDisplayName(); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; private: QString m_localExecutable; diff --git a/src/plugins/baremetal/baremetalgdbcommandsdeploystep.cpp b/src/plugins/baremetal/baremetalgdbcommandsdeploystep.cpp index cdf1252b39..a16825ea46 100644 --- a/src/plugins/baremetal/baremetalgdbcommandsdeploystep.cpp +++ b/src/plugins/baremetal/baremetalgdbcommandsdeploystep.cpp @@ -37,6 +37,8 @@ using namespace ProjectExplorer; namespace BareMetal { namespace Internal { +const char GdbCommandsKey[] = "BareMetal.GdbCommandsStep.Commands"; + BareMetalGdbCommandsDeployStepWidget::BareMetalGdbCommandsDeployStepWidget(BareMetalGdbCommandsDeployStep &step) : m_step(step) { @@ -84,10 +86,6 @@ void BareMetalGdbCommandsDeployStep::ctor() setDefaultDisplayName(displayName()); } -BareMetalGdbCommandsDeployStep::~BareMetalGdbCommandsDeployStep() -{ -} - void BareMetalGdbCommandsDeployStep::run(QFutureInterface<bool> &fi) { fi.reportResult(true); @@ -134,8 +132,9 @@ QString BareMetalGdbCommandsDeployStep::gdbCommands() const return m_gdbCommands; } -bool BareMetalGdbCommandsDeployStep::init() +bool BareMetalGdbCommandsDeployStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); return true; } diff --git a/src/plugins/baremetal/baremetalgdbcommandsdeploystep.h b/src/plugins/baremetal/baremetalgdbcommandsdeploystep.h index c60b5c4677..d8d604ec9f 100644 --- a/src/plugins/baremetal/baremetalgdbcommandsdeploystep.h +++ b/src/plugins/baremetal/baremetalgdbcommandsdeploystep.h @@ -47,16 +47,15 @@ public: BareMetalGdbCommandsDeployStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); BareMetalGdbCommandsDeployStep(ProjectExplorer::BuildStepList *bsl, BareMetalGdbCommandsDeployStep *other); - ~BareMetalGdbCommandsDeployStep(); - bool init(); - void run(QFutureInterface<bool> &fi); - bool runInGuiThread() const { return true;} + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; + bool runInGuiThread() const override { return true;} - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; static Core::Id stepId(); static QString displayName(); @@ -69,8 +68,6 @@ private: QString m_gdbCommands; }; -const char GdbCommandsKey[] = "BareMetal.GdbCommandsStep.Commands"; - class BareMetalGdbCommandsDeployStepWidget: public ProjectExplorer::BuildStepConfigWidget { Q_OBJECT diff --git a/src/plugins/baremetal/baremetalrunconfiguration.h b/src/plugins/baremetal/baremetalrunconfiguration.h index 1af747eed6..7aac312408 100644 --- a/src/plugins/baremetal/baremetalrunconfiguration.h +++ b/src/plugins/baremetal/baremetalrunconfiguration.h @@ -50,10 +50,10 @@ public: explicit BareMetalRunConfiguration(ProjectExplorer::Target *parent, Core::Id id, const QString &projectFilePath); - bool isEnabled() const; - QString disabledReason() const; - QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; + bool isEnabled() const override; + QString disabledReason() const override; + QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; virtual QString localExecutableFilePath() const; QString arguments() const; @@ -61,7 +61,7 @@ public: QString workingDirectory() const; void setWorkingDirectory(const QString &wd); - QVariantMap toMap() const; + QVariantMap toMap() const override; QString projectFilePath() const; @@ -73,7 +73,7 @@ signals: protected: BareMetalRunConfiguration(ProjectExplorer::Target *parent, BareMetalRunConfiguration *source); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; QString defaultDisplayName(); void setDisabledReason(const QString &reason) const; diff --git a/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp b/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp index cdcdc60bbe..8d9e392547 100644 --- a/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp +++ b/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp @@ -33,6 +33,7 @@ #include <coreplugin/coreconstants.h> #include <utils/detailswidget.h> +#include <utils/themehelper.h> #include <QLineEdit> #include <QFormLayout> @@ -90,7 +91,8 @@ void BareMetalRunConfigurationWidget::addDisabledLabel(QVBoxLayout *topLayout) { QHBoxLayout * const hl = new QHBoxLayout; hl->addStretch(); - d->disabledIcon.setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + d->disabledIcon.setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); hl->addWidget(&d->disabledIcon); d->disabledReason.setVisible(false); hl->addWidget(&d->disabledReason); diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp index 72c7158106..920c1a75d7 100644 --- a/src/plugins/bineditor/bineditor.cpp +++ b/src/plugins/bineditor/bineditor.cpp @@ -697,6 +697,16 @@ QString BinEditorWidget::addressString(quint64 address) return m_addressString; } +static void paintCursorBorder(QPainter *painter, const QRect &cursorRect) +{ + painter->save(); + QPen borderPen(Qt::red); + borderPen.setJoinStyle(Qt::MiterJoin); + painter->setPen(borderPen); + painter->drawRect(QRectF(cursorRect).adjusted(0.5, 0.5, -0.5, -0.5)); + painter->restore(); +} + void BinEditorWidget::paintEvent(QPaintEvent *e) { QPainter painter(viewport()); @@ -869,10 +879,7 @@ void BinEditorWidget::paintEvent(QPaintEvent *e) if (cursor >= 0) { int w = fm.boundingRect(itemString.mid(cursor*3, 2)).width(); QRect cursorRect(x + cursor * m_columnWidth, y - m_ascent, w + 1, m_lineHeight); - painter.save(); - painter.setPen(Qt::red); - painter.drawRect(cursorRect.adjusted(0, 0, 0, -1)); - painter.restore(); + paintCursorBorder(&painter, cursorRect); if (m_hexCursor && m_cursorVisible) { if (m_lowNibble) cursorRect.adjust(fm.width(itemString.left(1)), 0, 0, 0); @@ -911,17 +918,16 @@ void BinEditorWidget::paintEvent(QPaintEvent *e) y-m_ascent, fm.width(printable.at(cursor)), m_lineHeight); - painter.save(); if (m_hexCursor || !m_cursorVisible) { - painter.setPen(Qt::red); - painter.drawRect(cursorRect.adjusted(0, 0, 0, -1)); + paintCursorBorder(&painter, cursorRect); } else { + painter.save(); painter.setClipRect(cursorRect); painter.fillRect(cursorRect, Qt::red); painter.setPen(Qt::white); painter.drawText(text_x, y, printable); + painter.restore(); } - painter.restore(); } } } diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index dfb1905992..64a2d91bcc 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -38,6 +38,7 @@ #include <QApplication> #include <utils/tooltip/tooltip.h> +#include <utils/themehelper.h> namespace ClangCodeModel { @@ -73,8 +74,8 @@ ClangTextMark::ClangTextMark(const QString &fileName, int lineNumber, ClangBackE void ClangTextMark::setIcon(ClangBackEnd::DiagnosticSeverity severity) { - static const QIcon errorIcon{QLatin1String(Core::Constants::ICON_ERROR)}; - static const QIcon warningIcon{QLatin1String(Core::Constants::ICON_WARNING)}; + static const QIcon errorIcon{Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_ERROR))}; + static const QIcon warningIcon{Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))}; if (isWarningOrNote(severity)) TextMark::setIcon(warningIcon); diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp index 5a2eabb4ef..93b9f9ed7b 100644 --- a/src/plugins/classview/classviewparser.cpp +++ b/src/plugins/classview/classviewparser.cpp @@ -729,7 +729,7 @@ QStringList Parser::projectNodeFileList(const FolderNode *node) const if (file->isGenerated()) continue; - list << file->path().toString(); + list << file->filePath().toString(); } foreach (const FolderNode *folder, subFolderNodes) { @@ -754,7 +754,7 @@ QStringList Parser::addProjectNode(const ParserTreeItem::Ptr &item, const Projec if (!node) return projectList; - const QString nodePath = node->path().toString(); + const QString nodePath = node->filePath().toString(); // our own files QStringList fileList; @@ -768,8 +768,8 @@ QStringList Parser::addProjectNode(const ParserTreeItem::Ptr &item, const Projec d->cachedPrjFileLists[nodePath] = fileList; } if (fileList.count() > 0) { - addProject(item, fileList, node->path().toString()); - projectList << node->path().toString(); + addProject(item, fileList, node->filePath().toString()); + projectList << node->filePath().toString(); } // subnodes @@ -777,7 +777,7 @@ QStringList Parser::addProjectNode(const ParserTreeItem::Ptr &item, const Projec foreach (const ProjectNode *project, projectNodes) { ParserTreeItem::Ptr itemPrj(new ParserTreeItem()); - SymbolInformation information(project->displayName(), project->path().toString()); + SymbolInformation information(project->displayName(), project->filePath().toString()); projectList += addProjectNode(itemPrj, project); @@ -798,7 +798,7 @@ QStringList Parser::getAllFiles(const ProjectNode *node) if (!node) return fileList; - const QString nodePath = node->path().toString(); + const QString nodePath = node->filePath().toString(); CitCachedPrjFileLists cit = d->cachedPrjFileLists.constFind(nodePath); // try to improve parsing speed by internal cache @@ -825,7 +825,7 @@ void Parser::addFlatTree(const ParserTreeItem::Ptr &item, const ProjectNode *nod fileList.removeDuplicates(); if (fileList.count() > 0) { - addProject(item, fileList, node->path().toString()); + addProject(item, fileList, node->filePath().toString()); } } diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 766b798b1d..192262d17e 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -451,9 +451,9 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er initializeVcs(new ClearCaseControl(this), context); m_clearcasePluginInstance = this; - connect(ICore::instance(), SIGNAL(coreAboutToClose()), this, SLOT(closing())); - connect(ProgressManager::instance(), SIGNAL(allTasksFinished(Core::Id)), - this, SLOT(tasksFinished(Core::Id))); + connect(ICore::instance(), &ICore::coreAboutToClose, this, &ClearCasePlugin::closing); + connect(ProgressManager::instance(), &ProgressManager::allTasksFinished, + this, &ClearCasePlugin::tasksFinished); Utils::MimeDatabase::addMimeTypes(QLatin1String(":/clearcase/ClearCase.mimetypes.xml")); @@ -495,7 +495,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+O") : tr("Alt+L,Alt+O"))); - connect(m_checkOutAction, SIGNAL(triggered()), this, SLOT(checkOutCurrentFile())); + connect(m_checkOutAction, &QAction::triggered, this, &ClearCasePlugin::checkOutCurrentFile); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -503,7 +503,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er command = ActionManager::registerAction(m_checkInCurrentAction, CMD_ID_CHECKIN, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+I") : tr("Alt+L,Alt+I"))); - connect(m_checkInCurrentAction, SIGNAL(triggered()), this, SLOT(startCheckInCurrentFile())); + connect(m_checkInCurrentAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInCurrentFile); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -511,7 +511,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er command = ActionManager::registerAction(m_undoCheckOutAction, CMD_ID_UNDOCHECKOUT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+U") : tr("Alt+L,Alt+U"))); - connect(m_undoCheckOutAction, SIGNAL(triggered()), this, SLOT(undoCheckOutCurrent())); + connect(m_undoCheckOutAction, &QAction::triggered, this, &ClearCasePlugin::undoCheckOutCurrent); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -519,7 +519,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er command = ActionManager::registerAction(m_undoHijackAction, CMD_ID_UNDOHIJACK, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+R") : tr("Alt+L,Alt+R"))); - connect(m_undoHijackAction, SIGNAL(triggered()), this, SLOT(undoHijackCurrent())); + connect(m_undoHijackAction, &QAction::triggered, this, &ClearCasePlugin::undoHijackCurrent); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -530,7 +530,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er CMD_ID_DIFF_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+D") : tr("Alt+L,Alt+D"))); - connect(m_diffCurrentAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); + connect(m_diffCurrentAction, &QAction::triggered, this, &ClearCasePlugin::diffCurrentFile); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -539,8 +539,8 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er CMD_ID_HISTORY_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+H") : tr("Alt+L,Alt+H"))); - connect(m_historyCurrentAction, SIGNAL(triggered()), this, - SLOT(historyCurrentFile())); + connect(m_historyCurrentAction, &QAction::triggered, this, + &ClearCasePlugin::historyCurrentFile); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -549,15 +549,15 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er CMD_ID_ANNOTATE, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+A") : tr("Alt+L,Alt+A"))); - connect(m_annotateCurrentAction, SIGNAL(triggered()), this, - SLOT(annotateCurrentFile())); + connect(m_annotateCurrentAction, &QAction::triggered, this, + &ClearCasePlugin::annotateCurrentFile); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); m_addFileAction = new ParameterAction(tr("Add File..."), tr("Add File \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_addFileAction, CMD_ID_ADD_FILE, context); command->setAttribute(Command::CA_UpdateText); - connect(m_addFileAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + connect(m_addFileAction, &QAction::triggered, this, &ClearCasePlugin::addCurrentFile); clearcaseMenu->addAction(command); clearcaseMenu->addSeparator(context); @@ -565,14 +565,14 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er m_diffActivityAction = new QAction(tr("Diff A&ctivity..."), this); m_diffActivityAction->setEnabled(false); command = ActionManager::registerAction(m_diffActivityAction, CMD_ID_DIFF_ACTIVITY, context); - connect(m_diffActivityAction, SIGNAL(triggered()), this, SLOT(diffActivity())); + connect(m_diffActivityAction, &QAction::triggered, this, &ClearCasePlugin::diffActivity); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); m_checkInActivityAction = new ParameterAction(tr("Ch&eck In Activity"), tr("Chec&k In Activity \"%1\"..."), ParameterAction::EnabledWithParameter, this); m_checkInActivityAction->setEnabled(false); command = ActionManager::registerAction(m_checkInActivityAction, CMD_ID_CHECKIN_ACTIVITY, context); - connect(m_checkInActivityAction, SIGNAL(triggered()), this, SLOT(startCheckInActivity())); + connect(m_checkInActivityAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInActivity); command->setAttribute(Command::CA_UpdateText); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -581,12 +581,12 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er m_updateIndexAction = new QAction(tr("Update Index"), this); command = ActionManager::registerAction(m_updateIndexAction, CMD_ID_UPDATEINDEX, context); - connect(m_updateIndexAction, SIGNAL(triggered()), this, SLOT(updateIndex())); + connect(m_updateIndexAction, &QAction::triggered, this, &ClearCasePlugin::updateIndex); clearcaseMenu->addAction(command); m_updateViewAction = new ParameterAction(tr("Update View"), tr("U&pdate View \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_updateViewAction, CMD_ID_UPDATE_VIEW, context); - connect(m_updateViewAction, SIGNAL(triggered()), this, SLOT(updateView())); + connect(m_updateViewAction, &QAction::triggered, this, &ClearCasePlugin::updateView); command->setAttribute(Command::CA_UpdateText); clearcaseMenu->addAction(command); @@ -595,14 +595,14 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er m_checkInAllAction = new QAction(tr("Check In All &Files..."), this); command = ActionManager::registerAction(m_checkInAllAction, CMD_ID_CHECKIN_ALL, context); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+F") : tr("Alt+L,Alt+F"))); - connect(m_checkInAllAction, SIGNAL(triggered()), this, SLOT(startCheckInAll())); + connect(m_checkInAllAction, &QAction::triggered, this, &ClearCasePlugin::startCheckInAll); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); m_statusAction = new QAction(tr("View &Status"), this); command = ActionManager::registerAction(m_statusAction, CMD_ID_STATUS, context); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+L,Meta+S") : tr("Alt+L,Alt+S"))); - connect(m_statusAction, SIGNAL(triggered()), this, SLOT(viewStatus())); + connect(m_statusAction, &QAction::triggered, this, &ClearCasePlugin::viewStatus); clearcaseMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -612,7 +612,7 @@ bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *er m_checkInSelectedAction = new QAction(VcsBaseSubmitEditor::submitIcon(), tr("Check In"), this); command = ActionManager::registerAction(m_checkInSelectedAction, Constants::CHECKIN_SELECTED, clearcasecheckincontext); command->setAttribute(Command::CA_UpdateText); - connect(m_checkInSelectedAction, SIGNAL(triggered()), this, SLOT(checkInSelected())); + connect(m_checkInSelectedAction, &QAction::triggered, this, &ClearCasePlugin::checkInSelected); m_checkInDiffAction = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff Selected Files"), this); ActionManager::registerAction(m_checkInDiffAction , Constants::DIFF_SELECTED, clearcasecheckincontext); @@ -1775,8 +1775,8 @@ bool ClearCasePlugin::ccFileOp(const QString &workingDir, const QString &title, commentLabel->setBuddy(commentEdit); - connect(buttonBox, SIGNAL(accepted()), &fileOpDlg, SLOT(accept())); - connect(buttonBox, SIGNAL(rejected()), &fileOpDlg, SLOT(reject())); + connect(buttonBox, &QDialogButtonBox::accepted, &fileOpDlg, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, &fileOpDlg, &QDialog::reject); if (!fileOpDlg.exec()) return false; @@ -2228,7 +2228,7 @@ void ClearCasePlugin::sync(QFutureInterface<void> &future, QStringList files) { ClearCasePlugin *plugin = ClearCasePlugin::instance(); ClearCaseSync ccSync(plugin, plugin->m_statusMap); - connect(&ccSync, SIGNAL(updateStreamAndView()), plugin, SLOT(updateStreamAndView())); + connect(&ccSync, &ClearCaseSync::updateStreamAndView, plugin, &ClearCasePlugin::updateStreamAndView); ccSync.run(future, files); } diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h index f23142546a..69143b74dc 100644 --- a/src/plugins/clearcase/clearcaseplugin.h +++ b/src/plugins/clearcase/clearcaseplugin.h @@ -179,29 +179,10 @@ public slots: void updateStreamAndView(); private slots: - void checkOutCurrentFile(); - void addCurrentFile(); - void undoCheckOutCurrent(); - void undoHijackCurrent(); - void diffActivity(); - void diffCurrentFile(); - void startCheckInAll(); - void startCheckInActivity(); - void startCheckInCurrentFile(); - void historyCurrentFile(); - void annotateCurrentFile(); void annotateVersion(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber); void describe(const QString &source, const QString &changeNr); - void viewStatus(); - void checkInSelected(); - void diffCheckInFiles(const QStringList &); - void updateIndex(); - void updateView(); - void projectChanged(ProjectExplorer::Project *project); - void tasksFinished(Core::Id type); void syncSlot(); - void closing(); - void updateStatusActions(); + #ifdef WITH_TESTS void initTestCase(); void cleanupTestCase(); @@ -227,6 +208,27 @@ protected: QList<QStringPair> ccGetActivities() const; private: + void checkOutCurrentFile(); + void addCurrentFile(); + void undoCheckOutCurrent(); + void undoHijackCurrent(); + void diffActivity(); + void diffCurrentFile(); + void startCheckInAll(); + void startCheckInActivity(); + void startCheckInCurrentFile(); + void historyCurrentFile(); + void annotateCurrentFile(); + void viewStatus(); + void checkInSelected(); + void diffCheckInFiles(const QStringList &); + void updateIndex(); + void updateView(); + void projectChanged(ProjectExplorer::Project *project); + void tasksFinished(Core::Id type); + void closing(); + void updateStatusActions(); + inline bool isCheckInEditorOpen() const; QStringList getVobList() const; QString ccManagesDirectory(const QString &directory) const; diff --git a/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp b/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp index 00fc12c5f1..980f87c443 100644 --- a/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp +++ b/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp @@ -65,9 +65,7 @@ int distance(const QString &targetDirectory, const FileName &fileName) void CMakeCbpParser::sortFiles() { QLoggingCategory log("qtc.cmakeprojectmanager.filetargetmapping"); - QList<FileName> fileNames = Utils::transform(m_fileList, [] (FileNode *node) { - return node->path(); - }); + FileNameList fileNames = Utils::transform(m_fileList, &FileNode::filePath); Utils::sort(fileNames); diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp index cba543e7ae..85c1688926 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp @@ -588,12 +588,17 @@ void CMakeRunPage::runCMake() CMakeManager *cmakeManager = m_cmakeWizard->cmakeManager(); if (cmake && cmake->isValid()) { m_cmakeProcess = new Utils::QtcProcess(); - connect(m_cmakeProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(cmakeReadyReadStandardOutput())); - connect(m_cmakeProcess, SIGNAL(readyReadStandardError()), this, SLOT(cmakeReadyReadStandardError())); - connect(m_cmakeProcess, SIGNAL(finished(int)), this, SLOT(cmakeFinished())); - cmakeManager->createXmlFile(m_cmakeProcess, cmake->cmakeExecutable().toString(), m_argumentsLineEdit->text(), - m_cmakeWizard->sourceDirectory(), m_buildDirectory, env, - QString::fromLatin1(generatorInfo.generatorArgument())); + connect(m_cmakeProcess, &QProcess::readyReadStandardOutput, + this, &CMakeRunPage::cmakeReadyReadStandardOutput); + connect(m_cmakeProcess, &QProcess::readyReadStandardError, + this, &CMakeRunPage::cmakeReadyReadStandardError); + connect(m_cmakeProcess, static_cast<void(QProcess::*)(int)>(&QProcess::finished), + this, &CMakeRunPage::cmakeFinished); + cmakeManager->createXmlFile(m_cmakeProcess, cmake->cmakeExecutable().toString(), + m_argumentsLineEdit->text(), m_cmakeWizard->sourceDirectory(), + m_buildDirectory, env, + QString::fromLatin1(generatorInfo.generatorArgument()), + generatorInfo.preLoadCacheFileArgument()); } else { m_runCMake->setEnabled(true); m_argumentsLineEdit->setEnabled(true); diff --git a/src/plugins/cmakeprojectmanager/cmakepreloadcachekitconfigwidget.cpp b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitconfigwidget.cpp new file mode 100644 index 0000000000..58793fedf3 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitconfigwidget.cpp @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "cmakepreloadcachekitconfigwidget.h" +#include "cmakepreloadcachekitinformation.h" + +#include <projectexplorer/kit.h> + +#include <QLineEdit> + +namespace CMakeProjectManager { +namespace Internal { + +CMakePreloadCacheKitConfigWidget::CMakePreloadCacheKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki) : + ProjectExplorer::KitConfigWidget(k, ki), + m_lineEdit(new QLineEdit) +{ + refresh(); + m_lineEdit->setToolTip(toolTip()); + connect(m_lineEdit, &QLineEdit::textEdited, + this, &CMakePreloadCacheKitConfigWidget::preloadFileWasChanged); +} + +CMakePreloadCacheKitConfigWidget::~CMakePreloadCacheKitConfigWidget() +{ + delete m_lineEdit; +} + +QWidget *CMakePreloadCacheKitConfigWidget::mainWidget() const +{ + return m_lineEdit; +} + +QString CMakePreloadCacheKitConfigWidget::displayName() const +{ + return tr("CMake preload file:"); +} + +QString CMakePreloadCacheKitConfigWidget::toolTip() const +{ + return tr("The preload cache file to use when running cmake on the project.<br>" + "This setting is ignored when using other build systems."); +} + +void CMakePreloadCacheKitConfigWidget::makeReadOnly() +{ + m_lineEdit->setEnabled(false); +} + +void CMakePreloadCacheKitConfigWidget::refresh() +{ + if (!m_ignoreChange) + m_lineEdit->setText(CMakePreloadCacheKitInformation::preloadCacheFile(m_kit)); +} + +void CMakePreloadCacheKitConfigWidget::preloadFileWasChanged(const QString &text) +{ + m_ignoreChange = true; + m_kit->setValue(CMakePreloadCacheKitInformation::id(), text); + m_ignoreChange = false; +} + +} // namespace Internal +} // namespace CMakeProjectManager diff --git a/src/plugins/vcsbase/corelistener.h b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitconfigwidget.h index 1c385e2f0c..b0f2b1f79c 100644 --- a/src/plugins/vcsbase/corelistener.h +++ b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitconfigwidget.h @@ -28,30 +28,42 @@ ** ****************************************************************************/ -#ifndef CORELISTENER_H -#define CORELISTENER_H +#ifndef CMAKEPRELOADCACHEKITCONFIGWIDGET_H +#define CMAKEPRELOADCACHEKITCONFIGWIDGET_H -#include <coreplugin/icorelistener.h> +#include <projectexplorer/kitconfigwidget.h> -namespace VcsBase { - -class VcsBaseSubmitEditor; +QT_BEGIN_NAMESPACE +class QLineEdit; +QT_END_NAMESPACE +namespace CMakeProjectManager { namespace Internal { -class CoreListener : public Core::ICoreListener +class CMakePreloadCacheKitConfigWidget : public ProjectExplorer::KitConfigWidget { Q_OBJECT public: - explicit CoreListener(QObject *parent = 0); - bool editorAboutToClose(Core::IEditor *editor); + CMakePreloadCacheKitConfigWidget(ProjectExplorer::Kit *k, const ProjectExplorer::KitInformation *ki); + ~CMakePreloadCacheKitConfigWidget(); + + QWidget *mainWidget() const; + QString displayName() const; + QString toolTip() const; + + void makeReadOnly(); + void refresh(); + +private slots: + void preloadFileWasChanged(const QString &text); -signals: - void submitEditorAboutToClose(VcsBaseSubmitEditor *e, bool *result); +private: + QLineEdit *m_lineEdit = nullptr; + bool m_ignoreChange = false; }; } // namespace Internal -} // namespace VcsBase +} // namespace CMakeProjectManager -#endif // CORELISTENER_H +#endif // CMAKEPRELOADCACHEKITCONFIGWIDGET_H diff --git a/src/plugins/cmakeprojectmanager/cmakepreloadcachekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitinformation.cpp new file mode 100644 index 0000000000..6267eff9b0 --- /dev/null +++ b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitinformation.cpp @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Canonical Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ +#include "cmakepreloadcachekitinformation.h" +#include "cmakepreloadcachekitconfigwidget.h" +#include "cmaketoolmanager.h" +#include "cmaketool.h" + +#include <utils/qtcassert.h> +#include <projectexplorer/task.h> +#include <projectexplorer/kit.h> +#include <projectexplorer/projectexplorerconstants.h> + +#include <QDebug> + +using namespace ProjectExplorer; + +namespace CMakeProjectManager { + +CMakePreloadCacheKitInformation::CMakePreloadCacheKitInformation() +{ + setObjectName(QLatin1String("CMakePreloadCacheKitInformation")); + setId(CMakePreloadCacheKitInformation::id()); + setPriority(20000); +} + +Core::Id CMakePreloadCacheKitInformation::id() +{ + return "CMakeProjectManager.CMakePreloadCacheKitInformation"; +} + +QVariant CMakePreloadCacheKitInformation::defaultValue(Kit *) const +{ + return QString(); +} + +QList<Task> CMakePreloadCacheKitInformation::validate(const Kit *k) const +{ + Q_UNUSED(k); + return QList<Task>(); +} + +void CMakePreloadCacheKitInformation::setup(Kit *k) +{ + Q_UNUSED(k); +} + +void CMakePreloadCacheKitInformation::fix(Kit *k) +{ + Q_UNUSED(k); +} + +KitInformation::ItemList CMakePreloadCacheKitInformation::toUserOutput(const Kit *k) const +{ + return ItemList() << qMakePair(tr("CMake Preload"), k->value(id()).toString()); +} + +KitConfigWidget *CMakePreloadCacheKitInformation::createConfigWidget(Kit *k) const +{ + return new Internal::CMakePreloadCacheKitConfigWidget(k, this); +} + +void CMakePreloadCacheKitInformation::setPreloadCacheFile(Kit *k, const QString &preload) +{ + if (!k) + return; + k->setValue(CMakePreloadCacheKitInformation::id(), preload); +} + +QString CMakePreloadCacheKitInformation::preloadCacheFile(const Kit *k) +{ + if (!k) + return QString(); + return k->value(CMakePreloadCacheKitInformation::id()).toString(); +} + +} // namespace CMakeProjectManager diff --git a/src/plugins/vcsbase/corelistener.cpp b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitinformation.h index 408fe71df9..5f653a2a73 100644 --- a/src/plugins/vcsbase/corelistener.cpp +++ b/src/plugins/cmakeprojectmanager/cmakepreloadcachekitinformation.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Canonical Ltd. ** Contact: http://www.qt.io/licensing ** ** This file is part of Qt Creator. @@ -27,37 +27,35 @@ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ****************************************************************************/ +#ifndef CMAKEPROJECTMANAGER_CMAKEPRELOADCACHEKITINFORMATION_H +#define CMAKEPROJECTMANAGER_CMAKEPRELOADCACHEKITINFORMATION_H -#include "corelistener.h" -#include "vcsbasesubmiteditor.h" +#include "cmake_global.h" -/*! - \class VcsBase::Internal::CoreListener +#include <projectexplorer/kitmanager.h> - \brief The CoreListener class catches the closing of a submit editor. +namespace CMakeProjectManager { - Catches the closing of a submit editor to trigger the submit. - One instance of this class exists, connected to the instances - of VcsBasePlugin, which dispatch if the editor kind matches theirs - (which is why the approach of passing the bool result was chosen). -*/ +class CMAKE_EXPORT CMakePreloadCacheKitInformation : public ProjectExplorer::KitInformation +{ + Q_OBJECT +public: + CMakePreloadCacheKitInformation(); -namespace VcsBase { -namespace Internal { + static Core::Id id(); -CoreListener::CoreListener(QObject *parent) : - ICoreListener(parent) -{ -} + // KitInformation interface + QVariant defaultValue(ProjectExplorer::Kit *) const override; + QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override; + void setup(ProjectExplorer::Kit *k) override; + void fix(ProjectExplorer::Kit *k) override; + ItemList toUserOutput(const ProjectExplorer::Kit *k) const override; + ProjectExplorer::KitConfigWidget *createConfigWidget(ProjectExplorer::Kit *k) const override; -bool CoreListener::editorAboutToClose(Core::IEditor *editor) -{ - bool result = true; - if (editor) - if (VcsBase::VcsBaseSubmitEditor *se = qobject_cast<VcsBase::VcsBaseSubmitEditor *>(editor)) - emit submitEditorAboutToClose(se, &result); - return result; -} - -} // namespace Internal -} // namespace VcsBase + static void setPreloadCacheFile(ProjectExplorer::Kit *k, const QString &preload); + static QString preloadCacheFile(const ProjectExplorer::Kit *k); +}; + +} // namespace CMakeProjectManager + +#endif // CMAKEPROJECTMANAGER_CMAKEPRELOADCACHEKITINFORMATION_H diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index fe580a3de2..1ce671cdb9 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -299,7 +299,7 @@ bool CMakeProject::parseCMakeLists() if (cbpparser.hasCMakeFiles()) { fileList.append(cbpparser.cmakeFileList()); foreach (const ProjectExplorer::FileNode *node, cbpparser.cmakeFileList()) - projectFiles.insert(node->path()); + projectFiles.insert(node->filePath()); } else { // Manually add the CMakeLists.txt file FileName cmakeListTxt = projectDirectory().appendPath(QLatin1String("CMakeLists.txt")); @@ -312,7 +312,7 @@ bool CMakeProject::parseCMakeLists() m_files.clear(); foreach (ProjectExplorer::FileNode *fn, fileList) - m_files.append(fn->path().toString()); + m_files.append(fn->filePath().toString()); m_files.sort(); buildTree(m_rootNode, fileList); @@ -432,7 +432,7 @@ void CMakeProject::gatherFileNodes(ProjectExplorer::FolderNode *parent, QList<Pr bool sortNodesByPath(Node *a, Node *b) { - return a->path() < b->path(); + return a->filePath() < b->filePath(); } void CMakeProject::buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer::FileNode *> newList) @@ -454,7 +454,7 @@ void CMakeProject::buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer:: foreach (ProjectExplorer::FileNode *fn, added) { // qDebug()<<"added"<<fn->path(); // Get relative path to rootNode - QString parentDir = fn->path().toFileInfo().absolutePath(); + QString parentDir = fn->filePath().toFileInfo().absolutePath(); ProjectExplorer::FolderNode *folder = findOrCreateFolder(rootNode, parentDir); folder->addFileNodes(QList<ProjectExplorer::FileNode *>()<< fn); } @@ -477,7 +477,7 @@ void CMakeProject::buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer:: ProjectExplorer::FolderNode *CMakeProject::findOrCreateFolder(CMakeProjectNode *rootNode, QString directory) { - FileName path = rootNode->path().parentDir(); + FileName path = rootNode->filePath().parentDir(); QDir rootParentDir(path.toString()); QString relativePath = rootParentDir.relativeFilePath(directory); if (relativePath == QLatin1String(".")) @@ -489,7 +489,7 @@ ProjectExplorer::FolderNode *CMakeProject::findOrCreateFolder(CMakeProjectNode * // Find folder in subFolders bool found = false; foreach (ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) { - if (folder->path() == path) { + if (folder->filePath() == path) { // yeah found something :) parent = folder; found = true; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 397c769d04..f624b46383 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -147,7 +147,7 @@ bool CMakeManager::preferNinja() const // sounds like a plan void CMakeManager::createXmlFile(Utils::QtcProcess *proc, const QString &executable, const QString &arguments, const QString &sourceDirectory, const QDir &buildDirectory, - const Utils::Environment &env, const QString &generator) + const Utils::Environment &env, const QString &generator, const QString &preloadCache) { QString buildDirectoryPath = buildDirectory.absolutePath(); buildDirectory.mkpath(buildDirectoryPath); @@ -160,6 +160,8 @@ void CMakeManager::createXmlFile(Utils::QtcProcess *proc, const QString &executa Utils::QtcProcess::addArg(&args, srcdir); Utils::QtcProcess::addArgs(&args, arguments); Utils::QtcProcess::addArg(&args, generator); + if (!preloadCache.isEmpty()) + Utils::QtcProcess::addArg(&args, preloadCache); proc->setCommand(executable, args); proc->start(); } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h index 0d8af0b35c..78c1a26555 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h @@ -64,7 +64,8 @@ public: const QString &sourceDirectory, const QDir &buildDirectory, const Utils::Environment &env, - const QString &generator); + const QString &generator, + const QString &preloadCache); bool preferNinja() const; static QString findCbpFile(const QDir &); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro index a4d06cf713..d96e4138d8 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.pro @@ -26,7 +26,9 @@ HEADERS = cmakebuildinfo.h \ cmakefile.h \ cmakebuildsettingswidget.h \ cmakeindenter.h \ - cmakeautocompleter.h + cmakeautocompleter.h \ + cmakepreloadcachekitinformation.h \ + cmakepreloadcachekitconfigwidget.h SOURCES = cmakeproject.cpp \ cmakeprojectplugin.cpp \ @@ -50,7 +52,8 @@ SOURCES = cmakeproject.cpp \ cmakefile.cpp \ cmakebuildsettingswidget.cpp \ cmakeindenter.cpp \ - cmakeautocompleter.cpp - + cmakeautocompleter.cpp \ + cmakepreloadcachekitinformation.cpp \ + cmakepreloadcachekitconfigwidget.cpp RESOURCES += cmakeproject.qrc diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs index eddd1c5d7e..ee5f3d5cbe 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs @@ -41,6 +41,10 @@ QtcPlugin { "cmakeopenprojectwizard.h", "cmakeparser.cpp", "cmakeparser.h", + "cmakepreloadcachekitconfigwidget.cpp", + "cmakepreloadcachekitconfigwidget.h", + "cmakepreloadcachekitinformation.cpp", + "cmakepreloadcachekitinformation.h", "cmakeproject.cpp", "cmakeproject.h", "cmakeproject.qrc", diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index ebd92c335a..49dc64126c 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -40,11 +40,10 @@ namespace Internal { class CMakeProjectNode : public ProjectExplorer::ProjectNode { - friend class CMakeProject; public: CMakeProjectNode(const Utils::FileName &fileName); - virtual bool showInSimpleTree() const; - virtual QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; + bool showInSimpleTree() const override; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index 9aca653fc6..669a78ec2c 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -40,6 +40,7 @@ #include "cmakesettingspage.h" #include "cmaketoolmanager.h" #include "cmakekitinformation.h" +#include "cmakepreloadcachekitinformation.h" #include <coreplugin/featureprovider.h> #include <utils/mimetypes/mimedatabase.h> @@ -75,6 +76,7 @@ bool CMakeProjectPlugin::initialize(const QStringList & /*arguments*/, QString * new CMakeToolManager(this); ProjectExplorer::KitManager::registerKitInformation(new CMakeKitInformation); + ProjectExplorer::KitManager::registerKitInformation(new CMakePreloadCacheKitInformation); return true; } diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index 66970f65f7..c0df82f2b7 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -92,10 +92,6 @@ CMakeRunConfiguration::CMakeRunConfiguration(Target *parent, CMakeRunConfigurati ctor(); } -CMakeRunConfiguration::~CMakeRunConfiguration() -{ -} - void CMakeRunConfiguration::ctor() { setDefaultDisplayName(defaultDisplayName()); diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h index 48a2f234b1..1f93196cf6 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -57,32 +57,31 @@ class CMakeRunConfiguration : public ProjectExplorer::LocalApplicationRunConfigu public: CMakeRunConfiguration(ProjectExplorer::Target *parent, Core::Id id, const QString &target, const QString &workingDirectory, const QString &title); - ~CMakeRunConfiguration(); - QString executable() const; - ProjectExplorer::ApplicationLauncher::Mode runMode() const; - QString workingDirectory() const; - QString commandLineArguments() const; - QWidget *createConfigurationWidget(); + QString executable() const override; + ProjectExplorer::ApplicationLauncher::Mode runMode() const override; + QString workingDirectory() const override; + QString commandLineArguments() const override; + QWidget *createConfigurationWidget() override; void setExecutable(const QString &executable); void setBaseWorkingDirectory(const QString &workingDirectory); QString title() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; void setEnabled(bool b); - bool isEnabled() const; - QString disabledReason() const; + bool isEnabled() const override; + QString disabledReason() const override; signals: void baseWorkingDirectoryChanged(const QString&); protected: CMakeRunConfiguration(ProjectExplorer::Target *parent, CMakeRunConfiguration *source); - virtual bool fromMap(const QVariantMap &map); + virtual bool fromMap(const QVariantMap &map) override; QString defaultDisplayName() const; private: diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp index 9620acecc5..2543217667 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp @@ -163,7 +163,7 @@ static void readAndDeleteLegacyCMakeSettings () static QList<CMakeTool *> autoDetectCMakeTools() { - QList<FileName> suspects; + FileNameList suspects; Utils::Environment env = Environment::systemEnvironment(); diff --git a/src/plugins/cmakeprojectmanager/generatorinfo.cpp b/src/plugins/cmakeprojectmanager/generatorinfo.cpp index febd792e88..84b7e3f92d 100644 --- a/src/plugins/cmakeprojectmanager/generatorinfo.cpp +++ b/src/plugins/cmakeprojectmanager/generatorinfo.cpp @@ -38,6 +38,7 @@ #include <baremetal/baremetalconstants.h> #include <remotelinux/remotelinux_constants.h> #include <qnx/qnxconstants.h> +#include "cmakepreloadcachekitinformation.h" namespace CMakeProjectManager { namespace Internal { @@ -93,6 +94,12 @@ QByteArray GeneratorInfo::generatorArgument() const return QByteArray("-GCodeBlocks - ") + tmp; } +QString GeneratorInfo::preLoadCacheFileArgument() const +{ + const QString tmp = CMakePreloadCacheKitInformation::preloadCacheFile(m_kit); + return tmp.isEmpty() ? QString() : QString::fromLatin1("-C") + tmp; +} + QString GeneratorInfo::displayName() const { if (!m_kit) diff --git a/src/plugins/cmakeprojectmanager/generatorinfo.h b/src/plugins/cmakeprojectmanager/generatorinfo.h index 27b0bde33e..bd79cdecb1 100644 --- a/src/plugins/cmakeprojectmanager/generatorinfo.h +++ b/src/plugins/cmakeprojectmanager/generatorinfo.h @@ -56,6 +56,7 @@ public: QString displayName() const; QByteArray generatorArgument() const; QByteArray generator() const; + QString preLoadCacheFileArgument() const; private: ProjectExplorer::Kit *m_kit; diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 821f3ad908..4d67da3353 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -115,10 +115,6 @@ void MakeStep::ctor() this, &MakeStep::buildTargetsChanged); } -MakeStep::~MakeStep() -{ -} - CMakeBuildConfiguration *MakeStep::cmakeBuildConfiguration() const { return static_cast<CMakeBuildConfiguration *>(buildConfiguration()); @@ -178,7 +174,7 @@ bool MakeStep::fromMap(const QVariantMap &map) } -bool MakeStep::init() +bool MakeStep::init(QList<const BuildStep *> &earlierSteps) { CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); if (!bc) @@ -223,7 +219,7 @@ bool MakeStep::init() appendOutputParser(parser); outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void MakeStep::run(QFutureInterface<bool> &fi) diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h index d82f44d6f3..0e1e4c0eef 100644 --- a/src/plugins/cmakeprojectmanager/makestep.h +++ b/src/plugins/cmakeprojectmanager/makestep.h @@ -55,17 +55,16 @@ class MakeStep : public ProjectExplorer::AbstractProcessStep friend class MakeStepFactory; public: - MakeStep(ProjectExplorer::BuildStepList *bsl); - virtual ~MakeStep(); + explicit MakeStep(ProjectExplorer::BuildStepList *bsl); CMakeBuildConfiguration *cmakeBuildConfiguration() const; - virtual bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - virtual void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; - virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - virtual bool immutable() const; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QStringList buildTargets() const; bool buildsBuildTarget(const QString &target) const; @@ -80,7 +79,7 @@ public: void setClean(bool clean); - QVariantMap toMap() const; + QVariantMap toMap() const override; void setUserMakeCommand(const QString &make); QString userMakeCommand() const; @@ -93,16 +92,16 @@ signals: void targetsToBuildChanged(); protected: - void processStarted(); - void processFinished(int exitCode, QProcess::ExitStatus status); + void processStarted() override; + void processFinished(int exitCode, QProcess::ExitStatus status) override; MakeStep(ProjectExplorer::BuildStepList *bsl, MakeStep *bs); MakeStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; // For parsing [ 76%] - virtual void stdOutput(const QString &line); + virtual void stdOutput(const QString &line) override; private: void ctor(); diff --git a/src/plugins/coreplugin/core.qrc b/src/plugins/coreplugin/core.qrc index 3b20ee263c..a383424b1b 100644 --- a/src/plugins/coreplugin/core.qrc +++ b/src/plugins/coreplugin/core.qrc @@ -1,6 +1,7 @@ <RCC> <qresource prefix="/core"> <file>images/clean_pane_small.png</file> + <file>images/clean_pane_small@2x.png</file> <file>images/clear.png</file> <file>images/clear@2x.png</file> <file>images/closebutton.png</file> @@ -26,10 +27,10 @@ <file>images/locked@2x.png</file> <file>images/magnifier.png</file> <file>images/magnifier@2x.png</file> - <file>images/dark_magnifier.png</file> - <file>images/dark_magnifier@2x.png</file> <file>images/minus.png</file> + <file>images/minus@2x.png</file> <file>images/next.png</file> + <file>images/next@2x.png</file> <file>images/panel_button.png</file> <file>images/panel_button@2x.png</file> <file>images/panel_button_checked.png</file> @@ -41,7 +42,9 @@ <file>images/panel_button_pressed.png</file> <file>images/panel_button_pressed@2x.png</file> <file>images/plus.png</file> + <file>images/plus@2x.png</file> <file>images/prev.png</file> + <file>images/prev@2x.png</file> <file>images/pushbutton.png</file> <file>images/pushbutton_hover.png</file> <file>images/pushbutton_pressed.png</file> @@ -49,6 +52,7 @@ <file>images/replace.png</file> <file>images/reset.png</file> <file>images/sidebaricon.png</file> + <file>images/sidebaricon@2x.png</file> <file>images/splitbutton_horizontal.png</file> <file>images/splitbutton_horizontal@2x.png</file> <file>images/statusbar.png</file> @@ -113,5 +117,17 @@ <file>images/dark_fileicon.png</file> <file>images/dark_foldericon.png</file> <file>images/Desktop.png</file> + <file>images/run_overlay_small.png</file> + <file>images/run_overlay_small@2x.png</file> + <file>images/stop_overlay_small.png</file> + <file>images/stop_overlay_small@2x.png</file> + <file>images/debugger_overlay_small.png</file> + <file>images/debugger_overlay_small@2x.png</file> + <file>images/interrupt_overlay_small.png</file> + <file>images/interrupt_overlay_small@2x.png</file> + <file>images/continue_overlay_small.png</file> + <file>images/continue_overlay_small@2x.png</file> + <file>images/zoom.png</file> + <file>images/zoom@2x.png</file> </qresource> </RCC> diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 499e77854e..8d6c2d8bee 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -194,8 +194,8 @@ const char ICON_REDO[] = ":/core/images/redo.png"; const char ICON_COPY[] = ":/core/images/editcopy.png"; const char ICON_PASTE[] = ":/core/images/editpaste.png"; const char ICON_CUT[] = ":/core/images/editcut.png"; -const char ICON_NEXT[] = ":/core/images/next.png"; -const char ICON_PREV[] = ":/core/images/prev.png"; +const char ICON_NEXT[] = ":/core/images/next.png|IconsNavigationArrowsColor"; +const char ICON_PREV[] = ":/core/images/prev.png|IconsNavigationArrowsColor"; const char ICON_DIR[] = ":/core/images/dir.png"; const char ICON_CLEAN_PANE[] = ":/core/images/clean_pane_small.png"; const char ICON_CLEAR[] = ":/core/images/clear.png"; @@ -219,9 +219,14 @@ const char ICON_PAUSE[] = ":/core/images/pause.png"; const char ICON_QTLOGO_32[] = ":/core/images/logo/32/QtProject-qtcreator.png"; const char ICON_QTLOGO_64[] = ":/core/images/logo/64/QtProject-qtcreator.png"; const char ICON_QTLOGO_128[] = ":/core/images/logo/128/QtProject-qtcreator.png"; -const char ICON_WARNING[] = ":/core/images/warning.png"; -const char ICON_ERROR[] = ":/core/images/error.png"; -const char ICON_INFO[] = ":/core/images/info.png"; +const char ICON_WARNING[] = ":/core/images/warning.png|IconsWarningColor"; +const char ICON_ERROR[] = ":/core/images/error.png|IconsErrorColor"; +const char ICON_INFO[] = ":/core/images/info.png|IconsInfoColor"; +const char ICON_DEBUG_START_SMALL[] = ":/core/images/debugger_overlay_small.png|IconsDebugColor,:/core/images/run_overlay_small.png|IconsRunColor"; +const char ICON_DEBUG_EXIT_SMALL[] = ":/core/images/debugger_overlay_small.png|IconsDebugColor,:/core/images/stop_overlay_small.png|IconsStopColor"; +const char ICON_DEBUG_INTERRUPT_SMALL[] = ":/core/images/debugger_overlay_small.png|IconsDebugColor,:/core/images/interrupt_overlay_small.png|IconsInterruptColor"; +const char ICON_DEBUG_CONTINUE_SMALL[] = ":/core/images/debugger_overlay_small.png|IconsDebugColor,:/core/images/continue_overlay_small.png|IconsRunColor"; +const char ICON_ZOOM[] = ":/core/images/zoom.png"; const char WIZARD_CATEGORY_QT[] = "R.Qt"; const char WIZARD_TR_CATEGORY_QT[] = QT_TRANSLATE_NOOP("Core", "Qt"); diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro index de9318feaa..650a91dd3a 100644 --- a/src/plugins/coreplugin/coreplugin.pro +++ b/src/plugins/coreplugin/coreplugin.pro @@ -101,7 +101,6 @@ SOURCES += corejsextensions.cpp \ removefiledialog.cpp \ iversioncontrol.cpp \ dialogs/addtovcsdialog.cpp \ - icorelistener.cpp \ ioutputpane.cpp \ patchtool.cpp \ windowsupport.cpp \ @@ -177,7 +176,6 @@ HEADERS += corejsextensions.h \ coreconstants.h \ iversioncontrol.h \ ifilewizardextension.h \ - icorelistener.h \ versiondialog.h \ core_global.h \ statusbarwidget.h \ diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index bd64e1f3ef..fd1dc2e92a 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -57,7 +57,6 @@ QtcPlugin { "helpmanager.cpp", "helpmanager.h", "icontext.cpp", "icontext.h", "icore.cpp", "icore.h", - "icorelistener.cpp", "icorelistener.h", "id.cpp", "id.h", "idocument.cpp", "idocument.h", "idocumentfactory.cpp", "idocumentfactory.h", diff --git a/src/plugins/coreplugin/designmode.cpp b/src/plugins/coreplugin/designmode.cpp index f119a29eba..d935ae8143 100644 --- a/src/plugins/coreplugin/designmode.cpp +++ b/src/plugins/coreplugin/designmode.cpp @@ -35,9 +35,7 @@ #include <coreplugin/modemanager.h> #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/coreconstants.h> -#include <coreplugin/icorelistener.h> #include <coreplugin/editormanager/ieditor.h> -#include <extensionsystem/pluginmanager.h> #include <QPointer> #include <QStringList> @@ -49,36 +47,6 @@ static Core::DesignMode *m_instance = 0; namespace Core { -class EditorManager; - -enum { - debug = false -}; - -namespace Internal { - -class DesignModeCoreListener : public ICoreListener -{ -public: - DesignModeCoreListener(DesignMode* mode); - bool coreAboutToClose(); -private: - DesignMode *m_mode; -}; - -DesignModeCoreListener::DesignModeCoreListener(DesignMode *mode) : - m_mode(mode) -{ -} - -bool DesignModeCoreListener::coreAboutToClose() -{ - m_mode->currentEditorChanged(0); - return true; -} - -} // namespace Internal - struct DesignEditorInfo { int widgetIndex; @@ -90,10 +58,9 @@ struct DesignEditorInfo class DesignModePrivate { public: - explicit DesignModePrivate(DesignMode *q); + DesignModePrivate(); public: - Internal::DesignModeCoreListener *m_coreListener; QPointer<IEditor> m_currentEditor; bool m_isActive; bool m_isRequired; @@ -102,18 +69,22 @@ public: Context m_activeContext; }; -DesignModePrivate::DesignModePrivate(DesignMode *q) - : m_coreListener(new Internal::DesignModeCoreListener(q)), - m_isActive(false), - m_isRequired(false), - m_stackWidget(new QStackedWidget) -{ -} +DesignModePrivate::DesignModePrivate() + : m_isActive(false), + m_isRequired(false), + m_stackWidget(new QStackedWidget) +{} DesignMode::DesignMode() - : d(new DesignModePrivate(this)) + : d(new DesignModePrivate) { m_instance = this; + + ICore::addPreCloseListener([]() -> bool { + m_instance->currentEditorChanged(0); + return true; + }); + setObjectName(QLatin1String("DesignMode")); setEnabled(false); setContext(Context(Constants::C_DESIGN_MODE)); @@ -123,8 +94,6 @@ DesignMode::DesignMode() setPriority(Constants::P_MODE_DESIGN); setId(Constants::MODE_DESIGN); - ExtensionSystem::PluginManager::addObject(d->m_coreListener); - connect(EditorManager::instance(), &EditorManager::currentEditorChanged, this, &DesignMode::currentEditorChanged); @@ -134,9 +103,6 @@ DesignMode::DesignMode() DesignMode::~DesignMode() { - ExtensionSystem::PluginManager::removeObject(d->m_coreListener); - delete d->m_coreListener; - qDeleteAll(d->m_editors); delete d; } diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index e851560907..cd9a7aae0a 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -51,7 +51,6 @@ #include <coreplugin/fileutils.h> #include <coreplugin/findplaceholder.h> #include <coreplugin/icore.h> -#include <coreplugin/icorelistener.h> #include <coreplugin/imode.h> #include <coreplugin/infobar.h> #include <coreplugin/iversioncontrol.h> @@ -74,6 +73,7 @@ #include <utils/mimetypes/mimetype.h> #include <utils/qtcassert.h> #include <utils/overridecursor.h> +#include <utils/themehelper.h> #include <QClipboard> #include <QDateTime> @@ -114,26 +114,6 @@ static const char fileSystemCaseSensitivityKey[] = "Core/FileSystemCaseSensitivi static const char scratchBufferKey[] = "_q_emScratchBuffer"; -//===================EditorClosingCoreListener====================== - -namespace Core { -namespace Internal { - -class EditorClosingCoreListener : public ICoreListener -{ -public: - bool editorAboutToClose(IEditor *) { return true; } - bool coreAboutToClose() - { - // Do not ask for files to save. - // MainWindow::closeEvent has already done that. - return EditorManager::closeAllEditors(false); - } -}; - -} // namespace Internal -} // namespace Core - using namespace Core; using namespace Core::Internal; using namespace Utils; @@ -267,8 +247,8 @@ EditorManagerPrivate::EditorManagerPrivate(QObject *parent) : m_closeAllEditorsExceptVisibleAction(new QAction(EditorManager::tr("Close All Except Visible"), this)), m_gotoNextDocHistoryAction(new QAction(EditorManager::tr("Next Open Document in History"), this)), m_gotoPreviousDocHistoryAction(new QAction(EditorManager::tr("Previous Open Document in History"), this)), - m_goBackAction(new QAction(QIcon(QLatin1String(Constants::ICON_PREV)), EditorManager::tr("Go Back"), this)), - m_goForwardAction(new QAction(QIcon(QLatin1String(Constants::ICON_NEXT)), EditorManager::tr("Go Forward"), this)), + m_goBackAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_PREV)), EditorManager::tr("Go Back"), this)), + m_goForwardAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_NEXT)), EditorManager::tr("Go Forward"), this)), m_copyFilePathContextAction(new QAction(EditorManager::tr("Copy Full Path"), this)), m_copyLocationContextAction(new QAction(EditorManager::tr("Copy Path and Line Number"), this)), m_copyFileNameContextAction(new QAction(EditorManager::tr("Copy File Name"), this)), @@ -283,7 +263,6 @@ EditorManagerPrivate::EditorManagerPrivate(QObject *parent) : m_openTerminalAction(new QAction(FileUtils::msgTerminalAction(), this)), m_findInDirectoryAction(new QAction(FileUtils::msgFindInDirectory(), this)), m_windowPopup(0), - m_coreListener(0), m_reloadSetting(IDocument::AlwaysAsk), m_autoSaveEnabled(true), m_autoSaveInterval(5), @@ -296,10 +275,6 @@ EditorManagerPrivate::EditorManagerPrivate(QObject *parent) : EditorManagerPrivate::~EditorManagerPrivate() { if (ICore::instance()) { - if (m_coreListener) { - ExtensionSystem::PluginManager::removeObject(m_coreListener); - delete m_coreListener; - } ExtensionSystem::PluginManager::removeObject(m_openEditorsFactory); delete m_openEditorsFactory; } @@ -541,8 +516,9 @@ void EditorManagerPrivate::init() void EditorManagerPrivate::extensionsInitialized() { - d->m_coreListener = new EditorClosingCoreListener(); - ExtensionSystem::PluginManager::addObject(d->m_coreListener); + // Do not ask for files to save. + // MainWindow::closeEvent has already done that. + ICore::addPreCloseListener([]() -> bool { return EditorManager::closeAllEditors(false); }); } EditorManagerPrivate *EditorManagerPrivate::instance() @@ -2353,12 +2329,10 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask // 2. keep track of the document and all the editors that might remain open for it QSet<IEditor*> acceptedEditors; QMap<IDocument *, QList<IEditor *> > documentMap; - const QList<ICoreListener *> listeners = - ExtensionSystem::PluginManager::getObjects<ICoreListener>(); foreach (IEditor *editor, editorsToClose) { bool editorAccepted = true; - foreach (ICoreListener *listener, listeners) { - if (!listener->editorAboutToClose(editor)) { + foreach (const std::function<bool(IEditor*)> listener, d->m_closeEditorListeners) { + if (!listener(editor)) { editorAccepted = false; closingFailed = true; break; @@ -2628,6 +2602,22 @@ bool EditorManager::openExternalEditor(const QString &fileName, Id editorId) return ok; } +/*! + \fn EditorManager::addCloseEditorListener + + \brief The \c EditorManager::addCloseEditorListener function provides + a hook for plugins to veto on closing editors. + + When an editor requests a close, all listeners are called. If one of these + calls returns \c false, the process is aborted and the event is ignored. + If all calls return \c true, \c EditorManager::editorAboutToClose() + is emitted and the event is accepted. +*/ +void EditorManager::addCloseEditorListener(const std::function<bool (IEditor *)> &listener) +{ + d->m_closeEditorListeners.append(listener); +} + QStringList EditorManager::getOpenFileNames() { QString selectedFilter; diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index b6b97fd35a..c105cccfb4 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -121,6 +121,7 @@ public: OpenEditorFlags flags = NoFlags); static bool openExternalEditor(const QString &fileName, Id editorId); + static void addCloseEditorListener(const std::function<bool(IEditor *)> &listener); static QStringList getOpenFileNames(); diff --git a/src/plugins/coreplugin/editormanager/editormanager_p.h b/src/plugins/coreplugin/editormanager/editormanager_p.h index 9a1b6d6105..d12c59851a 100644 --- a/src/plugins/coreplugin/editormanager/editormanager_p.h +++ b/src/plugins/coreplugin/editormanager/editormanager_p.h @@ -56,7 +56,6 @@ class EditorManager; namespace Internal { -class EditorClosingCoreListener; class MainWindow; class OpenEditorsViewFactory; class OpenEditorsWindow; @@ -245,7 +244,6 @@ private: IEditor *m_contextMenuEditor; OpenEditorsWindow *m_windowPopup; - EditorClosingCoreListener *m_coreListener; QMap<QString, QVariant> m_editorStates; OpenEditorsViewFactory *m_openEditorsFactory; @@ -262,6 +260,7 @@ private: int m_bigFileSizeLimitInMB; QString m_placeholderText; + QList<std::function<bool(IEditor *)>> m_closeEditorListeners; }; } // Internal diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 525a684cdc..479de2ff55 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -45,6 +45,7 @@ #include <coreplugin/findplaceholder.h> #include <utils/qtcassert.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QDebug> @@ -703,11 +704,15 @@ void SplitterOrView::split(Qt::Orientation orientation) view->view()->setCurrentEditor(duplicate); if (orientation == Qt::Horizontal) { - view->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); - otherView->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_RIGHT))); + view->view()->setCloseSplitIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); + otherView->view()->setCloseSplitIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_RIGHT))); } else { - view->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); - otherView->view()->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + view->view()->setCloseSplitIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); + otherView->view()->setCloseSplitIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); } EditorManagerPrivate::activateView(otherView->view()); @@ -795,17 +800,14 @@ void SplitterOrView::unsplit() m_layout->addWidget(m_view); QSplitter *parentSplitter = qobject_cast<QSplitter *>(parentWidget()); if (parentSplitter) { // not the toplevel splitterOrView - if (parentSplitter->orientation() == Qt::Horizontal) { - if (parentSplitter->widget(0) == this) - m_view->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); - else - m_view->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_RIGHT))); - } else { - if (parentSplitter->widget(0) == this) - m_view->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); - else - m_view->setCloseSplitIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); - } + if (parentSplitter->orientation() == Qt::Horizontal) + Utils::ThemeHelper::themedIcon(QLatin1String(parentSplitter->widget(0) == this ? + Constants::ICON_CLOSE_SPLIT_LEFT + : Constants::ICON_CLOSE_SPLIT_RIGHT)); + else + Utils::ThemeHelper::themedIcon(QLatin1String(parentSplitter->widget(0) == this ? + Constants::ICON_CLOSE_SPLIT_TOP + : Constants::ICON_CLOSE_SPLIT_BOTTOM)); } } m_layout->setCurrentWidget(m_view); diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp index 0af71226f7..0c2affe99d 100644 --- a/src/plugins/coreplugin/editortoolbar.cpp +++ b/src/plugins/coreplugin/editortoolbar.cpp @@ -43,6 +43,7 @@ #include <utils/fileutils.h> #include <utils/hostosinfo.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QApplication> #include <QComboBox> @@ -99,13 +100,13 @@ EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q) : m_lockButton(new QToolButton(q)), m_dragHandle(new QToolButton(q)), m_dragHandleMenu(0), - m_goBackAction(new QAction(QIcon(QLatin1String(Constants::ICON_PREV)), EditorManager::tr("Go Back"), parent)), - m_goForwardAction(new QAction(QIcon(QLatin1String(Constants::ICON_NEXT)), EditorManager::tr("Go Forward"), parent)), + m_goBackAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_PREV)), EditorManager::tr("Go Back"), parent)), + m_goForwardAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_NEXT)), EditorManager::tr("Go Forward"), parent)), m_backButton(new QToolButton(q)), m_forwardButton(new QToolButton(q)), m_splitButton(new QToolButton(q)), - m_horizontalSplitAction(new QAction(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL)), EditorManager::tr("Split"), parent)), - m_verticalSplitAction(new QAction(QIcon(QLatin1String(Constants::ICON_SPLIT_VERTICAL)), EditorManager::tr("Split Side by Side"), parent)), + m_horizontalSplitAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL)), EditorManager::tr("Split"), parent)), + m_verticalSplitAction(new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_SPLIT_VERTICAL)), EditorManager::tr("Split Side by Side"), parent)), m_splitNewWindowAction(new QAction(EditorManager::tr("Open in New Window"), parent)), m_closeSplitButton(new QToolButton(q)), m_activeToolBar(0), @@ -152,7 +153,8 @@ EditorToolBar::EditorToolBar(QWidget *parent) : d->m_editorList->setContextMenuPolicy(Qt::CustomContextMenu); d->m_closeEditorButton->setAutoRaise(true); - d->m_closeEditorButton->setIcon(QIcon(QLatin1String(Constants::ICON_BUTTON_CLOSE))); + d->m_closeEditorButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_BUTTON_CLOSE))); d->m_closeEditorButton->setEnabled(false); d->m_closeEditorButton->setProperty("showborder", true); @@ -168,7 +170,8 @@ EditorToolBar::EditorToolBar(QWidget *parent) : d->m_splitNewWindowAction->setIconVisibleInMenu(false); } - d->m_splitButton->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); + d->m_splitButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); d->m_splitButton->setToolTip(tr("Split")); d->m_splitButton->setPopupMode(QToolButton::InstantPopup); d->m_splitButton->setProperty("noArrow", true); @@ -179,7 +182,8 @@ EditorToolBar::EditorToolBar(QWidget *parent) : d->m_splitButton->setMenu(splitMenu); d->m_closeSplitButton->setAutoRaise(true); - d->m_closeSplitButton->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + d->m_closeSplitButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); QHBoxLayout *toplayout = new QHBoxLayout(this); toplayout->setSpacing(0); diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp index 48f8e132fb..5d89a184a2 100644 --- a/src/plugins/coreplugin/fancyactionbar.cpp +++ b/src/plugins/coreplugin/fancyactionbar.cpp @@ -44,6 +44,7 @@ #include <QStyleOption> #include <QMouseEvent> #include <QEvent> +#include <QPixmapCache> #include <QPropertyAnimation> #include <QDebug> @@ -149,19 +150,13 @@ void FancyToolButton::paintEvent(QPaintEvent *event) if (!HostOsInfo::isMacHost() // Mac UIs usually don't hover && m_fader > 0 && isEnabled() && !isDown() && !isChecked()) { painter.save(); - const QColor hoverColor = creatorTheme()->color(Theme::FancyToolButtonHoverColor); - QColor fadedHoverColor = hoverColor; - fadedHoverColor.setAlpha(int(m_fader * hoverColor.alpha())); if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { - QLinearGradient grad(rect().topLeft(), rect().topRight()); - grad.setColorAt(0, Qt::transparent); - grad.setColorAt(0.5, fadedHoverColor); - grad.setColorAt(1, Qt::transparent); - painter.fillRect(rect(), grad); - painter.setPen(QPen(grad, 1.0)); - painter.drawLine(rect().topLeft(), rect().topRight()); - painter.drawLine(rect().bottomLeft(), rect().bottomRight()); + painter.setOpacity(m_fader); + FancyToolButton::hoverOverlay(&painter, rect()); } else { + const QColor hoverColor = creatorTheme()->color(Theme::FancyToolButtonHoverColor); + QColor fadedHoverColor = hoverColor; + fadedHoverColor.setAlpha(int(m_fader * hoverColor.alpha())); painter.fillRect(rect(), fadedHoverColor); } painter.restore(); @@ -175,12 +170,12 @@ void FancyToolButton::paintEvent(QPaintEvent *event) grad.setColorAt(1, Qt::transparent); painter.fillRect(rect(), grad); painter.setPen(QPen(grad, 1.0)); - painter.drawLine(rect().topLeft(), rect().topRight()); - painter.drawLine(rect().topLeft(), rect().topRight()); - painter.drawLine(rect().topLeft() + QPoint(0,1), rect().topRight() + QPoint(0,1)); - painter.drawLine(rect().bottomLeft(), rect().bottomRight()); - painter.drawLine(rect().bottomLeft(), rect().bottomRight()); - painter.drawLine(rect().topLeft() - QPoint(0,1), rect().topRight() - QPoint(0,1)); + const QRectF borderRectF(QRectF(rect()).adjusted(0.5, 0.5, -0.5, -0.5)); + painter.drawLine(borderRectF.topLeft(), borderRectF.topRight()); + painter.drawLine(borderRectF.topLeft(), borderRectF.topRight()); + painter.drawLine(borderRectF.topLeft() + QPointF(0, 1), borderRectF.topRight() + QPointF(0, 1)); + painter.drawLine(borderRectF.bottomLeft(), borderRectF.bottomRight()); + painter.drawLine(borderRectF.bottomLeft(), borderRectF.bottomRight()); } else { painter.fillRect(rect(), selectedColor); } @@ -285,10 +280,11 @@ void FancyActionBar::paintEvent(QPaintEvent *event) QColor light = StyleHelper::sidebarHighlight(); QColor dark = StyleHelper::sidebarShadow(); + const QRectF borderRect = QRectF(rect()).adjusted(0.5, 0.5, -0.5, -0.5); painter.setPen(dark); - painter.drawLine(rect().topLeft(), rect().topRight()); + painter.drawLine(borderRect.topLeft(), borderRect.topRight()); painter.setPen(light); - painter.drawLine(rect().topLeft() + QPoint(1,1), rect().topRight() + QPoint(0,1)); + painter.drawLine(borderRect.topLeft() + QPointF(1, 1), borderRect.topRight() + QPointF(0, 1)); } QSize FancyToolButton::sizeHint() const @@ -315,6 +311,38 @@ QSize FancyToolButton::minimumSizeHint() const return QSize(8, 8); } +void FancyToolButton::hoverOverlay(QPainter *painter, const QRect &spanRect) +{ + const QSize logicalSize = spanRect.size(); + const QString cacheKey = QLatin1String(Q_FUNC_INFO) + QString::number(logicalSize.width()) + + QLatin1Char('x') + QString::number(logicalSize.height()); + QPixmap overlay; + if (!QPixmapCache::find(cacheKey, &overlay)) { + const int dpr = painter->device()->devicePixelRatio(); + overlay = QPixmap(logicalSize * dpr); + overlay.fill(Qt::transparent); + overlay.setDevicePixelRatio(dpr); + + const QColor hoverColor = creatorTheme()->color(Theme::FancyToolButtonHoverColor); + const QRect rect(QPoint(), logicalSize); + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); + + QLinearGradient grad(rect.topLeft(), rect.topRight()); + grad.setColorAt(0, Qt::transparent); + grad.setColorAt(0.5, hoverColor); + grad.setColorAt(1, Qt::transparent); + + QPainter p(&overlay); + p.fillRect(rect, grad); + p.setPen(QPen(grad, 1.0)); + p.drawLine(borderRect.topLeft(), borderRect.topRight()); + p.drawLine(borderRect.bottomLeft(), borderRect.bottomRight()); + + QPixmapCache::insert(cacheKey, overlay); + } + painter->drawPixmap(spanRect.topLeft(), overlay); +} + void FancyToolButton::actionChanged() { // the default action changed in some way, e.g. it might got hidden diff --git a/src/plugins/coreplugin/fancyactionbar.h b/src/plugins/coreplugin/fancyactionbar.h index 15f2052b5d..3d5c3568ba 100644 --- a/src/plugins/coreplugin/fancyactionbar.h +++ b/src/plugins/coreplugin/fancyactionbar.h @@ -58,6 +58,8 @@ public: float fader() { return m_fader; } void setFader(float value) { m_fader = value; update(); } + static void hoverOverlay(QPainter *painter, const QRect &spanRect); + private slots: void actionChanged(); }; diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index 3dbcef902a..f4352bf62e 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -29,6 +29,8 @@ ****************************************************************************/ #include "fancytabwidget.h" +#include "fancyactionbar.h" + #include <utils/hostosinfo.h> #include <utils/stylehelper.h> #include <utils/styledbar.h> @@ -42,6 +44,7 @@ #include <QMouseEvent> #include <QStyleFactory> #include <QPainter> +#include <QPixmapCache> #include <QStackedLayout> #include <QStatusBar> #include <QToolTip> @@ -57,7 +60,7 @@ void FancyTab::fadeIn() { animator.stop(); animator.setDuration(80); - animator.setEndValue(40); + animator.setEndValue(1); animator.start(); } @@ -238,6 +241,53 @@ void FancyTabBar::mousePressEvent(QMouseEvent *e) } } +static void paintSelectedTabBackground(QPainter *painter, const QRect &spanRect) +{ + const int verticalOverlap = 2; // Grows up and down for the overlaps + const int dpr = painter->device()->devicePixelRatio(); + const QString cacheKey = QLatin1String(Q_FUNC_INFO) + QString::number(spanRect.width()) + + QLatin1Char('x') + QString::number(spanRect.height()) + + QLatin1Char('@') + QString::number(dpr); + QPixmap selection; + if (!QPixmapCache::find(cacheKey, &selection)) { + selection = QPixmap(QSize(spanRect.width(), spanRect.height() + 2 * verticalOverlap) * dpr); + selection.fill(Qt::transparent); + selection.setDevicePixelRatio(dpr); + QPainter p(&selection); + p.translate(QPoint(0, verticalOverlap)); + + const QRect rect(QPoint(), spanRect.size()); + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); + + //background + p.save(); + QLinearGradient grad(rect.topLeft(), rect.topRight()); + grad.setColorAt(0, QColor(255, 255, 255, 140)); + grad.setColorAt(1, QColor(255, 255, 255, 210)); + p.fillRect(rect, grad); + p.restore(); + + //shadows + p.setPen(QColor(0, 0, 0, 110)); + p.drawLine(borderRect.topLeft() + QPointF(1, -1), borderRect.topRight() - QPointF(0, 1)); + p.drawLine(borderRect.bottomLeft(), borderRect.bottomRight()); + p.setPen(QColor(0, 0, 0, 40)); + p.drawLine(borderRect.topLeft(), borderRect.bottomLeft()); + + //highlights + p.setPen(QColor(255, 255, 255, 50)); + p.drawLine(borderRect.topLeft() + QPointF(0, -2), borderRect.topRight() - QPointF(0, 2)); + p.drawLine(borderRect.bottomLeft() + QPointF(0, 1), borderRect.bottomRight() + QPointF(0, 1)); + p.setPen(QColor(255, 255, 255, 40)); + p.drawLine(borderRect.topLeft() + QPointF(0, 0), borderRect.topRight()); + p.drawLine(borderRect.topRight() + QPointF(0, 1), borderRect.bottomRight() - QPointF(0, 1)); + p.drawLine(borderRect.bottomLeft() + QPointF(0, -1), borderRect.bottomRight() - QPointF(0, 1)); + + QPixmapCache::insert(cacheKey, selection); + } + painter->drawPixmap(spanRect.topLeft() + QPoint(0, -verticalOverlap), selection); +} + void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const { if (!validIndex(tabIndex)) { @@ -256,29 +306,7 @@ void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const painter->fillRect(rect.adjusted(0, 0, 0, -1), creatorTheme()->color(Theme::BackgroundColorSelected)); } else { - //background - painter->save(); - QLinearGradient grad(rect.topLeft(), rect.topRight()); - grad.setColorAt(0, QColor(255, 255, 255, 140)); - grad.setColorAt(1, QColor(255, 255, 255, 210)); - painter->fillRect(rect.adjusted(0, 0, 0, -1), grad); - painter->restore(); - - //shadows - painter->setPen(QColor(0, 0, 0, 110)); - painter->drawLine(rect.topLeft() + QPoint(1,-1), rect.topRight() - QPoint(0,1)); - painter->drawLine(rect.bottomLeft(), rect.bottomRight()); - painter->setPen(QColor(0, 0, 0, 40)); - painter->drawLine(rect.topLeft(), rect.bottomLeft()); - - //highlights - painter->setPen(QColor(255, 255, 255, 50)); - painter->drawLine(rect.topLeft() + QPoint(0, -2), rect.topRight() - QPoint(0,2)); - painter->drawLine(rect.bottomLeft() + QPoint(0, 1), rect.bottomRight() + QPoint(0,1)); - painter->setPen(QColor(255, 255, 255, 40)); - painter->drawLine(rect.topLeft() + QPoint(0, 0), rect.topRight()); - painter->drawLine(rect.topRight() + QPoint(0, 1), rect.bottomRight() - QPoint(0, 1)); - painter->drawLine(rect.bottomLeft() + QPoint(0,-1), rect.bottomRight()-QPoint(0,1)); + paintSelectedTabBackground(painter, rect); } } @@ -294,22 +322,16 @@ void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const painter->setPen(selected ? QColor(255, 255, 255, 160) : QColor(0, 0, 0, 110)); const int textFlags = Qt::AlignCenter | (drawIcon ? Qt::AlignBottom : Qt::AlignVCenter) | Qt::TextWordWrap; - if (!HostOsInfo::isMacHost() && !selected && enabled) { + const float fader = m_tabs[tabIndex]->fader(); + if (fader > 0 && !HostOsInfo::isMacHost() && !selected && enabled) { painter->save(); - int fader = int(m_tabs[tabIndex]->fader()); if (creatorTheme()->widgetStyle() == Theme::StyleFlat) { QColor c = creatorTheme()->color(Theme::BackgroundColorHover); - c.setAlpha(int(255 * fader/40.0)); // FIXME: hardcoded end value 40 + c.setAlpha(255 * fader); painter->fillRect(rect, c); } else { - QLinearGradient grad(rect.topLeft(), rect.topRight()); - grad.setColorAt(0, Qt::transparent); - grad.setColorAt(0.5, QColor(255, 255, 255, fader)); - grad.setColorAt(1, Qt::transparent); - painter->fillRect(rect, grad); - painter->setPen(QPen(grad, 1.0)); - painter->drawLine(rect.topLeft(), rect.topRight()); - painter->drawLine(rect.bottomLeft(), rect.bottomRight()); + painter->setOpacity(fader); + FancyToolButton::hoverOverlay(painter, rect); } painter->restore(); } @@ -490,13 +512,14 @@ void FancyTabWidget::paintEvent(QPaintEvent *event) QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0); rect = style()->visualRect(layoutDirection(), geometry(), rect); + const QRectF boderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); StyleHelper::verticalGradient(&painter, rect, rect); painter.setPen(StyleHelper::borderColor()); - painter.drawLine(rect.topRight(), rect.bottomRight()); + painter.drawLine(boderRect.topRight(), boderRect.bottomRight()); QColor light = StyleHelper::sidebarHighlight(); painter.setPen(light); - painter.drawLine(rect.bottomLeft(), rect.bottomRight()); + painter.drawLine(boderRect.bottomLeft(), boderRect.bottomRight()); } } diff --git a/src/plugins/coreplugin/find/find.qrc b/src/plugins/coreplugin/find/find.qrc index 0c4e128101..e1de185dac 100644 --- a/src/plugins/coreplugin/find/find.qrc +++ b/src/plugins/coreplugin/find/find.qrc @@ -4,7 +4,9 @@ <file>images/wholewords.png</file> <file>images/regexp.png</file> <file>images/expand.png</file> + <file>images/expand@2x.png</file> <file>images/wrapindicator.png</file> + <file>images/wrapindicator@2x.png</file> <file>images/preservecase.png</file> </qresource> </RCC> diff --git a/src/plugins/coreplugin/find/findtoolbar.cpp b/src/plugins/coreplugin/find/findtoolbar.cpp index b803ae0aba..2314509a46 100644 --- a/src/plugins/coreplugin/find/findtoolbar.cpp +++ b/src/plugins/coreplugin/find/findtoolbar.cpp @@ -47,6 +47,7 @@ #include <utils/qtcassert.h> #include <utils/stylehelper.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QDebug> #include <QSettings> @@ -672,8 +673,10 @@ void FindToolBar::updateIcons() bool regexp = effectiveFlags & FindRegularExpression; bool preserveCase = effectiveFlags & FindPreserveCase; if (!casesensitive && !wholewords && !regexp && !preserveCase) { - m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, - Utils::StyleHelper::dpiSpecificImageFile(QLatin1Literal(Constants::ICON_MAGNIFIER))); + const QPixmap pixmap = Utils::ThemeHelper::recoloredPixmap( + QLatin1String(Constants::ICON_MAGNIFIER), + Utils::ThemeHelper::inputfieldIconColor()); + m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap); } else { m_ui.findEdit->setButtonPixmap(Utils::FancyLineEdit::Left, IFindFilter::pixmapForFindFlags(effectiveFlags)); @@ -962,8 +965,19 @@ void FindToolBar::setBackward(bool backward) void FindToolBar::setLightColoredIcon(bool lightColored) { - m_ui.close->setIcon(lightColored ? QIcon(QLatin1String(Constants::ICON_DARK_CLOSE)) - : QIcon(QLatin1String(Constants::ICON_BUTTON_CLOSE))); + if (lightColored) { + m_ui.findNextButton->setIcon(QIcon()); + m_ui.findNextButton->setArrowType(Qt::RightArrow); + m_ui.findPreviousButton->setIcon(QIcon()); + m_ui.findPreviousButton->setArrowType(Qt::LeftArrow); + m_ui.close->setIcon(QIcon(QLatin1String(Constants::ICON_DARK_CLOSE))); + } else { + m_ui.findNextButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_NEXT))); + m_ui.findNextButton->setArrowType(Qt::NoArrow); + m_ui.findPreviousButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_PREV))); + m_ui.findPreviousButton->setArrowType(Qt::NoArrow); + m_ui.close->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_BUTTON_CLOSE))); + } } OptionsPopup::OptionsPopup(QWidget *parent) diff --git a/src/plugins/coreplugin/find/findwidget.ui b/src/plugins/coreplugin/find/findwidget.ui index 453928438f..f283bece6d 100644 --- a/src/plugins/coreplugin/find/findwidget.ui +++ b/src/plugins/coreplugin/find/findwidget.ui @@ -68,21 +68,10 @@ <number>0</number> </property> <item> - <widget class="QToolButton" name="findPreviousButton"> - <property name="arrowType"> - <enum>Qt::LeftArrow</enum> - </property> - </widget> + <widget class="QToolButton" name="findPreviousButton"/> </item> <item> - <widget class="QToolButton" name="findNextButton"> - <property name="font"> - <font/> - </property> - <property name="arrowType"> - <enum>Qt::RightArrow</enum> - </property> - </widget> + <widget class="QToolButton" name="findNextButton"/> </item> <item> <spacer name="horizontalSpacer"> @@ -98,11 +87,7 @@ </spacer> </item> <item> - <widget class="QToolButton" name="close"> - <property name="text"> - <string>...</string> - </property> - </widget> + <widget class="QToolButton" name="close"/> </item> </layout> </widget> diff --git a/src/plugins/coreplugin/find/ifindsupport.cpp b/src/plugins/coreplugin/find/ifindsupport.cpp index 87665ff4d0..8aa29995c8 100644 --- a/src/plugins/coreplugin/find/ifindsupport.cpp +++ b/src/plugins/coreplugin/find/ifindsupport.cpp @@ -31,6 +31,7 @@ #include "ifindsupport.h" #include <utils/fadingindicator.h> +#include <utils/stylehelper.h> using namespace Core; @@ -59,5 +60,6 @@ int IFindSupport::replaceAll(const QString &before, const QString &after, FindFl void IFindSupport::showWrapIndicator(QWidget *parent) { - Utils::FadingIndicator::showPixmap(parent, QLatin1String(":/find/images/wrapindicator.png")); + Utils::FadingIndicator::showPixmap(parent, Utils::StyleHelper::dpiSpecificImageFile( + QLatin1String(":/find/images/wrapindicator.png"))); } diff --git a/src/plugins/coreplugin/find/images/all.png b/src/plugins/coreplugin/find/images/all.png Binary files differdeleted file mode 100644 index f5c1c1f767..0000000000 --- a/src/plugins/coreplugin/find/images/all.png +++ /dev/null diff --git a/src/plugins/coreplugin/find/images/expand.png b/src/plugins/coreplugin/find/images/expand.png Binary files differindex 48fcb9b703..3ad2592c9b 100644 --- a/src/plugins/coreplugin/find/images/expand.png +++ b/src/plugins/coreplugin/find/images/expand.png diff --git a/src/plugins/coreplugin/find/images/expand@2x.png b/src/plugins/coreplugin/find/images/expand@2x.png Binary files differnew file mode 100644 index 0000000000..01f02b7afe --- /dev/null +++ b/src/plugins/coreplugin/find/images/expand@2x.png diff --git a/src/plugins/coreplugin/find/images/next.png b/src/plugins/coreplugin/find/images/next.png Binary files differdeleted file mode 100644 index 1844929119..0000000000 --- a/src/plugins/coreplugin/find/images/next.png +++ /dev/null diff --git a/src/plugins/coreplugin/find/images/previous.png b/src/plugins/coreplugin/find/images/previous.png Binary files differdeleted file mode 100644 index 4fe50af9a8..0000000000 --- a/src/plugins/coreplugin/find/images/previous.png +++ /dev/null diff --git a/src/plugins/coreplugin/find/images/wrapindicator.png b/src/plugins/coreplugin/find/images/wrapindicator.png Binary files differindex a4f8ddf417..dcca1cee66 100644 --- a/src/plugins/coreplugin/find/images/wrapindicator.png +++ b/src/plugins/coreplugin/find/images/wrapindicator.png diff --git a/src/plugins/coreplugin/find/images/wrapindicator@2x.png b/src/plugins/coreplugin/find/images/wrapindicator@2x.png Binary files differnew file mode 100644 index 0000000000..2869ccbd1b --- /dev/null +++ b/src/plugins/coreplugin/find/images/wrapindicator@2x.png diff --git a/src/plugins/coreplugin/find/searchresultwindow.cpp b/src/plugins/coreplugin/find/searchresultwindow.cpp index 3b73bd83b6..a283dfee0c 100644 --- a/src/plugins/coreplugin/find/searchresultwindow.cpp +++ b/src/plugins/coreplugin/find/searchresultwindow.cpp @@ -39,6 +39,7 @@ #include <coreplugin/icontext.h> #include <utils/qtcassert.h> #include <utils/styledbar.h> +#include <utils/themehelper.h> #include <QAction> #include <QComboBox> @@ -141,7 +142,7 @@ namespace Internal { m_expandCollapseButton->setAutoRaise(true); m_expandCollapseAction->setCheckable(true); - m_expandCollapseAction->setIcon(QIcon(QLatin1String(":/find/images/expand.png"))); + m_expandCollapseAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/find/images/expand.png"))); Command *cmd = ActionManager::registerAction(m_expandCollapseAction, "Find.ExpandAll"); cmd->setAttribute(Command::CA_UpdateText); m_expandCollapseButton->setDefaultAction(cmd->action()); diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index c2d1826140..070f384548 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -564,6 +564,23 @@ void ICore::openFiles(const QStringList &arguments, ICore::OpenFilesFlags flags) m_mainwindow->openFiles(arguments, flags); } + +/*! + \fn ICore::addCloseCoreListener + + \brief The \c ICore::addCloseCoreListener function provides a hook for plugins + to veto on closing the application. + + When the application window requests a close, all listeners are called. + If one if these calls returns \c false, the process is aborted and the + event is ignored. If all calls return \c true, \c ICore::coreAboutToClose() + is emitted and the event is accepted or performed.. +*/ +void ICore::addPreCloseListener(const std::function<bool ()> &listener) +{ + m_mainwindow->addPreCloseListener(listener); +} + void ICore::saveSettings() { emit m_instance->saveSettingsRequested(); diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index f5d3ddc705..caa13ed670 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -37,6 +37,8 @@ #include <QObject> #include <QSettings> +#include <functional> + QT_BEGIN_NAMESPACE class QPrinter; class QStatusBar; @@ -132,6 +134,8 @@ public: }; static void openFiles(const QStringList &fileNames, OpenFilesFlags flags = None); + static void addPreCloseListener(const std::function<bool()> &listener); + public slots: static void saveSettings(); diff --git a/src/plugins/coreplugin/icorelistener.cpp b/src/plugins/coreplugin/icorelistener.cpp deleted file mode 100644 index 6fc5e9e624..0000000000 --- a/src/plugins/coreplugin/icorelistener.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms and -** conditions see http://www.qt.io/terms-conditions. For further information -** use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -****************************************************************************/ - -#include "icorelistener.h" - -/*! - \class Core::ICoreListener - - \brief The ICoreListener class provides a hook for plugins to veto on - certain events emitted from the core plugin. - - Implement this interface to prevent certain events from occurring. For - example, to prevent the closing of the whole application - or to prevent the closing of an editor window under certain conditions. - - For example, if the application window requests a close, - \c ICoreListener::coreAboutToClose() is called (in arbitrary order) on all - registered objects implementing this interface. If one if these calls - returns \c false, the process is aborted and the event is ignored. If all - calls return \c true, the corresponding signal is emitted and the event is - accepted or performed. - - Guidelines for implementing the class: - \list - \li Return \c false from the implemented function if you want to prevent - the event. - \li Add your implementing object to the plugin managers objects: - \c{ExtensionSystem::PluginManager::instance()->addObject(yourImplementingObject)} - \li Do not forget to remove the object again at deconstruction - (for example, in the destructor of your plugin). - \endlist -*/ diff --git a/src/plugins/coreplugin/images/arrowdown.png b/src/plugins/coreplugin/images/arrowdown.png Binary files differindex f94254fa26..fff77a48e6 100644 --- a/src/plugins/coreplugin/images/arrowdown.png +++ b/src/plugins/coreplugin/images/arrowdown.png diff --git a/src/plugins/coreplugin/images/arrowdown@2x.png b/src/plugins/coreplugin/images/arrowdown@2x.png Binary files differindex 17fdf05941..9e4873fa0b 100644 --- a/src/plugins/coreplugin/images/arrowdown@2x.png +++ b/src/plugins/coreplugin/images/arrowdown@2x.png diff --git a/src/plugins/coreplugin/images/arrowup.png b/src/plugins/coreplugin/images/arrowup.png Binary files differindex 14aa28454f..c1058ce1ee 100644 --- a/src/plugins/coreplugin/images/arrowup.png +++ b/src/plugins/coreplugin/images/arrowup.png diff --git a/src/plugins/coreplugin/images/arrowup@2x.png b/src/plugins/coreplugin/images/arrowup@2x.png Binary files differindex 46387753cc..a382645265 100644 --- a/src/plugins/coreplugin/images/arrowup@2x.png +++ b/src/plugins/coreplugin/images/arrowup@2x.png diff --git a/src/plugins/coreplugin/images/button_close.png b/src/plugins/coreplugin/images/button_close.png Binary files differindex 8a36ba481d..dfe3144d14 100644 --- a/src/plugins/coreplugin/images/button_close.png +++ b/src/plugins/coreplugin/images/button_close.png diff --git a/src/plugins/coreplugin/images/button_close@2x.png b/src/plugins/coreplugin/images/button_close@2x.png Binary files differindex ddc0550a6c..3e2f1a706a 100644 --- a/src/plugins/coreplugin/images/button_close@2x.png +++ b/src/plugins/coreplugin/images/button_close@2x.png diff --git a/src/plugins/coreplugin/images/clean_pane_small.png b/src/plugins/coreplugin/images/clean_pane_small.png Binary files differindex 341e23861a..c75262d64a 100644 --- a/src/plugins/coreplugin/images/clean_pane_small.png +++ b/src/plugins/coreplugin/images/clean_pane_small.png diff --git a/src/plugins/coreplugin/images/clean_pane_small@2x.png b/src/plugins/coreplugin/images/clean_pane_small@2x.png Binary files differnew file mode 100644 index 0000000000..b2ea1226ab --- /dev/null +++ b/src/plugins/coreplugin/images/clean_pane_small@2x.png diff --git a/src/plugins/coreplugin/images/continue_overlay_small.png b/src/plugins/coreplugin/images/continue_overlay_small.png Binary files differnew file mode 100644 index 0000000000..36612491d0 --- /dev/null +++ b/src/plugins/coreplugin/images/continue_overlay_small.png diff --git a/src/plugins/coreplugin/images/continue_overlay_small@2x.png b/src/plugins/coreplugin/images/continue_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..8fe9c7f679 --- /dev/null +++ b/src/plugins/coreplugin/images/continue_overlay_small@2x.png diff --git a/src/plugins/coreplugin/images/dark_magnifier.png b/src/plugins/coreplugin/images/dark_magnifier.png Binary files differdeleted file mode 100644 index 322a542a0e..0000000000 --- a/src/plugins/coreplugin/images/dark_magnifier.png +++ /dev/null diff --git a/src/plugins/coreplugin/images/dark_magnifier@2x.png b/src/plugins/coreplugin/images/dark_magnifier@2x.png Binary files differdeleted file mode 100644 index ed82c37dd0..0000000000 --- a/src/plugins/coreplugin/images/dark_magnifier@2x.png +++ /dev/null diff --git a/src/plugins/coreplugin/images/debugger_overlay_small.png b/src/plugins/coreplugin/images/debugger_overlay_small.png Binary files differnew file mode 100644 index 0000000000..c4a156e444 --- /dev/null +++ b/src/plugins/coreplugin/images/debugger_overlay_small.png diff --git a/src/plugins/coreplugin/images/debugger_overlay_small@2x.png b/src/plugins/coreplugin/images/debugger_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..56fc623483 --- /dev/null +++ b/src/plugins/coreplugin/images/debugger_overlay_small@2x.png diff --git a/src/plugins/coreplugin/images/editclear.png b/src/plugins/coreplugin/images/editclear.png Binary files differindex e8aa21a2a4..7a6fcb86ac 100644 --- a/src/plugins/coreplugin/images/editclear.png +++ b/src/plugins/coreplugin/images/editclear.png diff --git a/src/plugins/coreplugin/images/editclear@2x.png b/src/plugins/coreplugin/images/editclear@2x.png Binary files differindex b4f1730c24..5279b6d707 100644 --- a/src/plugins/coreplugin/images/editclear@2x.png +++ b/src/plugins/coreplugin/images/editclear@2x.png diff --git a/src/plugins/coreplugin/images/error.png b/src/plugins/coreplugin/images/error.png Binary files differindex 8f9f3bb161..b1537b886f 100644 --- a/src/plugins/coreplugin/images/error.png +++ b/src/plugins/coreplugin/images/error.png diff --git a/src/plugins/coreplugin/images/error@2x.png b/src/plugins/coreplugin/images/error@2x.png Binary files differindex 464072347b..76ec6a5f47 100644 --- a/src/plugins/coreplugin/images/error@2x.png +++ b/src/plugins/coreplugin/images/error@2x.png diff --git a/src/plugins/coreplugin/images/extension.png b/src/plugins/coreplugin/images/extension.png Binary files differindex 54494460d8..57d4825486 100644 --- a/src/plugins/coreplugin/images/extension.png +++ b/src/plugins/coreplugin/images/extension.png diff --git a/src/plugins/coreplugin/images/extension@2x.png b/src/plugins/coreplugin/images/extension@2x.png Binary files differindex 0d5c1be575..e90faa2ac0 100644 --- a/src/plugins/coreplugin/images/extension@2x.png +++ b/src/plugins/coreplugin/images/extension@2x.png diff --git a/src/plugins/coreplugin/images/filtericon.png b/src/plugins/coreplugin/images/filtericon.png Binary files differindex 456466a727..0ced0c1ebe 100644 --- a/src/plugins/coreplugin/images/filtericon.png +++ b/src/plugins/coreplugin/images/filtericon.png diff --git a/src/plugins/coreplugin/images/filtericon@2x.png b/src/plugins/coreplugin/images/filtericon@2x.png Binary files differindex 80dcb27985..caa4c03081 100644 --- a/src/plugins/coreplugin/images/filtericon@2x.png +++ b/src/plugins/coreplugin/images/filtericon@2x.png diff --git a/src/plugins/coreplugin/images/info.png b/src/plugins/coreplugin/images/info.png Binary files differindex 4fcbe4068e..76cc0664c3 100644 --- a/src/plugins/coreplugin/images/info.png +++ b/src/plugins/coreplugin/images/info.png diff --git a/src/plugins/coreplugin/images/info@2x.png b/src/plugins/coreplugin/images/info@2x.png Binary files differindex 816f4d75a6..d8f7b03ef8 100644 --- a/src/plugins/coreplugin/images/info@2x.png +++ b/src/plugins/coreplugin/images/info@2x.png diff --git a/src/plugins/coreplugin/images/interrupt_overlay_small.png b/src/plugins/coreplugin/images/interrupt_overlay_small.png Binary files differnew file mode 100644 index 0000000000..e61b75384a --- /dev/null +++ b/src/plugins/coreplugin/images/interrupt_overlay_small.png diff --git a/src/plugins/coreplugin/images/interrupt_overlay_small@2x.png b/src/plugins/coreplugin/images/interrupt_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..2d686964bf --- /dev/null +++ b/src/plugins/coreplugin/images/interrupt_overlay_small@2x.png diff --git a/src/plugins/coreplugin/images/linkicon.png b/src/plugins/coreplugin/images/linkicon.png Binary files differindex e22ad7ffc0..b205b3eaf1 100644 --- a/src/plugins/coreplugin/images/linkicon.png +++ b/src/plugins/coreplugin/images/linkicon.png diff --git a/src/plugins/coreplugin/images/linkicon@2x.png b/src/plugins/coreplugin/images/linkicon@2x.png Binary files differindex 9ade2143dd..971985470a 100644 --- a/src/plugins/coreplugin/images/linkicon@2x.png +++ b/src/plugins/coreplugin/images/linkicon@2x.png diff --git a/src/plugins/coreplugin/images/magnifier.png b/src/plugins/coreplugin/images/magnifier.png Binary files differindex 0e652c945e..ba945dd6f1 100644 --- a/src/plugins/coreplugin/images/magnifier.png +++ b/src/plugins/coreplugin/images/magnifier.png diff --git a/src/plugins/coreplugin/images/magnifier@2x.png b/src/plugins/coreplugin/images/magnifier@2x.png Binary files differindex 384cb7927d..304dd5427d 100644 --- a/src/plugins/coreplugin/images/magnifier@2x.png +++ b/src/plugins/coreplugin/images/magnifier@2x.png diff --git a/src/plugins/coreplugin/images/minus.png b/src/plugins/coreplugin/images/minus.png Binary files differindex 4466844662..0a16b38681 100644 --- a/src/plugins/coreplugin/images/minus.png +++ b/src/plugins/coreplugin/images/minus.png diff --git a/src/plugins/coreplugin/images/minus@2x.png b/src/plugins/coreplugin/images/minus@2x.png Binary files differnew file mode 100644 index 0000000000..c21397be3c --- /dev/null +++ b/src/plugins/coreplugin/images/minus@2x.png diff --git a/src/plugins/coreplugin/images/next.png b/src/plugins/coreplugin/images/next.png Binary files differindex 7700d6fce6..5ab267510e 100644 --- a/src/plugins/coreplugin/images/next.png +++ b/src/plugins/coreplugin/images/next.png diff --git a/src/plugins/coreplugin/images/next@2x.png b/src/plugins/coreplugin/images/next@2x.png Binary files differnew file mode 100644 index 0000000000..47af647875 --- /dev/null +++ b/src/plugins/coreplugin/images/next@2x.png diff --git a/src/plugins/coreplugin/images/plus.png b/src/plugins/coreplugin/images/plus.png Binary files differindex be8c961df1..795229ec6c 100644 --- a/src/plugins/coreplugin/images/plus.png +++ b/src/plugins/coreplugin/images/plus.png diff --git a/src/plugins/coreplugin/images/plus@2x.png b/src/plugins/coreplugin/images/plus@2x.png Binary files differnew file mode 100644 index 0000000000..f276dd94ff --- /dev/null +++ b/src/plugins/coreplugin/images/plus@2x.png diff --git a/src/plugins/coreplugin/images/prev.png b/src/plugins/coreplugin/images/prev.png Binary files differindex 99dc8733c7..c9bd18a7de 100644 --- a/src/plugins/coreplugin/images/prev.png +++ b/src/plugins/coreplugin/images/prev.png diff --git a/src/plugins/coreplugin/images/prev@2x.png b/src/plugins/coreplugin/images/prev@2x.png Binary files differnew file mode 100644 index 0000000000..6c5114bc84 --- /dev/null +++ b/src/plugins/coreplugin/images/prev@2x.png diff --git a/src/plugins/coreplugin/images/run_overlay_small.png b/src/plugins/coreplugin/images/run_overlay_small.png Binary files differnew file mode 100644 index 0000000000..db22edd2fb --- /dev/null +++ b/src/plugins/coreplugin/images/run_overlay_small.png diff --git a/src/plugins/coreplugin/images/run_overlay_small@2x.png b/src/plugins/coreplugin/images/run_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..a5ec8416b6 --- /dev/null +++ b/src/plugins/coreplugin/images/run_overlay_small@2x.png diff --git a/src/plugins/coreplugin/images/sidebaricon.png b/src/plugins/coreplugin/images/sidebaricon.png Binary files differindex 8a1392748b..413bed7c49 100644 --- a/src/plugins/coreplugin/images/sidebaricon.png +++ b/src/plugins/coreplugin/images/sidebaricon.png diff --git a/src/plugins/coreplugin/images/sidebaricon@2x.png b/src/plugins/coreplugin/images/sidebaricon@2x.png Binary files differnew file mode 100644 index 0000000000..81937400b4 --- /dev/null +++ b/src/plugins/coreplugin/images/sidebaricon@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_closebottom.png b/src/plugins/coreplugin/images/splitbutton_closebottom.png Binary files differindex b47b31d8d0..f791573900 100644 --- a/src/plugins/coreplugin/images/splitbutton_closebottom.png +++ b/src/plugins/coreplugin/images/splitbutton_closebottom.png diff --git a/src/plugins/coreplugin/images/splitbutton_closebottom@2x.png b/src/plugins/coreplugin/images/splitbutton_closebottom@2x.png Binary files differindex 44f465e23f..e0279be494 100644 --- a/src/plugins/coreplugin/images/splitbutton_closebottom@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_closebottom@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_closeleft.png b/src/plugins/coreplugin/images/splitbutton_closeleft.png Binary files differindex d5fab50194..5360a5747e 100644 --- a/src/plugins/coreplugin/images/splitbutton_closeleft.png +++ b/src/plugins/coreplugin/images/splitbutton_closeleft.png diff --git a/src/plugins/coreplugin/images/splitbutton_closeleft@2x.png b/src/plugins/coreplugin/images/splitbutton_closeleft@2x.png Binary files differindex 37f51fa6ef..8ed36bfe6a 100644 --- a/src/plugins/coreplugin/images/splitbutton_closeleft@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_closeleft@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_closeright.png b/src/plugins/coreplugin/images/splitbutton_closeright.png Binary files differindex 8221ab2023..5bf79bea0b 100644 --- a/src/plugins/coreplugin/images/splitbutton_closeright.png +++ b/src/plugins/coreplugin/images/splitbutton_closeright.png diff --git a/src/plugins/coreplugin/images/splitbutton_closeright@2x.png b/src/plugins/coreplugin/images/splitbutton_closeright@2x.png Binary files differindex 84856ea819..4ec186c3f5 100644 --- a/src/plugins/coreplugin/images/splitbutton_closeright@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_closeright@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_closetop.png b/src/plugins/coreplugin/images/splitbutton_closetop.png Binary files differindex b6004bf1f6..4f58e4eae9 100644 --- a/src/plugins/coreplugin/images/splitbutton_closetop.png +++ b/src/plugins/coreplugin/images/splitbutton_closetop.png diff --git a/src/plugins/coreplugin/images/splitbutton_closetop@2x.png b/src/plugins/coreplugin/images/splitbutton_closetop@2x.png Binary files differindex 99aaa56570..0ca02834ed 100644 --- a/src/plugins/coreplugin/images/splitbutton_closetop@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_closetop@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_horizontal.png b/src/plugins/coreplugin/images/splitbutton_horizontal.png Binary files differindex 7b945ac281..2a8f953b8b 100644 --- a/src/plugins/coreplugin/images/splitbutton_horizontal.png +++ b/src/plugins/coreplugin/images/splitbutton_horizontal.png diff --git a/src/plugins/coreplugin/images/splitbutton_horizontal@2x.png b/src/plugins/coreplugin/images/splitbutton_horizontal@2x.png Binary files differindex 63911b6319..dc31e40019 100644 --- a/src/plugins/coreplugin/images/splitbutton_horizontal@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_horizontal@2x.png diff --git a/src/plugins/coreplugin/images/splitbutton_vertical.png b/src/plugins/coreplugin/images/splitbutton_vertical.png Binary files differindex 72abc914cf..0e8b98b3d7 100644 --- a/src/plugins/coreplugin/images/splitbutton_vertical.png +++ b/src/plugins/coreplugin/images/splitbutton_vertical.png diff --git a/src/plugins/coreplugin/images/splitbutton_vertical@2x.png b/src/plugins/coreplugin/images/splitbutton_vertical@2x.png Binary files differindex 87bac3879d..2a36833d5e 100644 --- a/src/plugins/coreplugin/images/splitbutton_vertical@2x.png +++ b/src/plugins/coreplugin/images/splitbutton_vertical@2x.png diff --git a/src/plugins/coreplugin/images/stop_overlay_small.png b/src/plugins/coreplugin/images/stop_overlay_small.png Binary files differnew file mode 100644 index 0000000000..8350ba9eec --- /dev/null +++ b/src/plugins/coreplugin/images/stop_overlay_small.png diff --git a/src/plugins/coreplugin/images/stop_overlay_small@2x.png b/src/plugins/coreplugin/images/stop_overlay_small@2x.png Binary files differnew file mode 100644 index 0000000000..f0fb92f670 --- /dev/null +++ b/src/plugins/coreplugin/images/stop_overlay_small@2x.png diff --git a/src/plugins/coreplugin/images/warning.png b/src/plugins/coreplugin/images/warning.png Binary files differindex 74e67dbae8..da6905bf9a 100644 --- a/src/plugins/coreplugin/images/warning.png +++ b/src/plugins/coreplugin/images/warning.png diff --git a/src/plugins/coreplugin/images/warning@2x.png b/src/plugins/coreplugin/images/warning@2x.png Binary files differindex b362e6c555..c3d9024c9b 100644 --- a/src/plugins/coreplugin/images/warning@2x.png +++ b/src/plugins/coreplugin/images/warning@2x.png diff --git a/src/plugins/coreplugin/images/zoom.png b/src/plugins/coreplugin/images/zoom.png Binary files differnew file mode 100644 index 0000000000..a3e9dd0b6b --- /dev/null +++ b/src/plugins/coreplugin/images/zoom.png diff --git a/src/plugins/coreplugin/images/zoom@2x.png b/src/plugins/coreplugin/images/zoom@2x.png Binary files differnew file mode 100644 index 0000000000..96976de58b --- /dev/null +++ b/src/plugins/coreplugin/images/zoom@2x.png diff --git a/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp b/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp index 146a4d9824..73c9c8bb97 100644 --- a/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp +++ b/src/plugins/coreplugin/locator/locatorfiltersfilter.cpp @@ -34,6 +34,7 @@ #include <coreplugin/coreconstants.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> using namespace Core; using namespace Core::Internal; @@ -44,7 +45,7 @@ LocatorFiltersFilter::LocatorFiltersFilter(Locator *plugin, LocatorWidget *locatorWidget): m_plugin(plugin), m_locatorWidget(locatorWidget), - m_icon(QIcon(QLatin1String(Constants::ICON_NEXT))) + m_icon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_NEXT))) { setId("FiltersFilter"); setDisplayName(tr("Available filters")); diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp index b71d301941..61dd506ace 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.cpp +++ b/src/plugins/coreplugin/locator/locatorwidget.cpp @@ -47,6 +47,7 @@ #include <utils/qtcassert.h> #include <utils/runextensions.h> #include <utils/stylehelper.h> +#include <utils/themehelper.h> #include <QColor> #include <QFileInfo> @@ -252,9 +253,11 @@ LocatorWidget::LocatorWidget(Locator *qop) : layout->addWidget(m_fileLineEdit); setWindowIcon(QIcon(QLatin1String(":/locator/images/locator.png"))); - const QPixmap image = Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(Constants::ICON_MAGNIFIER)); + const QPixmap pixmap = Utils::ThemeHelper::recoloredPixmap( + QLatin1String(Constants::ICON_MAGNIFIER), + Utils::ThemeHelper::inputfieldIconColor()); m_fileLineEdit->setFiltering(true); - m_fileLineEdit->setButtonPixmap(Utils::FancyLineEdit::Left, image); + m_fileLineEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap); m_fileLineEdit->setButtonToolTip(Utils::FancyLineEdit::Left, tr("Options")); m_fileLineEdit->setFocusPolicy(Qt::ClickFocus); m_fileLineEdit->setButtonVisible(Utils::FancyLineEdit::Left, true); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 2a509b1ff0..5029d78a6c 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -69,7 +69,6 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager_p.h> #include <coreplugin/editormanager/ieditor.h> -#include <coreplugin/icorelistener.h> #include <coreplugin/inavigationwidgetfactory.h> #include <coreplugin/progressmanager/progressmanager_p.h> #include <coreplugin/progressmanager/progressview.h> @@ -82,6 +81,7 @@ #include <utils/qtcassert.h> #include <utils/stylehelper.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <utils/stringutils.h> #include <QApplication> @@ -249,6 +249,11 @@ void MainWindow::appendAboutInformation(const QString &line) m_aboutInformation.append(line); } +void MainWindow::addPreCloseListener(const std::function<bool ()> &listener) +{ + m_preCloseListeners.append(listener); +} + MainWindow::~MainWindow() { // explicitly delete window support, because that calls methods from ICore that call methods @@ -370,10 +375,8 @@ void MainWindow::closeEvent(QCloseEvent *event) return; } - const QList<ICoreListener *> listeners = - PluginManager::getObjects<ICoreListener>(); - foreach (ICoreListener *listener, listeners) { - if (!listener->coreAboutToClose()) { + foreach (const std::function<bool()> &listener, m_preCloseListeners) { + if (!listener()) { event->ignore(); return; } @@ -688,7 +691,7 @@ void MainWindow::registerDefaultActions() } // Show Sidebar Action - m_toggleSideBarAction = new QAction(QIcon(QLatin1String(Constants::ICON_TOGGLE_SIDEBAR)), + m_toggleSideBarAction = new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_TOGGLE_SIDEBAR)), QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR), this); m_toggleSideBarAction->setCheckable(true); diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 6db2c82c50..c6791177a1 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -40,6 +40,8 @@ #include <QMap> #include <QColor> +#include <functional> + QT_BEGIN_NAMESPACE class QSettings; class QPrinter; @@ -113,6 +115,8 @@ public: QStringList additionalAboutInformation() const; void appendAboutInformation(const QString &line); + void addPreCloseListener(const std::function<bool()> &listener); + signals: void newItemDialogRunningChanged(); @@ -201,6 +205,7 @@ private: QToolButton *m_toggleSideBarButton; QColor m_overrideColor; + QList<std::function<bool()>> m_preCloseListeners; }; } // namespace Internal diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index ab76a278f7..cfd76033f2 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -40,6 +40,7 @@ #include <utils/fancymainwindow.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QApplication> #include <QComboBox> @@ -138,7 +139,7 @@ public: ManhattanStylePrivate::ManhattanStylePrivate() : lineeditImage(StyleHelper::dpiSpecificImageFile(QStringLiteral(":/core/images/inputfield.png"))), lineeditImage_disabled(StyleHelper::dpiSpecificImageFile(QStringLiteral(":/core/images/inputfield_disabled.png"))), - extButtonPixmap(QLatin1String(":/core/images/extension.png")), + extButtonPixmap(ThemeHelper::themedIconPixmap(QLatin1String(":/core/images/extension.png"))), closeButtonPixmap(QLatin1String(Core::Constants::ICON_CLOSE_BUTTON)) { } @@ -493,9 +494,10 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption QColor shade = option->palette.base().color(); shade.setHsv(shade.hue(), shade.saturation(), 255 - shade.value(), 40); painter->fillRect(rect, shade); - painter->drawLine(rect.topLeft() + QPoint(1, 0), rect.topRight() - QPoint(1, 0)); - painter->drawLine(rect.topLeft(), rect.bottomLeft()); - painter->drawLine(rect.topRight(), rect.bottomRight()); + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); + painter->drawLine(borderRect.topLeft() + QPointF(1, 0), borderRect.topRight() - QPointF(1, 0)); + painter->drawLine(borderRect.topLeft(), borderRect.bottomLeft()); + painter->drawLine(borderRect.topRight(), borderRect.bottomRight()); } else if (option->state & State_Enabled && option->state & State_MouseOver) { painter->fillRect(rect, creatorTheme()->color(Theme::PanelButtonToolBackgroundColorHover)); } else if (widget && widget->property("highlightWidget").toBool()) { @@ -522,11 +524,12 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption painter->save(); QLinearGradient grad = StyleHelper::statusBarGradient(rect); painter->fillRect(rect, grad); + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); painter->setPen(QColor(255, 255, 255, 60)); - painter->drawLine(rect.topLeft() + QPoint(0,1), - rect.topRight()+ QPoint(0,1)); + painter->drawLine(borderRect.topLeft() + QPointF(0, 1), + borderRect.topRight()+ QPointF(0, 1)); painter->setPen(StyleHelper::borderColor().darker(110)); //TODO: make themable - painter->drawLine(rect.topLeft(), rect.topRight()); + painter->drawLine(borderRect.topLeft(), borderRect.topRight()); painter->restore(); } else { painter->fillRect(rect, creatorTheme()->color(Theme::PanelStatusBarBackgroundColor)); @@ -669,7 +672,6 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt case CE_MenuBarItem: painter->save(); if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { - QColor highlightOutline = StyleHelper::borderColor().lighter(120); const bool act = mbi->state & (State_Sunken | State_Selected); const bool dis = !(mbi->state & State_Enabled); @@ -693,18 +695,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt QLinearGradient grad(option->rect.topLeft(), option->rect.bottomLeft()); grad.setColorAt(0, baseColor.lighter(120)); grad.setColorAt(1, baseColor.lighter(130)); - painter->fillRect(option->rect.adjusted(1, 1, -1, 0), grad); - - // Outline - painter->setPen(QPen(highlightOutline, 0)); - const QRect r = option->rect; - painter->drawLine(QPoint(r.left(), r.top() + 1), QPoint(r.left(), r.bottom())); - painter->drawLine(QPoint(r.right(), r.top() + 1), QPoint(r.right(), r.bottom())); - painter->drawLine(QPoint(r.left() + 1, r.top()), QPoint(r.right() - 1, r.top())); - highlightOutline.setAlpha(60); - painter->setPen(QPen(highlightOutline, 0)); - painter->drawPoint(r.topLeft()); - painter->drawPoint(r.topRight()); + painter->fillRect(option->rect, grad); QPalette pal = mbi->palette; uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; @@ -831,6 +822,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt case CE_ToolBar: { QRect rect = option->rect; + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); bool horizontal = option->state & State_Horizontal; // Map offset for global window gradient @@ -863,17 +855,17 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt if (drawLightColored) lighter = QColor(255, 255, 255, 180); if (widget && widget->property("topBorder").toBool()) { - painter->drawLine(rect.topLeft(), rect.topRight()); + painter->drawLine(borderRect.topLeft(), borderRect.topRight()); painter->setPen(lighter); - painter->drawLine(rect.topLeft() + QPoint(0, 1), rect.topRight() + QPoint(0, 1)); + painter->drawLine(borderRect.topLeft() + QPointF(0, 1), borderRect.topRight() + QPointF(0, 1)); } else { - painter->drawLine(rect.bottomLeft(), rect.bottomRight()); + painter->drawLine(borderRect.bottomLeft(), borderRect.bottomRight()); painter->setPen(lighter); - painter->drawLine(rect.topLeft(), rect.topRight()); + painter->drawLine(borderRect.topLeft(), borderRect.topRight()); } } else { - painter->drawLine(rect.topLeft(), rect.bottomLeft()); - painter->drawLine(rect.topRight(), rect.bottomRight()); + painter->drawLine(borderRect.topLeft(), borderRect.bottomLeft()); + painter->drawLine(borderRect.topRight(), borderRect.bottomRight()); } } break; @@ -1035,20 +1027,21 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti void ManhattanStyle::drawButtonSeparator(QPainter *painter, const QRect &rect, bool reverse) const { + const QRectF borderRect = QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5); QLinearGradient grad(rect.topRight(), rect.bottomRight()); grad.setColorAt(0, QColor(255, 255, 255, 20)); grad.setColorAt(0.4, QColor(255, 255, 255, 60)); grad.setColorAt(0.7, QColor(255, 255, 255, 50)); grad.setColorAt(1, QColor(255, 255, 255, 40)); - painter->setPen(QPen(grad, 0)); - painter->drawLine(rect.topRight(), rect.bottomRight()); + painter->setPen(QPen(grad, 1)); + painter->drawLine(borderRect.topRight(), borderRect.bottomRight()); grad.setColorAt(0, QColor(0, 0, 0, 30)); grad.setColorAt(0.4, QColor(0, 0, 0, 70)); grad.setColorAt(0.7, QColor(0, 0, 0, 70)); grad.setColorAt(1, QColor(0, 0, 0, 40)); - painter->setPen(QPen(grad, 0)); + painter->setPen(QPen(grad, 1)); if (!reverse) - painter->drawLine(rect.topRight() - QPoint(1,0), rect.bottomRight() - QPoint(1,0)); + painter->drawLine(borderRect.topRight() - QPointF(1, 0), borderRect.bottomRight() - QPointF(1, 0)); else - painter->drawLine(rect.topLeft(), rect.bottomLeft()); + painter->drawLine(borderRect.topLeft(), borderRect.bottomLeft()); } diff --git a/src/plugins/coreplugin/navigationsubwidget.cpp b/src/plugins/coreplugin/navigationsubwidget.cpp index 39c23b45bd..80ad67c0a9 100644 --- a/src/plugins/coreplugin/navigationsubwidget.cpp +++ b/src/plugins/coreplugin/navigationsubwidget.cpp @@ -37,6 +37,7 @@ #include "id.h" #include <utils/styledbar.h> +#include <utils/themehelper.h> #include <QDebug> @@ -74,7 +75,8 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget, int pos toolBarLayout->addWidget(m_navigationComboBox); QToolButton *splitAction = new QToolButton(); - splitAction->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); + splitAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); splitAction->setToolTip(tr("Split")); splitAction->setPopupMode(QToolButton::InstantPopup); splitAction->setProperty("noArrow", true); @@ -83,7 +85,8 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget, int pos connect(m_splitMenu, &QMenu::aboutToShow, this, &NavigationSubWidget::populateSplitMenu); m_closeButton = new QToolButton(); - m_closeButton->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + m_closeButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); m_closeButton->setToolTip(tr("Close")); toolBarLayout->addWidget(splitAction); diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 599b4cf5d5..dd07140744 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -40,6 +40,8 @@ #include "id.h" #include "imode.h" +#include <utils/themehelper.h> + #include <QCoreApplication> #include <QDebug> #include <QSettings> @@ -248,7 +250,8 @@ Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position,int } if (!d->m_subWidgets.isEmpty()) // Make all icons the bottom icon - d->m_subWidgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + d->m_subWidgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); Internal::NavigationSubWidget *nsw = new Internal::NavigationSubWidget(this, position, index); connect(nsw, &Internal::NavigationSubWidget::splitMe, @@ -257,9 +260,11 @@ Internal::NavigationSubWidget *NavigationWidget::insertSubItem(int position,int insertWidget(position, nsw); d->m_subWidgets.insert(position, nsw); if (d->m_subWidgets.size() == 1) - d->m_subWidgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); + d->m_subWidgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); else - d->m_subWidgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); + d->m_subWidgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); return nsw; } @@ -308,9 +313,11 @@ void NavigationWidget::closeSubWidget() subWidget->deleteLater(); // update close button of top item if (d->m_subWidgets.size() == 1) - d->m_subWidgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); + d->m_subWidgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); else - d->m_subWidgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); + d->m_subWidgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); } else { setShown(false); } diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index fa2672713e..f1950c2b69 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -51,6 +51,7 @@ #include <utils/stylehelper.h> #include <utils/qtcassert.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QDebug> @@ -123,8 +124,8 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_prevAction(0), m_outputWidgetPane(new QStackedWidget), m_opToolBarWidgets(new QStackedWidget), - m_minimizeIcon(QLatin1String(":/core/images/arrowdown.png")), - m_maximizeIcon(QLatin1String(":/core/images/arrowup.png")), + m_minimizeIcon(ThemeHelper::themedIcon(QLatin1String(":/core/images/arrowdown.png"))), + m_maximizeIcon(ThemeHelper::themedIcon(QLatin1String(":/core/images/arrowup.png"))), m_maximised(false), m_outputPaneHeight(0) { @@ -133,17 +134,17 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_titleLabel->setContentsMargins(5, 0, 5, 0); m_clearAction = new QAction(this); - m_clearAction->setIcon(QIcon(QLatin1String(Constants::ICON_CLEAN_PANE))); + m_clearAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLEAN_PANE))); m_clearAction->setText(tr("Clear")); connect(m_clearAction, SIGNAL(triggered()), this, SLOT(clearPage())); m_nextAction = new QAction(this); - m_nextAction->setIcon(QIcon(QLatin1String(Constants::ICON_NEXT))); + m_nextAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_NEXT))); m_nextAction->setText(tr("Next Item")); connect(m_nextAction, SIGNAL(triggered()), this, SLOT(slotNext())); m_prevAction = new QAction(this); - m_prevAction->setIcon(QIcon(QLatin1String(Constants::ICON_PREV))); + m_prevAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_PREV))); m_prevAction->setText(tr("Previous Item")); connect(m_prevAction, SIGNAL(triggered()), this, SLOT(slotPrev())); @@ -151,7 +152,8 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) : m_minMaxAction->setIcon(m_maximizeIcon); m_minMaxAction->setText(tr("Maximize Output Pane")); - m_closeButton->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + m_closeButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); connect(m_closeButton, SIGNAL(clicked()), this, SLOT(slotHide())); connect(ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings())); diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp index 6365fbfc7e..69ab9a5ebf 100644 --- a/src/plugins/coreplugin/sidebar.cpp +++ b/src/plugins/coreplugin/sidebar.cpp @@ -35,6 +35,7 @@ #include "actionmanager/command.h" #include <utils/algorithm.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QSettings> #include <QPointer> @@ -204,7 +205,8 @@ SideBarItem *SideBar::item(const QString &id) Internal::SideBarWidget *SideBar::insertSideBarWidget(int position, const QString &id) { if (!d->m_widgets.isEmpty()) - d->m_widgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + d->m_widgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); Internal::SideBarWidget *item = new Internal::SideBarWidget(this, id); connect(item, SIGNAL(splitMe()), this, SLOT(splitSubWidget())); @@ -213,9 +215,11 @@ Internal::SideBarWidget *SideBar::insertSideBarWidget(int position, const QStrin insertWidget(position, item); d->m_widgets.insert(position, item); if (d->m_widgets.size() == 1) - d->m_widgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); + d->m_widgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); else - d->m_widgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); + d->m_widgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); updateWidgets(); return item; } @@ -245,9 +249,11 @@ void SideBar::closeSubWidget() removeSideBarWidget(widget); // update close button of top item if (d->m_widgets.size() == 1) - d->m_widgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); + d->m_widgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_LEFT))); else - d->m_widgets.at(0)->setCloseIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); + d->m_widgets.at(0)->setCloseIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_TOP))); updateWidgets(); } else { if (d->m_closeWhenEmpty) { diff --git a/src/plugins/coreplugin/sidebarwidget.cpp b/src/plugins/coreplugin/sidebarwidget.cpp index 8fce8187ab..3b5c3be752 100644 --- a/src/plugins/coreplugin/sidebarwidget.cpp +++ b/src/plugins/coreplugin/sidebarwidget.cpp @@ -34,6 +34,7 @@ #include <coreplugin/coreconstants.h> #include <utils/algorithm.h> +#include <utils/themehelper.h> #include <QToolBar> #include <QToolButton> @@ -76,13 +77,15 @@ SideBarWidget::SideBarWidget(SideBar *sideBar, const QString &id) m_splitAction = new QAction(tr("Split"), m_toolbar); m_splitAction->setToolTip(tr("Split")); - m_splitAction->setIcon(QIcon(QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); + m_splitAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Constants::ICON_SPLIT_HORIZONTAL))); connect(m_splitAction, SIGNAL(triggered()), this, SIGNAL(splitMe())); m_toolbar->addAction(m_splitAction); m_closeAction = new QAction(tr("Close"), m_toolbar); m_closeAction->setToolTip(tr("Close")); - m_closeAction->setIcon(QIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); + m_closeAction->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_CLOSE_SPLIT_BOTTOM))); connect(m_closeAction, SIGNAL(triggered()), this, SIGNAL(closeMe())); m_toolbar->addAction(m_closeAction); diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp index 222d8a90ff..55ac472eec 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp @@ -44,6 +44,7 @@ #include <cplusplus/Overview.h> #include <utils/changeset.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QAction> #include <QCheckBox> @@ -1028,7 +1029,7 @@ void InsertVirtualMethodsDialog::initGui() m_overrideReplacementComboBox, &QComboBox::setEnabled); QAction *clearUserAddedReplacements = new QAction(this); - clearUserAddedReplacements->setIcon(QIcon(QLatin1String(Core::Constants::ICON_CLEAN_PANE))); + clearUserAddedReplacements->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_CLEAN_PANE))); clearUserAddedReplacements->setText(tr("Clear Added \"override\" Equivalents")); connect(clearUserAddedReplacements, &QAction::triggered, [this]() { m_availableOverrideReplacements = defaultOverrideReplacements(); diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 9055b8195a..ea8d67b352 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -40,6 +40,7 @@ #include <coreplugin/progressmanager/progressmanager.h> #include <texteditor/basefilefind.h> +#include <utils/algorithm.h> #include <utils/qtcassert.h> #include <utils/runextensions.h> #include <utils/textfileformat.h> @@ -280,7 +281,7 @@ static void find_helper(QFutureInterface<Usage> &future, const Utils::FileName sourceFile = Utils::FileName::fromUtf8(symbol->fileName(), symbol->fileNameLength()); - Utils::FileNameList files(sourceFile); + Utils::FileNameList files {sourceFile}; if (symbol->isClass() || symbol->isForwardClassDeclaration() @@ -300,7 +301,7 @@ static void find_helper(QFutureInterface<Usage> &future, } else { files += snapshot.filesDependingOn(sourceFile); } - files.removeDuplicates(); + files = Utils::filteredUnique(files); future.setProgressRange(0, files.size()); @@ -617,9 +618,8 @@ static void findMacroUses_helper(QFutureInterface<Usage> &future, const Macro macro) { const Utils::FileName sourceFile = Utils::FileName::fromString(macro.fileName()); - Utils::FileNameList files(sourceFile); - files += snapshot.filesDependingOn(sourceFile); - files.removeDuplicates(); + Utils::FileNameList files {sourceFile}; + files = Utils::filteredUnique(files + snapshot.filesDependingOn(sourceFile)); future.setProgressRange(0, files.size()); FindMacroUsesInFile process(workingCopy, snapshot, macro, &future); diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index c70bdb14e5..db9bbb07c1 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -39,6 +39,7 @@ #include <cplusplus/Overview.h> #include <cplusplus/LookupContext.h> +#include <utils/algorithm.h> #include <utils/qtcassert.h> #include <QDebug> @@ -290,11 +291,9 @@ bool skipFileDueToSizeLimit(const QFileInfo &fileInfo, int limitInMB) Utils::FileNameList modifiedFiles() { - Utils::FileNameList files; - foreach (Core::IDocument *doc, Core::DocumentManager::modifiedDocuments()) - files.append(doc->filePath()); - files.removeDuplicates(); - return files; + Utils::FileNameList files = Utils::transform(Core::DocumentManager::modifiedDocuments(), + [](Core::IDocument *d) -> Utils::FileName { return d->filePath(); }); + return Utils::filteredUnique(files); } } // CppTools diff --git a/src/plugins/cpptools/cpptoolsreuse.h b/src/plugins/cpptools/cpptoolsreuse.h index cb6e0246e6..1272c49794 100644 --- a/src/plugins/cpptools/cpptoolsreuse.h +++ b/src/plugins/cpptools/cpptoolsreuse.h @@ -37,6 +37,8 @@ #include <cplusplus/CppDocument.h> +#include <utils/fileutils.h> + QT_BEGIN_NAMESPACE class QChar; class QFileInfo; @@ -44,10 +46,6 @@ class QStringRef; class QTextCursor; QT_END_NAMESPACE -namespace Utils { -class FileNameList; -} // namespace Utils - namespace CPlusPlus { class Macro; class Symbol; diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index f03c1b85d9..661e4584a4 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -250,7 +250,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) CMD_ID_DIFF_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+C,Meta+D") : tr("Alt+C,Alt+D"))); - connect(m_diffCurrentAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); + connect(m_diffCurrentAction, &QAction::triggered, this, &CvsPlugin::diffCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -258,8 +258,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_filelogCurrentAction, CMD_ID_FILELOG_CURRENT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_filelogCurrentAction, SIGNAL(triggered()), this, - SLOT(filelogCurrentFile())); + connect(m_filelogCurrentAction, &QAction::triggered, this, &CvsPlugin::filelogCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -267,8 +266,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_annotateCurrentAction, CMD_ID_ANNOTATE_CURRENT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_annotateCurrentAction, SIGNAL(triggered()), this, - SLOT(annotateCurrentFile())); + connect(m_annotateCurrentAction, &QAction::triggered, this, &CvsPlugin::annotateCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -279,7 +277,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+C,Meta+A") : tr("Alt+C,Alt+A"))); - connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + connect(m_addAction, &QAction::triggered, this, &CvsPlugin::addCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -288,7 +286,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) CMD_ID_COMMIT_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+C,Meta+C") : tr("Alt+C,Alt+C"))); - connect(m_commitCurrentAction, SIGNAL(triggered()), this, SLOT(startCommitCurrentFile())); + connect(m_commitCurrentAction, &QAction::triggered, this, &CvsPlugin::startCommitCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -304,7 +302,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_revertAction, CMD_ID_REVERT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_revertAction, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); + connect(m_revertAction, &QAction::triggered, this, &CvsPlugin::revertCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -313,20 +311,20 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) m_editCurrentAction = new ParameterAction(tr("Edit"), tr("Edit \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_editCurrentAction, CMD_ID_EDIT_FILE, context); command->setAttribute(Command::CA_UpdateText); - connect(m_editCurrentAction, SIGNAL(triggered()), this, SLOT(editCurrentFile())); + connect(m_editCurrentAction, &QAction::triggered, this, &CvsPlugin::editCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_uneditCurrentAction = new ParameterAction(tr("Unedit"), tr("Unedit \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_uneditCurrentAction, CMD_ID_UNEDIT_FILE, context); command->setAttribute(Command::CA_UpdateText); - connect(m_uneditCurrentAction, SIGNAL(triggered()), this, SLOT(uneditCurrentFile())); + connect(m_uneditCurrentAction, &QAction::triggered, this, &CvsPlugin::uneditCurrentFile); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_uneditRepositoryAction = new QAction(tr("Unedit Repository"), this); command = ActionManager::registerAction(m_uneditRepositoryAction, CMD_ID_UNEDIT_REPOSITORY, context); - connect(m_uneditRepositoryAction, SIGNAL(triggered()), this, SLOT(uneditCurrentRepository())); + connect(m_uneditRepositoryAction, &QAction::triggered, this, &CvsPlugin::uneditCurrentRepository); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -336,7 +334,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_diffProjectAction, CMD_ID_DIFF_PROJECT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_diffProjectAction, SIGNAL(triggered()), this, SLOT(diffProject())); + connect(m_diffProjectAction, &QAction::triggered, this, &CvsPlugin::diffProject); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -344,28 +342,28 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_statusProjectAction, CMD_ID_STATUS, context); command->setAttribute(Command::CA_UpdateText); - connect(m_statusProjectAction, SIGNAL(triggered()), this, SLOT(projectStatus())); + connect(m_statusProjectAction, &QAction::triggered, this, &CvsPlugin::projectStatus); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context); command->setAttribute(Command::CA_UpdateText); - connect(m_logProjectAction, SIGNAL(triggered()), this, SLOT(logProject())); + connect(m_logProjectAction, &QAction::triggered, this, &CvsPlugin::logProject); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_updateProjectAction = new ParameterAction(tr("Update Project"), tr("Update Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE, context); command->setAttribute(Command::CA_UpdateText); - connect(m_updateProjectAction, SIGNAL(triggered()), this, SLOT(updateProject())); + connect(m_updateProjectAction, &QAction::triggered, this, &CvsPlugin::updateProject); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_commitProjectAction = new ParameterAction(tr("Commit Project"), tr("Commit Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_commitProjectAction, CMD_ID_PROJECTCOMMIT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_commitProjectAction, SIGNAL(triggered()), this, SLOT(commitProject())); + connect(m_commitProjectAction, &QAction::triggered, this, &CvsPlugin::commitProject); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -374,7 +372,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) m_updateDirectoryAction = new ParameterAction(tr("Update Directory"), tr("Update Directory \"%1\""), Utils::ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_updateDirectoryAction, CMD_ID_UPDATE_DIRECTORY, context); command->setAttribute(Command::CA_UpdateText); - connect(m_updateDirectoryAction, SIGNAL(triggered()), this, SLOT(updateDirectory())); + connect(m_updateDirectoryAction, &QAction::triggered, this, &CvsPlugin::updateDirectory); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -382,7 +380,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) command = ActionManager::registerAction(m_commitDirectoryAction, CMD_ID_COMMIT_DIRECTORY, context); command->setAttribute(Command::CA_UpdateText); - connect(m_commitDirectoryAction, SIGNAL(triggered()), this, SLOT(startCommitDirectory())); + connect(m_commitDirectoryAction, &QAction::triggered, this, &CvsPlugin::startCommitDirectory); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -390,39 +388,39 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) m_diffRepositoryAction = new QAction(tr("Diff Repository"), this); command = ActionManager::registerAction(m_diffRepositoryAction, CMD_ID_REPOSITORYDIFF, context); - connect(m_diffRepositoryAction, SIGNAL(triggered()), this, SLOT(diffRepository())); + connect(m_diffRepositoryAction, &QAction::triggered, this, &CvsPlugin::diffRepository); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_statusRepositoryAction = new QAction(tr("Repository Status"), this); command = ActionManager::registerAction(m_statusRepositoryAction, CMD_ID_REPOSITORYSTATUS, context); - connect(m_statusRepositoryAction, SIGNAL(triggered()), this, SLOT(statusRepository())); + connect(m_statusRepositoryAction, &QAction::triggered, this, &CvsPlugin::statusRepository); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_logRepositoryAction = new QAction(tr("Repository Log"), this); command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context); - connect(m_logRepositoryAction, SIGNAL(triggered()), this, SLOT(logRepository())); + connect(m_logRepositoryAction, &QAction::triggered, this, &CvsPlugin::logRepository); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_updateRepositoryAction = new QAction(tr("Update Repository"), this); command = ActionManager::registerAction(m_updateRepositoryAction, CMD_ID_REPOSITORYUPDATE, context); - connect(m_updateRepositoryAction, SIGNAL(triggered()), this, SLOT(updateRepository())); + connect(m_updateRepositoryAction, &QAction::triggered, this, &CvsPlugin::updateRepository); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_commitAllAction = new QAction(tr("Commit All Files"), this); command = ActionManager::registerAction(m_commitAllAction, CMD_ID_COMMIT_ALL, context); - connect(m_commitAllAction, SIGNAL(triggered()), this, SLOT(startCommitAll())); + connect(m_commitAllAction, &QAction::triggered, this, &CvsPlugin::startCommitAll); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); m_revertRepositoryAction = new QAction(tr("Revert Repository..."), this); command = ActionManager::registerAction(m_revertRepositoryAction, CMD_ID_REVERT_ALL, context); - connect(m_revertRepositoryAction, SIGNAL(triggered()), this, SLOT(revertAll())); + connect(m_revertRepositoryAction, &QAction::triggered, this, &CvsPlugin::revertAll); cvsMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -432,7 +430,7 @@ bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage) m_submitCurrentLogAction = new QAction(VcsBaseSubmitEditor::submitIcon(), tr("Commit"), this); command = ActionManager::registerAction(m_submitCurrentLogAction, SUBMIT_CURRENT, cvscommitcontext); command->setAttribute(Command::CA_UpdateText); - connect(m_submitCurrentLogAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); + connect(m_submitCurrentLogAction, &QAction::triggered, this, &CvsPlugin::submitCurrentLog); m_submitDiffAction = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this); ActionManager::registerAction(m_submitDiffAction , DIFF_SELECTED, cvscommitcontext); diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index c94ed8767e..16218c524c 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -98,6 +98,19 @@ public slots: const QString &revision, int lineNumber); private slots: + void slotDescribe(const QString &source, const QString &changeNr); + +#ifdef WITH_TESTS + void testDiffFileResolving_data(); + void testDiffFileResolving(); + void testLogResolving(); +#endif + +protected: + void updateActions(VcsBase::VcsBasePlugin::ActionState); + bool submitEditorAboutToClose(); + +private: void addCurrentFile(); void revertCurrentFile(); void diffProject(); @@ -109,7 +122,6 @@ private slots: void filelogCurrentFile(); void annotateCurrentFile(); void projectStatus(); - void slotDescribe(const QString &source, const QString &changeNr); void updateDirectory(); void updateProject(); void submitCurrentLog(); @@ -123,17 +135,7 @@ private slots: void editCurrentFile(); void uneditCurrentFile(); void uneditCurrentRepository(); -#ifdef WITH_TESTS - void testDiffFileResolving_data(); - void testDiffFileResolving(); - void testLogResolving(); -#endif - -protected: - void updateActions(VcsBase::VcsBasePlugin::ActionState); - bool submitEditorAboutToClose(); -private: bool isCommitEditorOpen() const; Core::IEditor *showOutputInEditor(const QString& title, const QString &output, int editorType, const QString &source, diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index 9dd3eaabba..e75b42e861 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -68,7 +68,6 @@ private: QCheckBox *checkBoxUseAlternatingRowColors; QCheckBox *checkBoxFontSizeFollowsEditor; QCheckBox *checkBoxUseToolTipsInMainEditor; - QCheckBox *checkBoxListSourceFiles; QCheckBox *checkBoxCloseSourceBuffersOnExit; QCheckBox *checkBoxCloseMemoryBuffersOnExit; QCheckBox *checkBoxSwitchModeOnExit; diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs index c165487a9f..24aa2dc43c 100644 --- a/src/plugins/debugger/debugger.qbs +++ b/src/plugins/debugger/debugger.qbs @@ -171,39 +171,13 @@ QtcPlugin { Group { name: "Images" prefix: "images/" - files: [ - "breakpoint_16.png", - "breakpoint_24.png", - "breakpoint_disabled_16.png", - "breakpoint_disabled_24.png", - "breakpoint_disabled_32.png", - "breakpoint_pending_16.png", - "breakpoint_pending_24.png", - "debugger_breakpoints.png", - "debugger_continue.png", - "debugger_continue_32.png", - "debugger_continue_small.png", - "debugger_empty_14.png", - "debugger_interrupt.png", - "debugger_interrupt_32.png", - "debugger_reversemode_16.png", - "debugger_singleinstructionmode.png", - "debugger_snapshot_small.png", - "debugger_start.png", - "debugger_start_small.png", - "debugger_stepinto_small.png", - "debugger_steponeproc_small.png", - "debugger_stepout_small.png", - "debugger_stepover_small.png", - "debugger_stepoverproc_small.png", - "debugger_stop.png", - "debugger_stop_32.png", - "debugger_stop_small.png", - "location_16.png", - "location_24.png", - "tracepoint.png", - "watchpoint.png", - ] + files: ["*.png", "*.xpm"] + } + + Group { + name: "Images/qml" + prefix: "images/qml/" + files: ["*.png"] } Group { diff --git a/src/plugins/debugger/debugger.qrc b/src/plugins/debugger/debugger.qrc index 4e930511e0..a61acc6d8b 100644 --- a/src/plugins/debugger/debugger.qrc +++ b/src/plugins/debugger/debugger.qrc @@ -3,21 +3,20 @@ <file>images/category_debug.png</file> <file>images/debugger_breakpoints.png</file> <file>images/debugger_continue.png</file> - <file>images/debugger_continue_small.png</file> <file>images/debugger_empty_14.png</file> <file>images/debugger_interrupt.png</file> <file>images/debugger_reversemode_16.png</file> <file>images/debugger_singleinstructionmode.png</file> + <file>images/debugger_singleinstructionmode@2x.png</file> <file>images/debugger_snapshot_small.png</file> - <file>images/debugger_start.png</file> - <file>images/debugger_start_small.png</file> <file>images/debugger_stepinto_small.png</file> + <file>images/debugger_stepinto_small@2x.png</file> <file>images/debugger_steponeproc_small.png</file> <file>images/debugger_stepout_small.png</file> + <file>images/debugger_stepout_small@2x.png</file> <file>images/debugger_stepover_small.png</file> + <file>images/debugger_stepover_small@2x.png</file> <file>images/debugger_stepoverproc_small.png</file> - <file>images/debugger_stop.png</file> - <file>images/debugger_stop_small.png</file> <file>images/watchpoint.png</file> <file>images/tracepoint.png</file> <file>images/breakpoint_16.png</file> @@ -32,12 +31,11 @@ <file>images/mode_debug.png</file> <file>images/mode_debug@2x.png</file> <file>images/pin.xpm</file> - <file>images/qml/zoom.png</file> <file>images/qml/select.png</file> <file>images/qml/app-on-top.png</file> <file>images/qml/apply-on-save.png</file> - <file>images/debugger_restart.png</file> <file>images/debugger_restart_small.png</file> + <file>images/debugger_restart_small@2x.png</file> <file>Debugger.mimetypes.xml</file> </qresource> </RCC> diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index f998249ced..dd2bd488c2 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -38,6 +38,7 @@ #include <coreplugin/icore.h> #include <utils/savedaction.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QDebug> #include <QSettings> @@ -176,7 +177,8 @@ DebuggerSettings::DebuggerSettings() item->setText(tr("Operate by Instruction")); item->setCheckable(true); item->setDefaultValue(false); - item->setIcon(QIcon(QLatin1String(":/debugger/images/debugger_singleinstructionmode.png"))); + item->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(":/debugger/images/debugger_singleinstructionmode.png"))); item->setToolTip(tr("<p>This switches the debugger to instruction-wise " "operation mode. In this mode, stepping operates on single " "instructions and the source location view also shows the " diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp index f449c2f638..4ab671e757 100644 --- a/src/plugins/debugger/debuggeritemmanager.cpp +++ b/src/plugins/debugger/debuggeritemmanager.cpp @@ -139,7 +139,7 @@ QList<DebuggerItem> DebuggerItemManager::debuggers() void DebuggerItemManager::autoDetectCdbDebuggers() { - QList<FileName> cdbs; + FileNameList cdbs; QStringList programDirs; programDirs.append(QString::fromLocal8Bit(qgetenv("ProgramFiles"))); @@ -227,7 +227,7 @@ void DebuggerItemManager::autoDetectGdbOrLldbDebuggers() } */ - QList<FileName> suspects; + FileNameList suspects; if (HostOsInfo::isMacHost()) { QProcess lldbInfo; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 38790e5371..62295da7b5 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -116,6 +116,7 @@ #include <utils/savedaction.h> #include <utils/statuslabel.h> #include <utils/styledbar.h> +#include <utils/themehelper.h> #include <utils/winutils.h> #include <QApplication> @@ -2345,17 +2346,14 @@ void DebuggerPluginPrivate::extensionsInitialized() const Context cppDebuggercontext(C_CPPDEBUGGER); const Context cppeditorcontext(CppEditor::Constants::CPPEDITOR_ID); - m_startIcon = QIcon(_(":/debugger/images/debugger_start_small.png")); - m_startIcon.addFile(QLatin1String(":/debugger/images/debugger_start.png")); - m_exitIcon = QIcon(_(":/debugger/images/debugger_stop_small.png")); - m_exitIcon.addFile(QLatin1String(":/debugger/images/debugger_stop.png")); - m_continueIcon = QIcon(QLatin1String(":/debugger/images/debugger_continue_small.png")); - m_continueIcon.addFile(QLatin1String(":/debugger/images/debugger_continue.png")); - m_interruptIcon = QIcon(_(Core::Constants::ICON_PAUSE)); - m_interruptIcon.addFile(QLatin1String(":/debugger/images/debugger_interrupt.png")); + m_startIcon = ThemeHelper::themedIcon(_(Core::Constants::ICON_DEBUG_START_SMALL)); + m_exitIcon = ThemeHelper::themedIcon(_(Core::Constants::ICON_DEBUG_EXIT_SMALL)); + m_continueIcon = ThemeHelper::themedIcon(_(Core::Constants::ICON_DEBUG_CONTINUE_SMALL)); + m_continueIcon.addFile(_(":/debugger/images/debugger_continue.png")); + m_interruptIcon = ThemeHelper::themedIcon(_(Core::Constants::ICON_DEBUG_INTERRUPT_SMALL)); + m_interruptIcon.addFile(_(":/debugger/images/debugger_interrupt.png")); m_locationMarkIcon = QIcon(_(":/debugger/images/location_16.png")); - m_resetIcon = QIcon(_(":/debugger/images/debugger_restart_small.png:")); - m_resetIcon.addFile(QLatin1String(":/debugger/images/debugger_restart.png")); + m_resetIcon = ThemeHelper::themedIcon(_(":/debugger/images/debugger_restart_small.png|IconsRunColor")); m_busy = false; @@ -2445,15 +2443,15 @@ void DebuggerPluginPrivate::extensionsInitialized() connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleReset); act = m_nextAction = new QAction(tr("Step Over"), this); - act->setIcon(QIcon(QLatin1String(":/debugger/images/debugger_stepover_small.png"))); + act->setIcon(ThemeHelper::themedIcon(_(":/debugger/images/debugger_stepover_small.png"))); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecNext); act = m_stepAction = new QAction(tr("Step Into"), this); - act->setIcon(QIcon(QLatin1String(":/debugger/images/debugger_stepinto_small.png"))); + act->setIcon(ThemeHelper::themedIcon(_(":/debugger/images/debugger_stepinto_small.png"))); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStep); act = m_stepOutAction = new QAction(tr("Step Out"), this); - act->setIcon(QIcon(QLatin1String(":/debugger/images/debugger_stepout_small.png"))); + act->setIcon(ThemeHelper::themedIcon(_(":/debugger/images/debugger_stepout_small.png"))); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStepOut); act = m_runToLineAction = new QAction(tr("Run to Line"), this); @@ -2538,7 +2536,7 @@ void DebuggerPluginPrivate::extensionsInitialized() // The main "Start Debugging" action. act = m_startAction = new QAction(this); - QIcon debuggerIcon(QLatin1String(":/projectexplorer/images/debugger_start_small.png")); + QIcon debuggerIcon(ThemeHelper::themedIcon(_(Core::Constants::ICON_DEBUG_START_SMALL))); debuggerIcon.addFile(QLatin1String(":/projectexplorer/images/debugger_start.png")); act->setIcon(debuggerIcon); act->setText(tr("Start Debugging")); @@ -2789,7 +2787,7 @@ void DebuggerPluginPrivate::extensionsInitialized() QAction *qmlZoomDummyAction = new QAction(tr("Zoom"), this); qmlZoomDummyAction->setCheckable(true); - qmlZoomDummyAction->setIcon(QIcon(_(":/debugger/images/qml/zoom.png"))); + qmlZoomDummyAction->setIcon(ThemeHelper::themedIcon(_(Core::Constants::ICON_ZOOM))); qmlZoomDummyAction->setEnabled(false); cmd = ActionManager::registerAction(qmlZoomDummyAction, Constants::QML_ZOOMTOOL); debugMenu->addAction(cmd); diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 7f16e9b8e1..d4bbe51327 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -57,6 +57,7 @@ #include <utils/qtcassert.h> #include <utils/qtcprocess.h> #include <coreplugin/icore.h> +#include <coreplugin/coreconstants.h> #include <qmldebug/qmldebugcommandlinearguments.h> #include <qtsupport/qtkitinformation.h> @@ -113,7 +114,7 @@ DebuggerRunControl::DebuggerRunControl(RunConfiguration *runConfig, DebuggerEngi m_engine(engine), m_running(false) { - setIcon(QLatin1String(ProjectExplorer::Constants::ICON_DEBUG_SMALL)); + setIcon(QLatin1String(Core::Constants::ICON_DEBUG_START_SMALL)); connect(this, &RunControl::finished, this, &DebuggerRunControl::handleFinished); connect(engine, &DebuggerEngine::requestRemoteSetup, @@ -531,7 +532,9 @@ void DebuggerRunControlCreator::enrich(const RunConfiguration *runConfig, const service = QmlDebug::QmlDebuggerServices; } if (m_rp.startMode != AttachExternal) - QtcProcess::addArg(&m_rp.processArgs, QmlDebug::qmlDebugCommandLineArguments(service, m_rp.qmlServerPort)); + QtcProcess::addArg(&m_rp.processArgs, wantCppDebugger && m_rp.nativeMixedEnabled ? + QmlDebug::qmlDebugNativeArguments(service, false) : + QmlDebug::qmlDebugTcpArguments(service, m_rp.qmlServerPort)); } } diff --git a/src/plugins/debugger/images/debugger_continue_small.png b/src/plugins/debugger/images/debugger_continue_small.png Binary files differdeleted file mode 100644 index 3f49f3fef3..0000000000 --- a/src/plugins/debugger/images/debugger_continue_small.png +++ /dev/null diff --git a/src/plugins/debugger/images/debugger_restart.png b/src/plugins/debugger/images/debugger_restart.png Binary files differdeleted file mode 100644 index 2c64931207..0000000000 --- a/src/plugins/debugger/images/debugger_restart.png +++ /dev/null diff --git a/src/plugins/debugger/images/debugger_restart.svg b/src/plugins/debugger/images/debugger_restart.svg deleted file mode 100644 index 08af9db3e3..0000000000 --- a/src/plugins/debugger/images/debugger_restart.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg2403" - height="16" - width="16" - version="1.0" - inkscape:version="0.48.4 r9939" - sodipodi:docname="restartF.svg" - inkscape:export-filename="/home/tstone/projekte/stm32/qt-creator/src/plugins/debugger/images/restart.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <metadata - id="metadata9"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs7" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="812" - inkscape:window-height="480" - id="namedview5" - showgrid="false" - inkscape:zoom="2.6074563" - inkscape:cx="29.713525" - inkscape:cy="39.686584" - inkscape:window-x="528" - inkscape:window-y="112" - inkscape:window-maximized="0" - inkscape:current-layer="svg2403" /> - <path - id="circle" - style="fill:none;stroke:#39a200;stroke-width:3;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="M 4.3814407,4.7280695 C 1.0195763,7.1548695 2.1753174,13.61748 7.4891237,13.770186 12.207451,13.905779 15.5821,9.9571474 11.885043,4.5928762" - inkscape:connector-curvature="0" - sodipodi:nodetypes="csc" /> - <path - id="topmark" - style="stroke:#39a200;stroke-linecap:round;stroke-width:3;fill:none;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m8 6.9952v-4.9904" /> - <path - style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" - d="M 4.677966,4.5423729 C 0.38168193,7.6562328 2.6923842,13.541247 7.5932203,13.627119" - id="arrow" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:#ffffff;fill-opacity:0.94117647;stroke:#39a200;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="M 7.8291211,15.145082 11.463143,13.540112 7.7592641,12.467117 z" - id="arrowhead" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> -</svg> diff --git a/src/plugins/debugger/images/debugger_restart_small.png b/src/plugins/debugger/images/debugger_restart_small.png Binary files differindex 6b10c8fe79..a1e5e8bb6c 100644 --- a/src/plugins/debugger/images/debugger_restart_small.png +++ b/src/plugins/debugger/images/debugger_restart_small.png diff --git a/src/plugins/debugger/images/debugger_restart_small@2x.png b/src/plugins/debugger/images/debugger_restart_small@2x.png Binary files differnew file mode 100644 index 0000000000..cf1743da33 --- /dev/null +++ b/src/plugins/debugger/images/debugger_restart_small@2x.png diff --git a/src/plugins/debugger/images/debugger_singleinstructionmode.png b/src/plugins/debugger/images/debugger_singleinstructionmode.png Binary files differindex d32007c18f..41529e91fd 100644 --- a/src/plugins/debugger/images/debugger_singleinstructionmode.png +++ b/src/plugins/debugger/images/debugger_singleinstructionmode.png diff --git a/src/plugins/debugger/images/debugger_singleinstructionmode@2x.png b/src/plugins/debugger/images/debugger_singleinstructionmode@2x.png Binary files differnew file mode 100644 index 0000000000..db475f81fa --- /dev/null +++ b/src/plugins/debugger/images/debugger_singleinstructionmode@2x.png diff --git a/src/plugins/debugger/images/debugger_start.png b/src/plugins/debugger/images/debugger_start.png Binary files differdeleted file mode 100644 index 8eed81a899..0000000000 --- a/src/plugins/debugger/images/debugger_start.png +++ /dev/null diff --git a/src/plugins/debugger/images/debugger_start_small.png b/src/plugins/debugger/images/debugger_start_small.png Binary files differdeleted file mode 100644 index 4a3788c149..0000000000 --- a/src/plugins/debugger/images/debugger_start_small.png +++ /dev/null diff --git a/src/plugins/debugger/images/debugger_stepinto_small.png b/src/plugins/debugger/images/debugger_stepinto_small.png Binary files differindex 729cb25e11..8e24fba5a2 100644 --- a/src/plugins/debugger/images/debugger_stepinto_small.png +++ b/src/plugins/debugger/images/debugger_stepinto_small.png diff --git a/src/plugins/debugger/images/debugger_stepinto_small@2x.png b/src/plugins/debugger/images/debugger_stepinto_small@2x.png Binary files differnew file mode 100644 index 0000000000..c93456a878 --- /dev/null +++ b/src/plugins/debugger/images/debugger_stepinto_small@2x.png diff --git a/src/plugins/debugger/images/debugger_stepout_small.png b/src/plugins/debugger/images/debugger_stepout_small.png Binary files differindex 39a2412427..615c022419 100644 --- a/src/plugins/debugger/images/debugger_stepout_small.png +++ b/src/plugins/debugger/images/debugger_stepout_small.png diff --git a/src/plugins/debugger/images/debugger_stepout_small@2x.png b/src/plugins/debugger/images/debugger_stepout_small@2x.png Binary files differnew file mode 100644 index 0000000000..5eb9aa9fea --- /dev/null +++ b/src/plugins/debugger/images/debugger_stepout_small@2x.png diff --git a/src/plugins/debugger/images/debugger_stepover_small.png b/src/plugins/debugger/images/debugger_stepover_small.png Binary files differindex 2e5acd2256..e7dc6fb20b 100644 --- a/src/plugins/debugger/images/debugger_stepover_small.png +++ b/src/plugins/debugger/images/debugger_stepover_small.png diff --git a/src/plugins/debugger/images/debugger_stepover_small@2x.png b/src/plugins/debugger/images/debugger_stepover_small@2x.png Binary files differnew file mode 100644 index 0000000000..74ff28cfa0 --- /dev/null +++ b/src/plugins/debugger/images/debugger_stepover_small@2x.png diff --git a/src/plugins/debugger/images/debugger_stop.png b/src/plugins/debugger/images/debugger_stop.png Binary files differdeleted file mode 100644 index c96dac37b0..0000000000 --- a/src/plugins/debugger/images/debugger_stop.png +++ /dev/null diff --git a/src/plugins/debugger/images/debugger_stop_small.png b/src/plugins/debugger/images/debugger_stop_small.png Binary files differdeleted file mode 100644 index 1063d08998..0000000000 --- a/src/plugins/debugger/images/debugger_stop_small.png +++ /dev/null diff --git a/src/plugins/debugger/images/qml/zoom.png b/src/plugins/debugger/images/qml/zoom.png Binary files differdeleted file mode 100644 index 7f54ec1191..0000000000 --- a/src/plugins/debugger/images/qml/zoom.png +++ /dev/null diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index c4b6fcf7c7..9d290e8c2c 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -57,6 +57,7 @@ #include <qmljseditor/qmljseditorconstants.h> #include <qmljs/qmljsmodelmanagerinterface.h> #include <qmljs/consolemanagerinterface.h> +#include <qmldebug/qpacketprotocol.h> #include <texteditor/textdocument.h> #include <texteditor/texteditor.h> @@ -290,17 +291,15 @@ QmlEngine::QmlEngine(const DebuggerRunParameters &startParameters, DebuggerEngin connect(&d->connectionTimer, &QTimer::timeout, this, &QmlEngine::checkConnectionState); - connect(d->connection, &QmlDebugConnection::stateMessage, - this, &QmlEngine::showConnectionStateMessage); - connect(d->connection, &QmlDebugConnection::errorMessage, - this, &QmlEngine::showConnectionErrorMessage); - connect(d->connection, &QmlDebugConnection::error, + connect(d->connection, &QmlDebugConnection::socketStateChanged, + this, &QmlEngine::connectionStateChanged); + connect(d->connection, &QmlDebugConnection::socketError, this, &QmlEngine::connectionErrorOccurred); - connect(d->connection, &QmlDebugConnection::opened, + connect(d->connection, &QmlDebugConnection::connected, &d->connectionTimer, &QTimer::stop); - connect(d->connection, &QmlDebugConnection::opened, + connect(d->connection, &QmlDebugConnection::connected, this, &QmlEngine::connectionEstablished); - connect(d->connection, &QmlDebugConnection::closed, + connect(d->connection, &QmlDebugConnection::disconnected, this, &QmlEngine::disconnected); d->msgClient = new QDebugMessageClient(d->connection); @@ -397,7 +396,7 @@ void QmlEngine::beginConnection(quint16 port) if (runParameters().qmlServerPort > 0) port = runParameters().qmlServerPort; - if (!d->connection || d->connection->isOpen()) + if (!d->connection || d->connection->isConnected()) return; d->connection->connectToHost(host, port); @@ -1212,11 +1211,11 @@ bool QmlEnginePrivate::canEvaluateScript(const QString &script) return interpreter.canEvaluate(); } -void QmlEngine::connectionErrorOccurred(QDebugSupport::Error error) +void QmlEngine::connectionErrorOccurred(QAbstractSocket::SocketError error) { // this is only an error if we are already connected and something goes wrong. if (isConnected()) { - if (error == QDebugSupport::RemoteClosedConnectionError) + if (error == QAbstractSocket::RemoteHostClosedError) showMessage(tr("QML Debugger: Remote host closed connection."), StatusBar); if (!isSlaveEngine()) { // normal flow for slave engine when gdb exits @@ -1229,13 +1228,18 @@ void QmlEngine::connectionErrorOccurred(QDebugSupport::Error error) } } +void QmlEngine::connectionStateChanged(QAbstractSocket::SocketState socketState) +{ + showConnectionStateMessage(QmlDebugConnection::socketStateToString(socketState)); +} + void QmlEngine::clientStateChanged(QmlDebugClient::State state) { QString serviceName; float version = 0; if (QmlDebugClient *client = qobject_cast<QmlDebugClient*>(sender())) { serviceName = client->name(); - version = client->remoteVersion(); + version = client->serviceVersion(); } logServiceStateChange(serviceName, version, state); @@ -1251,7 +1255,7 @@ void QmlEngine::checkConnectionState() bool QmlEngine::isConnected() const { - return d->connection->isOpen(); + return d->connection->isConnected(); } void QmlEngine::showConnectionStateMessage(const QString &message) @@ -1259,11 +1263,6 @@ void QmlEngine::showConnectionStateMessage(const QString &message) showMessage(_("QML Debugger: ") + message, LogStatus); } -void QmlEngine::showConnectionErrorMessage(const QString &message) -{ - showMessage(_("QML Debugger: ") + message, LogError); -} - void QmlEngine::logServiceStateChange(const QString &service, float version, QmlDebugClient::State newState) { @@ -1504,11 +1503,10 @@ void QmlEnginePrivate::setBreakpoint(const QString type, const QString target, // } // } if (type == _(EVENT)) { - QByteArray params; - QmlDebugStream rs(¶ms, QIODevice::WriteOnly); + QPacket rs(connection->currentDataStreamVersion()); rs << target.toUtf8() << enabled; engine->showMessage(QString(_("%1 %2 %3")).arg(_(BREAKONSIGNAL), target, enabled ? _("enabled") : _("disabled")), LogInput); - runDirectCommand(BREAKONSIGNAL, params); + runDirectCommand(BREAKONSIGNAL, rs.data()); } else { DebuggerCommand cmd(SETBREAKPOINT); @@ -1704,14 +1702,13 @@ void QmlEnginePrivate::runDirectCommand(const QByteArray &type, const QByteArray engine->showMessage(QString::fromLatin1("%1 %2").arg(_(type), _(msg)), LogInput); - QByteArray request; - QmlDebugStream rs(&request, QIODevice::WriteOnly); + QPacket rs(connection->currentDataStreamVersion()); rs << cmd << type << msg; if (state() == Enabled) - sendMessage(request); + sendMessage(rs.data()); else - sendBuffer.append(request); + sendBuffer.append(rs.data()); } void QmlEnginePrivate::memorizeRefs(const QVariant &refs) @@ -1727,7 +1724,7 @@ void QmlEnginePrivate::memorizeRefs(const QVariant &refs) void QmlEnginePrivate::messageReceived(const QByteArray &data) { - QmlDebugStream ds(data); + QPacket ds(connection->currentDataStreamVersion(), data); QByteArray command; ds >> command; diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index 479dddb746..24942b8feb 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -34,7 +34,6 @@ #include <debugger/debuggerengine.h> #include <qmldebug/qdebugmessageclient.h> -#include <qmldebug/qmldebugclient.h> #include <qmldebug/qmloutputparser.h> #include <qmljs/iscriptevaluator.h> #include <qmljs/qmljsdocument.h> @@ -142,11 +141,12 @@ private: void startApplicationLauncher(); void stopApplicationLauncher(); - void connectionErrorOccurred(QDebugSupport::Error socketError); + void connectionErrorOccurred(QAbstractSocket::SocketError socketError); + void connectionStateChanged(QAbstractSocket::SocketState socketState); + void clientStateChanged(QmlDebug::QmlDebugClient::State state); void checkConnectionState(); void showConnectionStateMessage(const QString &message); - void showConnectionErrorMessage(const QString &message); bool isConnected() const; private: diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp index 341686c09e..94db8be901 100644 --- a/src/plugins/debugger/qml/qmlinspectoragent.cpp +++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp @@ -714,7 +714,7 @@ void QmlInspectorAgent::clientStateChanged(QmlDebugClient::State state) float version = 0; if (QmlDebugClient *client = qobject_cast<QmlDebugClient*>(sender())) { serviceName = client->name(); - version = client->remoteVersion(); + version = client->serviceVersion(); } m_qmlEngine->logServiceStateChange(serviceName, version, state); diff --git a/src/plugins/debugger/qml/qmlinspectoragent.h b/src/plugins/debugger/qml/qmlinspectoragent.h index 1bbf379908..ca2ed98ba1 100644 --- a/src/plugins/debugger/qml/qmlinspectoragent.h +++ b/src/plugins/debugger/qml/qmlinspectoragent.h @@ -38,7 +38,6 @@ #include <coreplugin/icontext.h> #include <debugger/debuggerconstants.h> #include <qmldebug/baseenginedebugclient.h> -#include <qmldebug/qmldebugclient.h> namespace QmlDebug { class BaseEngineDebugClient; diff --git a/src/plugins/designer/resourcehandler.cpp b/src/plugins/designer/resourcehandler.cpp index 7763e819e8..c629e2d14c 100644 --- a/src/plugins/designer/resourcehandler.cpp +++ b/src/plugins/designer/resourcehandler.cpp @@ -74,10 +74,10 @@ void QrcFilesVisitor::visitFolderNode(FolderNode *folderNode) { foreach (const FileNode *fileNode, folderNode->fileNodes()) { if (fileNode->fileType() == ResourceType) - m_qrcFiles.append(fileNode->path().toString()); + m_qrcFiles.append(fileNode->filePath().toString()); } if (dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(folderNode)) - m_qrcFiles.append(folderNode->path().toString()); + m_qrcFiles.append(folderNode->filePath().toString()); } // ------------ ResourceHandler @@ -155,7 +155,7 @@ void ResourceHandler::updateResourcesHelper(bool updateProjectResources) m_form->setResourceFileSaveMode(QDesignerFormWindowInterface::SaveOnlyUsedResourceFiles); if (Designer::Constants::Internal::debug) qDebug() << "ResourceHandler::updateResources()" << fileName - << " associated with project" << project->rootProjectNode()->path() + << " associated with project" << project->rootProjectNode()->filePath() << " using project qrc files" << projectQrcFiles.size(); } else { // Use resource file originally used in form diff --git a/src/plugins/diffeditor/diffeditor.cpp b/src/plugins/diffeditor/diffeditor.cpp index f22d191b35..7a9d9d0091 100644 --- a/src/plugins/diffeditor/diffeditor.cpp +++ b/src/plugins/diffeditor/diffeditor.cpp @@ -45,6 +45,7 @@ #include <utils/algorithm.h> #include <utils/fileutils.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QAction> #include <QStackedWidget> @@ -282,16 +283,16 @@ DiffEditor::DiffEditor() m_whitespaceButtonAction = m_toolBar->addAction(tr("Ignore Whitespace")); m_whitespaceButtonAction->setCheckable(true); - m_toggleDescriptionAction = m_toolBar->addAction(QIcon(QLatin1String(Constants::ICON_TOP_BAR)), - QString()); + m_toggleDescriptionAction = m_toolBar->addAction( + Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_TOP_BAR)), QString()); m_toggleDescriptionAction->setCheckable(true); m_reloadAction = m_toolBar->addAction(QIcon(QLatin1String(Core::Constants::ICON_RELOAD_GRAY)), tr("Reload Diff")); m_reloadAction->setToolTip(tr("Reload Diff")); - m_toggleSyncAction = m_toolBar->addAction(QIcon(QLatin1String(Core::Constants::ICON_LINK)), - QString()); + m_toggleSyncAction = m_toolBar->addAction( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_LINK)), QString()); m_toggleSyncAction->setCheckable(true); m_viewSwitcherAction = m_toolBar->addAction(QIcon(), QString()); @@ -377,69 +378,61 @@ QWidget *DiffEditor::toolBar() void DiffEditor::documentHasChanged() { - int index = 0; - { - Guard guard(&m_ignoreChanges); - const QList<FileData> diffFileList = m_document->diffFiles(); - - updateDescription(); - currentView()->setDiff(diffFileList, m_document->baseDirectory()); - - m_entriesComboBox->clear(); - const int count = diffFileList.count(); - for (int i = 0; i < count; i++) { - const DiffFileInfo leftEntry = diffFileList.at(i).leftFileInfo; - const DiffFileInfo rightEntry = diffFileList.at(i).rightFileInfo; - const QString leftShortFileName = Utils::FileName::fromString(leftEntry.fileName).fileName(); - const QString rightShortFileName = Utils::FileName::fromString(rightEntry.fileName).fileName(); - QString itemText; - QString itemToolTip; - if (leftEntry.fileName == rightEntry.fileName) { + Guard guard(&m_ignoreChanges); + const QList<FileData> diffFileList = m_document->diffFiles(); + + updateDescription(); + currentView()->setDiff(diffFileList, m_document->baseDirectory()); + + m_entriesComboBox->clear(); + const int count = diffFileList.count(); + for (int i = 0; i < count; i++) { + const DiffFileInfo leftEntry = diffFileList.at(i).leftFileInfo; + const DiffFileInfo rightEntry = diffFileList.at(i).rightFileInfo; + const QString leftShortFileName = Utils::FileName::fromString(leftEntry.fileName).fileName(); + const QString rightShortFileName = Utils::FileName::fromString(rightEntry.fileName).fileName(); + QString itemText; + QString itemToolTip; + if (leftEntry.fileName == rightEntry.fileName) { + itemText = leftShortFileName; + + if (leftEntry.typeInfo.isEmpty() && rightEntry.typeInfo.isEmpty()) { + itemToolTip = leftEntry.fileName; + } else { + itemToolTip = tr("[%1] vs. [%2] %3") + .arg(leftEntry.typeInfo, + rightEntry.typeInfo, + leftEntry.fileName); + } + } else { + if (leftShortFileName == rightShortFileName) { itemText = leftShortFileName; + } else { + itemText = tr("%1 vs. %2") + .arg(leftShortFileName, + rightShortFileName); + } - if (leftEntry.typeInfo.isEmpty() && rightEntry.typeInfo.isEmpty()) { - itemToolTip = leftEntry.fileName; - } else { - itemToolTip = tr("[%1] vs. [%2] %3") - .arg(leftEntry.typeInfo, - rightEntry.typeInfo, - leftEntry.fileName); - } + if (leftEntry.typeInfo.isEmpty() && rightEntry.typeInfo.isEmpty()) { + itemToolTip = tr("%1 vs. %2") + .arg(leftEntry.fileName, + rightEntry.fileName); } else { - if (leftShortFileName == rightShortFileName) { - itemText = leftShortFileName; - } else { - itemText = tr("%1 vs. %2") - .arg(leftShortFileName, - rightShortFileName); - } - - if (leftEntry.typeInfo.isEmpty() && rightEntry.typeInfo.isEmpty()) { - itemToolTip = tr("%1 vs. %2") - .arg(leftEntry.fileName, - rightEntry.fileName); - } else { - itemToolTip = tr("[%1] %2 vs. [%3] %4") - .arg(leftEntry.typeInfo, - leftEntry.fileName, - rightEntry.typeInfo, - rightEntry.fileName); - } + itemToolTip = tr("[%1] %2 vs. [%3] %4") + .arg(leftEntry.typeInfo, + leftEntry.fileName, + rightEntry.typeInfo, + rightEntry.fileName); } - if (m_currentFileChunk.first == leftEntry.fileName - && m_currentFileChunk.second == rightEntry.fileName) - index = i; - m_entriesComboBox->addItem(itemText); - m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, - leftEntry.fileName, Qt::UserRole); - m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, - rightEntry.fileName, Qt::UserRole + 1); - m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, - itemToolTip, Qt::ToolTipRole); } + m_entriesComboBox->addItem(itemText); + m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, + leftEntry.fileName, Qt::UserRole); + m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, + rightEntry.fileName, Qt::UserRole + 1); + m_entriesComboBox->setItemData(m_entriesComboBox->count() - 1, + itemToolTip, Qt::ToolTipRole); } - - setCurrentDiffFileIndex(m_entriesComboBox->count() > 0 ? index : -1); } void DiffEditor::toggleDescription() @@ -520,9 +513,28 @@ void DiffEditor::reloadHasFinished(bool success) if (!currentView()) return; - m_currentFileChunk = qMakePair(QString(), QString()); - currentView()->endOperation(success); + + int index = -1; + const QString startupFile = m_document->startupFile(); + const QList<FileData> diffFileList = m_document->diffFiles(); + const int count = diffFileList.count(); + for (int i = 0; i < count; i++) { + const DiffFileInfo leftEntry = diffFileList.at(i).leftFileInfo; + const DiffFileInfo rightEntry = diffFileList.at(i).rightFileInfo; + if ((m_currentFileChunk.first.isEmpty() + && m_currentFileChunk.second.isEmpty() + && startupFile.endsWith(rightEntry.fileName)) + || (m_currentFileChunk.first == leftEntry.fileName + && m_currentFileChunk.second == rightEntry.fileName)) { + index = i; + break; + } + } + + m_currentFileChunk = qMakePair(QString(), QString()); + if (index >= 0) + setCurrentDiffFileIndex(index); } void DiffEditor::updateEntryToolTip() diff --git a/src/plugins/diffeditor/diffeditor.h b/src/plugins/diffeditor/diffeditor.h index 5011ee2163..cd3971136c 100644 --- a/src/plugins/diffeditor/diffeditor.h +++ b/src/plugins/diffeditor/diffeditor.h @@ -66,7 +66,10 @@ public: Core::IDocument *document() override; QWidget *toolBar() override; -private slots: +private: + DiffEditor(); + void setDocument(QSharedPointer<DiffEditorDocument> doc); + void documentHasChanged(); void toggleDescription(); void updateDescription(); @@ -79,10 +82,6 @@ private slots: void toggleSync(); -private: - DiffEditor(); - void setDocument(QSharedPointer<DiffEditorDocument> doc); - IDiffView *loadSettings(); void saveSetting(const QString &key, const QVariant &value) const; void updateEntryToolTip(); diff --git a/src/plugins/diffeditor/diffeditorcontroller.cpp b/src/plugins/diffeditor/diffeditorcontroller.cpp index 3ed6033315..e805e84570 100644 --- a/src/plugins/diffeditor/diffeditorcontroller.cpp +++ b/src/plugins/diffeditor/diffeditorcontroller.cpp @@ -100,9 +100,10 @@ DiffEditorController *DiffEditorController::controller(Core::IDocument *document } void DiffEditorController::setDiffFiles(const QList<FileData> &diffFileList, - const QString &workingDirectory) + const QString &workingDirectory, + const QString &startupFile) { - m_document->setDiffFiles(diffFileList, workingDirectory); + m_document->setDiffFiles(diffFileList, workingDirectory, startupFile); } void DiffEditorController::setDescription(const QString &description) @@ -169,6 +170,11 @@ void DiffEditorController::forceContextLineCount(int lines) m_document->forceContextLineCount(lines); } +Core::IDocument *DiffEditorController::document() const +{ + return m_document; +} + /** * @brief Request the diff data to be re-read. */ diff --git a/src/plugins/diffeditor/diffeditorcontroller.h b/src/plugins/diffeditor/diffeditorcontroller.h index db1812fc2a..69a8894643 100644 --- a/src/plugins/diffeditor/diffeditorcontroller.h +++ b/src/plugins/diffeditor/diffeditorcontroller.h @@ -79,9 +79,11 @@ protected: virtual void reloadFinished(bool success); void setDiffFiles(const QList<FileData> &diffFileList, - const QString &baseDirectory = QString()); + const QString &baseDirectory = QString(), + const QString &startupFile = QString()); void setDescription(const QString &description); void forceContextLineCount(int lines); + Core::IDocument *document() const; private: void requestMoreInformation(); diff --git a/src/plugins/diffeditor/diffeditordocument.cpp b/src/plugins/diffeditor/diffeditordocument.cpp index d9a120c77b..74e048517a 100644 --- a/src/plugins/diffeditor/diffeditordocument.cpp +++ b/src/plugins/diffeditor/diffeditordocument.cpp @@ -122,10 +122,12 @@ QString DiffEditorDocument::makePatch(int fileIndex, int chunkIndex, bool revert lastChunk && fileData.lastChunkAtTheEndOfFile); } -void DiffEditorDocument::setDiffFiles(const QList<FileData> &data, const QString &directory) +void DiffEditorDocument::setDiffFiles(const QList<FileData> &data, const QString &directory, + const QString &startupFile) { m_diffFiles = data; m_baseDirectory = directory; + m_startupFile = startupFile; emit documentChanged(); } @@ -139,6 +141,11 @@ QString DiffEditorDocument::baseDirectory() const return m_baseDirectory; } +QString DiffEditorDocument::startupFile() const +{ + return m_startupFile; +} + void DiffEditorDocument::setDescription(const QString &description) { if (m_description == description) diff --git a/src/plugins/diffeditor/diffeditordocument.h b/src/plugins/diffeditor/diffeditordocument.h index 0f73c42a7b..f8b49a05a7 100644 --- a/src/plugins/diffeditor/diffeditordocument.h +++ b/src/plugins/diffeditor/diffeditordocument.h @@ -54,9 +54,11 @@ public: QString makePatch(int fileIndex, int chunkIndex, bool revert, bool addPrefix = false) const; - void setDiffFiles(const QList<FileData> &data, const QString &directory); + void setDiffFiles(const QList<FileData> &data, const QString &directory, + const QString &startupFile = QString()); QList<FileData> diffFiles() const; QString baseDirectory() const; + QString startupFile() const; void setDescription(const QString &description); QString description() const; @@ -99,6 +101,7 @@ private: DiffEditorController *m_controller; QList<FileData> m_diffFiles; QString m_baseDirectory; + QString m_startupFile; QString m_description; int m_contextLineCount; bool m_isContextLineCountForced; diff --git a/src/plugins/diffeditor/diffview.cpp b/src/plugins/diffeditor/diffview.cpp index 98e75f2ce2..bb70085c90 100644 --- a/src/plugins/diffeditor/diffview.cpp +++ b/src/plugins/diffeditor/diffview.cpp @@ -34,6 +34,7 @@ #include "sidebysidediffeditorwidget.h" #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QCoreApplication> @@ -96,7 +97,8 @@ void IDiffView::setSyncToolTip(const QString &text) UnifiedView::UnifiedView() : m_widget(0) { setId(UNIFIED_VIEW_ID); - setIcon(QIcon(QLatin1String(":/diffeditor/images/unifieddiff.png"))); + setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(":/diffeditor/images/unifieddiff.png"))); setToolTip(QCoreApplication::translate("DiffEditor::UnifiedView", "Switch to Unified Diff Editor")); } @@ -152,7 +154,8 @@ void UnifiedView::setSync(bool sync) SideBySideView::SideBySideView() : m_widget(0) { setId(SIDE_BY_SIDE_VIEW_ID); - setIcon(QIcon(QLatin1String(":/diffeditor/images/sidebysidediff.png"))); + setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(":/diffeditor/images/sidebysidediff.png"))); setToolTip(QCoreApplication::translate("DiffEditor::SideBySideView", "Switch to Side By Side Diff Editor")); setSupportsSync(true); diff --git a/src/plugins/diffeditor/images/sidebysidediff.png b/src/plugins/diffeditor/images/sidebysidediff.png Binary files differindex f0b2e45844..21dfa6a0a5 100644 --- a/src/plugins/diffeditor/images/sidebysidediff.png +++ b/src/plugins/diffeditor/images/sidebysidediff.png diff --git a/src/plugins/diffeditor/images/sidebysidediff@2x.png b/src/plugins/diffeditor/images/sidebysidediff@2x.png Binary files differindex 41476fffcd..d45d1b8d68 100644 --- a/src/plugins/diffeditor/images/sidebysidediff@2x.png +++ b/src/plugins/diffeditor/images/sidebysidediff@2x.png diff --git a/src/plugins/diffeditor/images/topbar.png b/src/plugins/diffeditor/images/topbar.png Binary files differindex 7a15c16cab..1ba7235dea 100644 --- a/src/plugins/diffeditor/images/topbar.png +++ b/src/plugins/diffeditor/images/topbar.png diff --git a/src/plugins/diffeditor/images/topbar@2x.png b/src/plugins/diffeditor/images/topbar@2x.png Binary files differindex 3a1c15c1bc..894bcbf587 100644 --- a/src/plugins/diffeditor/images/topbar@2x.png +++ b/src/plugins/diffeditor/images/topbar@2x.png diff --git a/src/plugins/diffeditor/images/unifieddiff.png b/src/plugins/diffeditor/images/unifieddiff.png Binary files differindex 70975187e9..ff989cd5d2 100644 --- a/src/plugins/diffeditor/images/unifieddiff.png +++ b/src/plugins/diffeditor/images/unifieddiff.png diff --git a/src/plugins/diffeditor/images/unifieddiff@2x.png b/src/plugins/diffeditor/images/unifieddiff@2x.png Binary files differindex bd7826f4e1..671f47dd55 100644 --- a/src/plugins/diffeditor/images/unifieddiff@2x.png +++ b/src/plugins/diffeditor/images/unifieddiff@2x.png diff --git a/src/plugins/genericprojectmanager/filesselectionwizardpage.cpp b/src/plugins/genericprojectmanager/filesselectionwizardpage.cpp index da5b17e19d..aadd5e33ef 100644 --- a/src/plugins/genericprojectmanager/filesselectionwizardpage.cpp +++ b/src/plugins/genericprojectmanager/filesselectionwizardpage.cpp @@ -126,7 +126,7 @@ void FilesSelectionWizardPage::initializePage() this, &FilesSelectionWizardPage::parsingProgress); connect(m_model, &ProjectExplorer::SelectableFilesModel::parsingFinished, this, &FilesSelectionWizardPage::parsingFinished); - m_model->startParsing(m_genericProjectWizardDialog->path()); + m_model->startParsing(Utils::FileName::fromString(m_genericProjectWizardDialog->path())); m_hideFilesFilterLabel->setVisible(false); m_hideFilesfilterLineEdit->setVisible(false); @@ -145,9 +145,9 @@ void FilesSelectionWizardPage::cleanupPage() m_model->cancel(); } -void FilesSelectionWizardPage::parsingProgress(const QString &text) +void FilesSelectionWizardPage::parsingProgress(const Utils::FileName &text) { - m_label->setText(tr("Generating file list...\n\n%1").arg(text)); + m_label->setText(tr("Generating file list...\n\n%1").arg(text.toUserOutput())); } void FilesSelectionWizardPage::parsingFinished() @@ -175,14 +175,14 @@ bool FilesSelectionWizardPage::isComplete() const return m_finished; } -QStringList FilesSelectionWizardPage::selectedPaths() const +Utils::FileNameList FilesSelectionWizardPage::selectedPaths() const { - return m_model ? m_model->selectedPaths() : QStringList(); + return m_model ? m_model->selectedPaths() : Utils::FileNameList(); } -QStringList FilesSelectionWizardPage::selectedFiles() const +Utils::FileNameList FilesSelectionWizardPage::selectedFiles() const { - return m_model ? m_model->selectedFiles() : QStringList(); + return m_model ? m_model->selectedFiles() : Utils::FileNameList(); } void FilesSelectionWizardPage::applyFilter() diff --git a/src/plugins/genericprojectmanager/filesselectionwizardpage.h b/src/plugins/genericprojectmanager/filesselectionwizardpage.h index f3c8c2f30c..e130f28f93 100644 --- a/src/plugins/genericprojectmanager/filesselectionwizardpage.h +++ b/src/plugins/genericprojectmanager/filesselectionwizardpage.h @@ -33,6 +33,8 @@ #include <QWizardPage> +#include <utils/fileutils.h> + QT_BEGIN_NAMESPACE class QVBoxLayout; class QLabel; @@ -56,12 +58,12 @@ public: bool isComplete() const; void initializePage(); void cleanupPage(); - QStringList selectedFiles() const; - QStringList selectedPaths() const; + Utils::FileNameList selectedFiles() const; + Utils::FileNameList selectedPaths() const; private slots: void applyFilter(); - void parsingProgress(const QString &text); + void parsingProgress(const Utils::FileName &text); void parsingFinished(); private: diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 1235c8ed0b..100c6328a7 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -94,11 +94,7 @@ void GenericMakeStep::ctor() GENERIC_MS_DISPLAY_NAME)); } -GenericMakeStep::~GenericMakeStep() -{ -} - -bool GenericMakeStep::init() +bool GenericMakeStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); if (!bc) @@ -138,7 +134,7 @@ bool GenericMakeStep::init() appendOutputParser(parser); outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void GenericMakeStep::setClean(bool clean) diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h index 5a14a610e1..6d7ba70170 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.h +++ b/src/plugins/genericprojectmanager/genericmakestep.h @@ -52,14 +52,13 @@ class GenericMakeStep : public ProjectExplorer::AbstractProcessStep friend class GenericMakeStepFactory; public: - GenericMakeStep(ProjectExplorer::BuildStepList *parent); - ~GenericMakeStep(); + explicit GenericMakeStep(ProjectExplorer::BuildStepList *parent); - bool init(); - void run(QFutureInterface<bool> &fi); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; bool buildsTarget(const QString &target) const; void setBuildTarget(const QString &target, bool on); QString allArguments() const; @@ -68,12 +67,12 @@ public: void setClean(bool clean); bool isClean() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; protected: GenericMakeStep(ProjectExplorer::BuildStepList *parent, GenericMakeStep *bs); GenericMakeStep(ProjectExplorer::BuildStepList *parent, Core::Id id); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index aad57fd874..d9c561a54f 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -93,7 +93,7 @@ GenericProject::GenericProject(Manager *manager, const QString &fileName) DocumentManager::addDocument(m_includesIDocument); DocumentManager::addDocument(m_configIDocument); - m_rootNode = new GenericProjectNode(this, m_creatorIDocument); + m_rootNode = new GenericProjectNode(this); FileNode *projectFilesNode = new FileNode(Utils::FileName::fromString(m_filesFileName), ProjectFileType, diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 6afe039d02..6683c7443e 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -42,22 +42,11 @@ using namespace ProjectExplorer; namespace GenericProjectManager { namespace Internal { -GenericProjectNode::GenericProjectNode(GenericProject *project, Core::IDocument *projectFile) - : ProjectNode(projectFile->filePath()) +GenericProjectNode::GenericProjectNode(GenericProject *project) + : ProjectNode(project->projectFilePath()) , m_project(project) - , m_projectFile(projectFile) { - setDisplayName(projectFile->filePath().toFileInfo().completeBaseName()); -} - -Core::IDocument *GenericProjectNode::projectFile() const -{ - return m_projectFile; -} - -QString GenericProjectNode::projectFilePath() const -{ - return m_projectFile->filePath().toString(); + setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); } QHash<QString, QStringList> sortFilesIntoPaths(const QString &base, const QSet<QString> &files) @@ -107,7 +96,7 @@ void GenericProjectNode::refresh(QSet<QString> oldFileList) QSet<QString> added = newFileList; added.subtract(oldFileList); - QString baseDir = path().toFileInfo().absolutePath(); + QString baseDir = filePath().toFileInfo().absolutePath(); FilesInPathHash filesInPaths = sortFilesIntoPaths(baseDir, added); FilesInPathHashConstIt cend = filesInPaths.constEnd(); @@ -145,7 +134,7 @@ void GenericProjectNode::refresh(QSet<QString> oldFileList) QList<FileNode *> fileNodes; foreach (const QString &file, it.value()) { foreach (FileNode *fn, folder->fileNodes()) { - if (fn->path().toString() == file) + if (fn->filePath().toString() == file) fileNodes.append(fn); } } @@ -180,7 +169,7 @@ FolderNode *GenericProjectNode::createFolderByName(const QStringList &components const QString component = components.at(end - 1); - const Utils::FileName folderPath = path().parentDir().appendPath(folderName); + const Utils::FileName folderPath = filePath().parentDir().appendPath(folderName); FolderNode *folder = new FolderNode(folderPath); folder->setDisplayName(component); @@ -208,9 +197,9 @@ FolderNode *GenericProjectNode::findFolderByName(const QStringList &components, if (!parent) return 0; - const QString baseDir = path().toFileInfo().path(); + const QString baseDir = filePath().toFileInfo().path(); foreach (FolderNode *fn, parent->subFolderNodes()) { - if (fn->path().toString() == baseDir + QLatin1Char('/') + folderName) + if (fn->filePath().toString() == baseDir + QLatin1Char('/') + folderName) return fn; } return 0; diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index 9256c80d49..a9857f8f3d 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -47,18 +47,15 @@ class GenericProject; class GenericProjectNode : public ProjectExplorer::ProjectNode { public: - GenericProjectNode(GenericProject *project, Core::IDocument *projectFile); + GenericProjectNode(GenericProject *project); - Core::IDocument *projectFile() const; - QString projectFilePath() const; + bool showInSimpleTree() const override; - bool showInSimpleTree() const; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - - bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); - bool renameFile(const QString &filePath, const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; void refresh(QSet<QString> oldFileList = QSet<QString>()); @@ -70,7 +67,6 @@ private: private: GenericProject *m_project; - Core::IDocument *m_projectFile; }; } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericprojectplugin.cpp b/src/plugins/genericprojectmanager/genericprojectplugin.cpp index f3c249877c..32ed375fe4 100644 --- a/src/plugins/genericprojectmanager/genericprojectplugin.cpp +++ b/src/plugins/genericprojectmanager/genericprojectplugin.cpp @@ -47,6 +47,8 @@ #include <projectexplorer/projecttree.h> #include <projectexplorer/selectablefilesmodel.h> +#include <utils/algorithm.h> +#include <utils/fileutils.h> #include <utils/mimetypes/mimedatabase.h> #include <QtPlugin> @@ -89,10 +91,11 @@ void GenericProjectPlugin::editFiles() auto genericProject = qobject_cast<GenericProject *>(ProjectTree::currentProject()); if (!genericProject) return; - SelectableFilesDialogEditFiles sfd(genericProject->projectFilePath().toFileInfo().path(), genericProject->files(), - ICore::mainWindow()); + SelectableFilesDialogEditFiles sfd(genericProject->projectFilePath(), + Utils::transform(genericProject->files(), [](const QString &f) { return Utils::FileName::fromString(f); }), + ICore::mainWindow()); if (sfd.exec() == QDialog::Accepted) - genericProject->setFiles(sfd.selectedFiles()); + genericProject->setFiles(Utils::transform(sfd.selectedFiles(), &Utils::FileName::toString)); } } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp index 647757ab7d..f0bf10d347 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp +++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp @@ -35,6 +35,8 @@ #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/customwizard/customwizard.h> +#include <utils/algorithm.h> +#include <utils/fileutils.h> #include <utils/filewizardpage.h> #include <utils/mimetypes/mimedatabase.h> @@ -84,12 +86,12 @@ QString GenericProjectWizardDialog::path() const return m_firstPage->path(); } -QStringList GenericProjectWizardDialog::selectedPaths() const +Utils::FileNameList GenericProjectWizardDialog::selectedPaths() const { return m_secondPage->selectedPaths(); } -QStringList GenericProjectWizardDialog::selectedFiles() const +Utils::FileNameList GenericProjectWizardDialog::selectedFiles() const { return m_secondPage->selectedFiles(); } @@ -156,7 +158,7 @@ Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w, const QString filesFileName = QFileInfo(dir, projectName + QLatin1String(".files")).absoluteFilePath(); const QString includesFileName = QFileInfo(dir, projectName + QLatin1String(".includes")).absoluteFilePath(); const QString configFileName = QFileInfo(dir, projectName + QLatin1String(".config")).absoluteFilePath(); - const QStringList paths = wizard->selectedPaths(); + const QStringList paths = Utils::transform(wizard->selectedPaths(), &Utils::FileName::toString); Utils::MimeDatabase mdb; Utils::MimeType headerTy = mdb.mimeTypeForName(QLatin1String("text/x-chdr")); @@ -180,7 +182,7 @@ Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w, generatedCreatorFile.setContents(QLatin1String("[General]\n")); generatedCreatorFile.setAttributes(Core::GeneratedFile::OpenProjectAttribute); - QStringList sources = wizard->selectedFiles(); + QStringList sources = Utils::transform(wizard->selectedFiles(), &Utils::FileName::toString); for (int i = 0; i < sources.length(); ++i) sources[i] = dir.relativeFilePath(sources[i]); diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.h b/src/plugins/genericprojectmanager/genericprojectwizard.h index 716cab87f5..ff9036cbb3 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.h +++ b/src/plugins/genericprojectmanager/genericprojectwizard.h @@ -33,6 +33,7 @@ #include <coreplugin/basefilewizard.h> #include <coreplugin/basefilewizardfactory.h> +#include <utils/fileutils.h> #include <utils/wizard.h> namespace Utils { class FileWizardPage; } @@ -51,8 +52,8 @@ public: QString path() const; void setPath(const QString &path); - QStringList selectedFiles() const; - QStringList selectedPaths() const; + Utils::FileNameList selectedFiles() const; + Utils::FileNameList selectedPaths() const; QString projectName() const; diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 79af79a287..819f152dbe 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -126,7 +126,7 @@ private slots: virtual void processOutput(const QString &output); protected: - void processDiff(const QString &output); + void processDiff(const QString &output, const QString &startupFile = QString()); QStringList addConfigurationArguments(const QStringList &args) const; GitClient *gitClient() const; QStringList addHeadWhenCommandInProgress() const; @@ -171,13 +171,13 @@ void BaseController::runCommand(const QList<QStringList> &args, QTextCodec *code m_command->execute(); } -void BaseController::processDiff(const QString &output) +void BaseController::processDiff(const QString &output, const QString &startupFile) { m_command.clear(); bool ok; QList<FileData> fileDataList = DiffUtils::readPatch(output, &ok); - setDiffFiles(fileDataList, m_directory); + setDiffFiles(fileDataList, m_directory, startupFile); } QStringList BaseController::addConfigurationArguments(const QStringList &args) const @@ -381,11 +381,10 @@ void ShowController::reload() void ShowController::processOutput(const QString &output) { QTC_ASSERT(m_state != Idle, return); - if (m_state == GettingDescription) { + if (m_state == GettingDescription) setDescription(gitClient()->extendedShowDescription(m_directory, output)); - } else if (m_state == GettingDiff) { - processDiff(output); - } + else if (m_state == GettingDiff) + processDiff(output, VcsBasePlugin::source(document())); } void ShowController::reloadFinished(bool success) diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 1aba1fe9a1..7010b37128 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -199,30 +199,41 @@ ParameterAction *GitPlugin::createParameterAction(ActionContainer *ac, QAction *GitPlugin::createFileAction(ActionContainer *ac, const QString &defaultText, const QString ¶meterText, Id id, const Context &context, bool addToLocator, - const char *pluginSlot, const QKeySequence &keys) + const std::function<void()> &callback, + const QKeySequence &keys) { ParameterAction *action = createParameterAction(ac, defaultText, parameterText, id, context, addToLocator, keys); m_fileActions.push_back(action); - connect(action, SIGNAL(triggered()), this, pluginSlot); + connect(action, &QAction::triggered, this, callback); return action; } -// Create an action to act on a project with slot. -QAction *GitPlugin::createProjectAction(ActionContainer *ac, - const QString &defaultText, const QString ¶meterText, - Id id, const Context &context, bool addToLocator, - const char *pluginSlot, const QKeySequence &keys) +QAction *GitPlugin::createFileAction(ActionContainer *ac, const QString &defaultText, + const QString ¶meterText, Id id, const Context &context, + bool addToLocator, void (GitPlugin::*func)(), + const QKeySequence &keys) { - ParameterAction *action = createParameterAction(ac, defaultText, parameterText, id, context, addToLocator, keys); + return createFileAction(ac, defaultText, parameterText, id, context, addToLocator, + [this, func]() { return (this->*func)(); }, keys); +} + +QAction *GitPlugin::createProjectAction(ActionContainer *ac, const QString &defaultText, + const QString ¶meterText, Id id, const Context &context, + bool addToLocator, void (GitPlugin::*func)(), + const QKeySequence &keys) +{ + ParameterAction *action = createParameterAction(ac, defaultText, parameterText, id, context, + addToLocator, keys); m_projectActions.push_back(action); - connect(action, SIGNAL(triggered()), this, pluginSlot); + connect(action, &QAction::triggered, this, [this, func]() { return (this->*func)(); }); return action; } -// Create an action to act on the repository +// Create an action to act on the repository with slot QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, const QString &text, Id id, const Context &context, bool addToLocator, + const std::function<void()> &callback, const QKeySequence &keys) { auto action = new QAction(text, this); @@ -234,16 +245,6 @@ QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, m_repositoryActions.push_back(action); if (addToLocator) m_commandLocator->appendCommand(command); - return action; -} - -// Create an action to act on the repository with slot -QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, - const QString &text, Id id, - const Context &context, bool addToLocator, - const std::function<void()> &callback, const QKeySequence &keys) -{ - QAction *action = createRepositoryAction(ac, text, id, context, addToLocator, keys); connect(action, &QAction::triggered, this, callback); return action; } @@ -251,12 +252,10 @@ QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, QAction *GitPlugin::createChangeRelatedRepositoryAction(ActionContainer *ac, const QString &text, Id id, const Context &context, bool addToLocator, - const std::function<void(Id)> &callback, const QKeySequence &keys) { - QAction *action = createRepositoryAction(ac, text, id, context, addToLocator, keys); - connect(action, &QAction::triggered, this, [callback, id] { callback(id); }); - return action; + return createRepositoryAction(ac, text, id, context, addToLocator, + [this, id] { startChangeRelatedAction(id); }, keys); } // Action to act on the repository forwarded to a git client member function @@ -266,13 +265,12 @@ QAction *GitPlugin::createRepositoryAction(ActionContainer *ac, const Context &context, bool addToLocator, GitClientMemberFunc func, const QKeySequence &keys) { - // Set the member func as data and connect to generic slot - QAction *action = createRepositoryAction(ac, text, id, context, addToLocator, keys); - connect(action, &QAction::triggered, [this, func]() -> void { + auto cb = [this, func]() -> void { QTC_ASSERT(currentState().hasTopLevel(), return); (m_gitClient->*func)(currentState().topLevel()); - }); - return action; + }; + // Set the member func as data and connect to generic slot + return createRepositoryAction(ac, text, id, context, addToLocator, cb, keys); } bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) @@ -317,33 +315,33 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) gitContainer->addMenu(currentFileMenu); createFileAction(currentFileMenu, tr("Diff Current File"), tr("Diff of \"%1\""), - "Git.Diff", context, true, SLOT(diffCurrentFile()), + "Git.Diff", context, true, &GitPlugin::diffCurrentFile, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+D") : tr("Alt+G,Alt+D"))); createFileAction(currentFileMenu, tr("Log Current File"), tr("Log of \"%1\""), - "Git.Log", context, true, SLOT(logFile()), + "Git.Log", context, true, &GitPlugin::logFile, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+L") : tr("Alt+G,Alt+L"))); createFileAction(currentFileMenu, tr("Blame Current File"), tr("Blame for \"%1\""), - "Git.Blame", context, true, SLOT(blameFile()), + "Git.Blame", context, true, &GitPlugin::blameFile, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+B") : tr("Alt+G,Alt+B"))); currentFileMenu->addSeparator(context); createFileAction(currentFileMenu, tr("Stage File for Commit"), tr("Stage \"%1\" for Commit"), - "Git.Stage", context, true, SLOT(stageFile()), + "Git.Stage", context, true, &GitPlugin::stageFile, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+A") : tr("Alt+G,Alt+A"))); createFileAction(currentFileMenu, tr("Unstage File from Commit"), tr("Unstage \"%1\" from Commit"), - "Git.Unstage", context, true, SLOT(unstageFile())); + "Git.Unstage", context, true, &GitPlugin::unstageFile); createFileAction(currentFileMenu, tr("Undo Unstaged Changes"), tr("Undo Unstaged Changes for \"%1\""), "Git.UndoUnstaged", context, - true, SLOT(undoUnstagedFileChanges())); + true, [this]() { return undoFileChanges(false); }); createFileAction(currentFileMenu, tr("Undo Uncommitted Changes"), tr("Undo Uncommitted Changes for \"%1\""), "Git.Undo", context, - true, SLOT(undoFileChanges()), + true, [this]() { return undoFileChanges(true); }, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+U") : tr("Alt+G,Alt+U"))); @@ -353,15 +351,15 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) gitContainer->addMenu(currentProjectMenu); createProjectAction(currentProjectMenu, tr("Diff Current Project"), tr("Diff Project \"%1\""), - "Git.DiffProject", context, true, SLOT(diffCurrentProject()), + "Git.DiffProject", context, true, &GitPlugin::diffCurrentProject, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+Shift+D") : tr("Alt+G,Alt+Shift+D"))); createProjectAction(currentProjectMenu, tr("Log Project"), tr("Log Project \"%1\""), - "Git.LogProject", context, true, SLOT(logProject()), + "Git.LogProject", context, true, &GitPlugin::logProject, QKeySequence(UseMacShortcuts ? tr("Meta+G,Meta+K") : tr("Alt+G,Alt+K"))); createProjectAction(currentProjectMenu, tr("Clean Project..."), tr("Clean Project \"%1\"..."), - "Git.CleanProject", context, true, SLOT(cleanProject())); + "Git.CleanProject", context, true, &GitPlugin::cleanProject); /* "Local Repository" menu */ @@ -557,18 +555,17 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) // -------------- /* Actions only in locator */ - const auto startChangeRelated = [this](Id id) { startChangeRelatedAction(id); }; createChangeRelatedRepositoryAction(0, tr("Show..."), "Git.Show", - context, true, startChangeRelated); + context, true); createChangeRelatedRepositoryAction(0, tr("Revert..."), "Git.Revert", - context, true, startChangeRelated); + context, true); createChangeRelatedRepositoryAction(0, tr("Cherry Pick..."), "Git.CherryPick", - context, true, startChangeRelated); + context, true); createChangeRelatedRepositoryAction(0, tr("Checkout..."), "Git.Checkout", - context, true, startChangeRelated); + context, true); createRepositoryAction(0, tr("Rebase..."), "Git.Rebase", context, true, [this] { branchList(); }); @@ -590,10 +587,10 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage) context, true, &GitClient::launchGitK); createFileAction(gitToolsMenu, tr("Gitk Current File"), tr("Gitk of \"%1\""), - "Git.GitkFile", context, true, SLOT(gitkForCurrentFile())); + "Git.GitkFile", context, true, &GitPlugin::gitkForCurrentFile); createFileAction(gitToolsMenu, tr("Gitk for folder of Current File"), tr("Gitk for folder of \"%1\""), - "Git.GitkFolder", context, true, SLOT(gitkForCurrentFolder())); + "Git.GitkFolder", context, true, &GitPlugin::gitkForCurrentFolder); // -------------- gitToolsMenu->addSeparator(context); @@ -746,11 +743,6 @@ void GitPlugin::undoFileChanges(bool revertStaging) m_gitClient->revert(QStringList(state.currentFile()), revertStaging); } -void GitPlugin::undoUnstagedFileChanges() -{ - undoFileChanges(false); -} - class ResetItemDelegate : public LogItemDelegate { public: diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h index 00daf83cfe..edd05b3bd0 100644 --- a/src/plugins/git/gitplugin.h +++ b/src/plugins/git/gitplugin.h @@ -108,8 +108,7 @@ private slots: void logProject(); void logRepository(); void reflogRepository(); - void undoFileChanges(bool revertStaging = true); - void undoUnstagedFileChanges(); + void undoFileChanges(bool revertStaging); void resetRepository(); void startRebase(); void startChangeRelatedAction(const Core::Id &id); @@ -161,24 +160,20 @@ private: QAction *createFileAction(Core::ActionContainer *ac, const QString &defaultText, const QString ¶meterText, Core::Id id, const Core::Context &context, bool addToLocator, - const char *pluginSlot, + const std::function<void()> &callback, + const QKeySequence &keys = QKeySequence()); + QAction *createFileAction(Core::ActionContainer *ac, + const QString &defaultText, const QString ¶meterText, + Core::Id id, const Core::Context &context, bool addToLocator, + void (GitPlugin::*func)(), const QKeySequence &keys = QKeySequence()); QAction *createProjectAction(Core::ActionContainer *ac, const QString &defaultText, const QString ¶meterText, Core::Id id, const Core::Context &context, bool addToLocator, + void (GitPlugin::*func)(), const QKeySequence &keys = QKeySequence()); - QAction *createProjectAction(Core::ActionContainer *ac, - const QString &defaultText, const QString ¶meterText, - Core::Id id, const Core::Context &context, bool addToLocator, - const char *pluginSlot, const QKeySequence &keys = QKeySequence()); - - - QAction *createRepositoryAction(Core::ActionContainer *ac, - const QString &text, Core::Id id, - const Core::Context &context, bool addToLocator, - const QKeySequence &keys = QKeySequence()); QAction *createRepositoryAction(Core::ActionContainer *ac, const QString &text, Core::Id id, const Core::Context &context, @@ -187,7 +182,7 @@ private: QAction *createChangeRelatedRepositoryAction(Core::ActionContainer *ac, const QString &text, Core::Id id, const Core::Context &context, - bool addToLocator, const std::function<void(Core::Id)> &callback, + bool addToLocator, const QKeySequence &keys = QKeySequence()); QAction *createRepositoryAction(Core::ActionContainer *ac, const QString &text, Core::Id id, diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index 29750c3554..e0a33d07c0 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -33,7 +33,9 @@ #include "githighlighters.h" #include "logchangedialog.h" +#include <coreplugin/coreconstants.h> #include <utils/completingtextedit.h> +#include <utils/themehelper.h> #include <QRegExpValidator> #include <QTextEdit> @@ -59,7 +61,11 @@ GitSubmitEditorWidget::GitSubmitEditorWidget() : new GitSubmitHighlighter(descriptionEdit()); m_emailValidator = new QRegExpValidator(QRegExp(QLatin1String("[^@ ]+@[^@ ]+\\.[a-zA-Z]+")), this); + const QPixmap error = + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_ERROR)); + m_gitSubmitPanelUi.invalidAuthorLabel->setPixmap(error); m_gitSubmitPanelUi.invalidEmailLabel->setToolTip(tr("Provide a valid email to commit.")); + m_gitSubmitPanelUi.invalidEmailLabel->setPixmap(error); connect(m_gitSubmitPanelUi.authorLineEdit, &QLineEdit::textChanged, this, &GitSubmitEditorWidget::authorInformationChanged); diff --git a/src/plugins/git/gitsubmitpanel.ui b/src/plugins/git/gitsubmitpanel.ui index ce03c47076..f4a05eabd6 100644 --- a/src/plugins/git/gitsubmitpanel.ui +++ b/src/plugins/git/gitsubmitpanel.ui @@ -94,12 +94,6 @@ <height>20</height> </size> </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> </widget> </item> <item row="0" column="3"> @@ -143,12 +137,6 @@ <height>20</height> </size> </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/error.png</pixmap> - </property> </widget> </item> <item row="2" column="1"> @@ -173,8 +161,6 @@ </item> </layout> </widget> - <resources> - <include location="../coreplugin/core.qrc"/> - </resources> + <resources/> <connections/> </ui> diff --git a/src/plugins/help/help.qrc b/src/plugins/help/help.qrc index f3e038b594..f38a578e14 100644 --- a/src/plugins/help/help.qrc +++ b/src/plugins/help/help.qrc @@ -1,9 +1,7 @@ <RCC> - <qresource prefix="/help" > + <qresource prefix="/help"> <file>images/find.png</file> <file>images/book.png</file> - <file>images/previous.png</file> - <file>images/next.png</file> <file>images/home.png</file> <file>images/bookmark.png</file> <file>images/category_help.png</file> diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index 0f6fcbd907..873a8a3c2c 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -52,6 +52,7 @@ #include <texteditor/texteditorconstants.h> #include <utils/qtcassert.h> #include <utils/styledbar.h> +#include <utils/themehelper.h> #include <QCoreApplication> #include <QHBoxLayout> @@ -131,7 +132,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing } if (style != SideBarWidget) { - m_toggleSideBarAction = new QAction(QIcon(QLatin1String(Core::Constants::ICON_TOGGLE_SIDEBAR)), + m_toggleSideBarAction = new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_TOGGLE_SIDEBAR)), QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR), toolBar); m_toggleSideBarAction->setCheckable(true); @@ -168,7 +169,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome); layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd)); - m_backAction = new QAction(QIcon(QLatin1String(":/help/images/previous.png")), + m_backAction = new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_PREV)), tr("Back"), toolBar); connect(m_backAction, &QAction::triggered, this, &HelpWidget::backward); m_backMenu = new QMenu(toolBar); @@ -180,7 +181,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget button->setPopupMode(QToolButton::DelayedPopup); layout->addWidget(button); - m_forwardAction = new QAction(QIcon(QLatin1String(":/help/images/next.png")), + m_forwardAction = new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_NEXT)), tr("Forward"), toolBar); connect(m_forwardAction, &QAction::triggered, this, &HelpWidget::forward); m_forwardMenu = new QMenu(toolBar); @@ -252,7 +253,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget } if (style != ExternalWindow) { - m_closeAction = new QAction(QIcon(QLatin1String(Core::Constants::ICON_BUTTON_CLOSE)), + m_closeAction = new QAction(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_BUTTON_CLOSE)), QString(), toolBar); connect(m_closeAction, SIGNAL(triggered()), this, SIGNAL(closeButtonClicked())); button = new QToolButton; diff --git a/src/plugins/help/images/next.png b/src/plugins/help/images/next.png Binary files differdeleted file mode 100644 index 7700d6fce6..0000000000 --- a/src/plugins/help/images/next.png +++ /dev/null diff --git a/src/plugins/help/images/previous.png b/src/plugins/help/images/previous.png Binary files differdeleted file mode 100644 index 99dc8733c7..0000000000 --- a/src/plugins/help/images/previous.png +++ /dev/null diff --git a/src/plugins/imageviewer/images/fitinscreen.png b/src/plugins/imageviewer/images/fitinscreen.png Binary files differdeleted file mode 100644 index cbe2f31521..0000000000 --- a/src/plugins/imageviewer/images/fitinscreen.png +++ /dev/null diff --git a/src/plugins/imageviewer/images/zoomin.png b/src/plugins/imageviewer/images/zoomin.png Binary files differdeleted file mode 100644 index be8c961df1..0000000000 --- a/src/plugins/imageviewer/images/zoomin.png +++ /dev/null diff --git a/src/plugins/imageviewer/images/zoomout.png b/src/plugins/imageviewer/images/zoomout.png Binary files differdeleted file mode 100644 index 4466844662..0000000000 --- a/src/plugins/imageviewer/images/zoomout.png +++ /dev/null diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp index 2d420a4b76..1614ea3032 100644 --- a/src/plugins/imageviewer/imageviewer.cpp +++ b/src/plugins/imageviewer/imageviewer.cpp @@ -41,6 +41,7 @@ #include <coreplugin/actionmanager/command.h> #include <utils/fileutils.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QMap> #include <QFileInfo> @@ -105,6 +106,12 @@ void ImageViewer::ctor() // toolbar d->toolbar = new QWidget(); d->ui_toolbar.setupUi(d->toolbar); + d->ui_toolbar.toolButtonZoomIn->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_PLUS))); + d->ui_toolbar.toolButtonZoomOut->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_MINUS))); + d->ui_toolbar.toolButtonFitToScreen->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_ZOOM))); // icons update - try to use system theme updateButtonIconByTheme(d->ui_toolbar.toolButtonZoomIn, QLatin1String("zoom-in")); diff --git a/src/plugins/imageviewer/imageviewer.qrc b/src/plugins/imageviewer/imageviewer.qrc index 662722baf7..e39039ade1 100644 --- a/src/plugins/imageviewer/imageviewer.qrc +++ b/src/plugins/imageviewer/imageviewer.qrc @@ -1,9 +1,6 @@ <RCC> <qresource prefix="/imageviewer"> <file>images/outline.png</file> - <file>images/zoomin.png</file> - <file>images/zoomout.png</file> - <file>images/fitinscreen.png</file> <file>images/originalsize.png</file> <file>images/background.png</file> <file>images/pause-small.png</file> diff --git a/src/plugins/imageviewer/imageviewertoolbar.ui b/src/plugins/imageviewer/imageviewertoolbar.ui index df23c185fb..3c673fb871 100644 --- a/src/plugins/imageviewer/imageviewertoolbar.ui +++ b/src/plugins/imageviewer/imageviewertoolbar.ui @@ -56,10 +56,6 @@ <property name="toolTipBase"> <string>Fit to Screen</string> </property> - <property name="icon"> - <iconset resource="imageviewer.qrc"> - <normaloff>:/imageviewer/images/fitinscreen.png</normaloff>:/imageviewer/images/fitinscreen.png</iconset> - </property> <property name="checkable"> <bool>false</bool> </property> @@ -81,10 +77,6 @@ <property name="toolTipBase"> <string>Zoom In</string> </property> - <property name="icon"> - <iconset resource="imageviewer.qrc"> - <normaloff>:/imageviewer/images/zoomin.png</normaloff>:/imageviewer/images/zoomin.png</iconset> - </property> <property name="autoRepeat"> <bool>true</bool> </property> @@ -95,10 +87,6 @@ <property name="toolTipBase"> <string>Zoom Out</string> </property> - <property name="icon"> - <iconset resource="imageviewer.qrc"> - <normaloff>:/imageviewer/images/zoomout.png</normaloff>:/imageviewer/images/zoomout.png</iconset> - </property> <property name="autoRepeat"> <bool>true</bool> </property> @@ -153,7 +141,6 @@ </customwidgets> <resources> <include location="imageviewer.qrc"/> - <include location="../coreplugin/core.qrc"/> </resources> <connections/> </ui> diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp index 3662ad1d30..c508beda39 100644 --- a/src/plugins/ios/iosbuildstep.cpp +++ b/src/plugins/ios/iosbuildstep.cpp @@ -95,11 +95,7 @@ void IosBuildStep::ctor() IOS_BUILD_STEP_DISPLAY_NAME)); } -IosBuildStep::~IosBuildStep() -{ -} - -bool IosBuildStep::init() +bool IosBuildStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); if (!bc) @@ -139,7 +135,7 @@ bool IosBuildStep::init() appendOutputParser(parser); outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void IosBuildStep::setClean(bool clean) diff --git a/src/plugins/ios/iosbuildstep.h b/src/plugins/ios/iosbuildstep.h index 71b3a9e0a4..60105e8e5c 100644 --- a/src/plugins/ios/iosbuildstep.h +++ b/src/plugins/ios/iosbuildstep.h @@ -51,10 +51,9 @@ class IosBuildStep : public ProjectExplorer::AbstractProcessStep friend class IosBuildStepFactory; public: - IosBuildStep(ProjectExplorer::BuildStepList *parent); - ~IosBuildStep(); + explicit IosBuildStep(ProjectExplorer::BuildStepList *parent); - bool init() override; + bool init(QList<const BuildStep *> &earlierSteps) override; void run(QFutureInterface<bool> &fi) override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; diff --git a/src/plugins/ios/iosdeployconfiguration.cpp b/src/plugins/ios/iosdeployconfiguration.cpp index 437275bbfd..72d9d417f1 100644 --- a/src/plugins/ios/iosdeployconfiguration.cpp +++ b/src/plugins/ios/iosdeployconfiguration.cpp @@ -45,6 +45,9 @@ using namespace ProjectExplorer; namespace Ios { namespace Internal { +const char IOS_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.IosDeployConfiguration"; +const char IOS_DC_PREFIX[] = "Qt4ProjectManager.IosDeployConfiguration."; + IosDeployConfiguration::IosDeployConfiguration(Target *parent, Core::Id id) : DeployConfiguration(parent, id) { diff --git a/src/plugins/ios/iosdeployconfiguration.h b/src/plugins/ios/iosdeployconfiguration.h index 1a0df80351..9f0dc01e5e 100644 --- a/src/plugins/ios/iosdeployconfiguration.h +++ b/src/plugins/ios/iosdeployconfiguration.h @@ -35,9 +35,6 @@ namespace Ios { namespace Internal { -const char IOS_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.IosDeployConfiguration"; -const char IOS_DC_PREFIX[] = "Qt4ProjectManager.IosDeployConfiguration."; - class IosDeployConfiguration : public ProjectExplorer::DeployConfiguration { Q_OBJECT diff --git a/src/plugins/ios/iosdeploystep.cpp b/src/plugins/ios/iosdeploystep.cpp index 2ccb229434..e12025f6b1 100644 --- a/src/plugins/ios/iosdeploystep.cpp +++ b/src/plugins/ios/iosdeploystep.cpp @@ -76,8 +76,6 @@ IosDeployStep::IosDeployStep(BuildStepList *parent, ctor(); } -IosDeployStep::~IosDeployStep() { } - void IosDeployStep::ctor() { m_toolHandler = 0; @@ -99,8 +97,9 @@ void IosDeployStep::updateDisplayNames() setDisplayName(tr("Deploy to %1").arg(devName)); } -bool IosDeployStep::init() +bool IosDeployStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); QTC_ASSERT(m_transferStatus == NoTransfer, return false); m_device = DeviceKitInformation::device(target()->kit()); IosRunConfiguration * runConfig = qobject_cast<IosRunConfiguration *>( diff --git a/src/plugins/ios/iosdeploystep.h b/src/plugins/ios/iosdeploystep.h index 76d699943d..3b026c36dc 100644 --- a/src/plugins/ios/iosdeploystep.h +++ b/src/plugins/ios/iosdeploystep.h @@ -64,9 +64,7 @@ public: }; friend class IosDeployStepFactory; - IosDeployStep(ProjectExplorer::BuildStepList *bc); - - ~IosDeployStep(); + explicit IosDeployStep(ProjectExplorer::BuildStepList *bc); bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; @@ -90,7 +88,7 @@ private slots: private: IosDeployStep(ProjectExplorer::BuildStepList *bc, IosDeployStep *other); - bool init() override; + bool init(QList<const BuildStep *> &earlierSteps) override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; bool immutable() const override { return true; } bool runInGuiThread() const override { return true; } diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp index 2b08097d9b..3f68314a2a 100644 --- a/src/plugins/ios/iosdsymbuildstep.cpp +++ b/src/plugins/ios/iosdsymbuildstep.cpp @@ -84,11 +84,7 @@ bool IosPresetBuildStep::completeSetupWithStep(BuildStep *bs) return true; } -IosPresetBuildStep::~IosPresetBuildStep() -{ -} - -bool IosPresetBuildStep::init() +bool IosPresetBuildStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); if (!bc) @@ -115,7 +111,7 @@ bool IosPresetBuildStep::init() if (outputParser()) outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } QVariantMap IosPresetBuildStep::toMap() const diff --git a/src/plugins/ios/iosdsymbuildstep.h b/src/plugins/ios/iosdsymbuildstep.h index c3045404c9..9ca826fe02 100644 --- a/src/plugins/ios/iosdsymbuildstep.h +++ b/src/plugins/ios/iosdsymbuildstep.h @@ -47,9 +47,7 @@ class IosPresetBuildStep : public ProjectExplorer::AbstractProcessStep friend class IosPresetBuildStepFactory; public: - ~IosPresetBuildStep(); - - bool init() override; + bool init(QList<const BuildStep *> &earlierSteps) override; void run(QFutureInterface<bool> &fi) override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp index 8f86962747..caaffafef5 100644 --- a/src/plugins/ios/iosrunconfiguration.cpp +++ b/src/plugins/ios/iosrunconfiguration.cpp @@ -135,7 +135,7 @@ void IosRunConfiguration::deviceChanges() { void IosRunConfiguration::proFileUpdated(QmakeProFileNode *pro, bool success, bool parseInProgress) { - if (m_profilePath != pro->path()) + if (m_profilePath != pro->filePath()) return; m_parseSuccess = success; m_parseInProgress = parseInProgress; diff --git a/src/plugins/ios/iosruncontrol.cpp b/src/plugins/ios/iosruncontrol.cpp index 0b982fa287..b4ce5689fc 100644 --- a/src/plugins/ios/iosruncontrol.cpp +++ b/src/plugins/ios/iosruncontrol.cpp @@ -33,6 +33,7 @@ #include "iosrunconfiguration.h" #include "iosrunner.h" +#include <coreplugin/coreconstants.h> #include <projectexplorer/projectexplorerconstants.h> using namespace ProjectExplorer; @@ -45,7 +46,7 @@ IosRunControl::IosRunControl(IosRunConfiguration *rc) , m_runner(new IosRunner(this, rc, false, QmlDebug::NoQmlDebugServices)) , m_running(false) { - setIcon(QLatin1String(ProjectExplorer::Constants::ICON_DEBUG_SMALL)); + setIcon(QLatin1String(Core::Constants::ICON_DEBUG_START_SMALL)); } IosRunControl::~IosRunControl() diff --git a/src/plugins/ios/iosrunfactories.cpp b/src/plugins/ios/iosrunfactories.cpp index a160e3d53d..94a9f7b0ca 100644 --- a/src/plugins/ios/iosrunfactories.cpp +++ b/src/plugins/ios/iosrunfactories.cpp @@ -135,7 +135,7 @@ QList<RunConfiguration *> IosRunConfigurationFactory::runConfigurationsForNode(T QList<RunConfiguration *> result; foreach (RunConfiguration *rc, t->runConfigurations()) { if (IosRunConfiguration *qt4c = qobject_cast<IosRunConfiguration *>(rc)) { - if (qt4c->profilePath() == n->path()) + if (qt4c->profilePath() == n->filePath()) result << rc; } } diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index 914ab37677..603e7d8139 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -82,7 +82,7 @@ QStringList IosRunner::extraArgs() { QStringList res = m_arguments; if (m_qmlPort != 0) - res << QmlDebug::qmlDebugCommandLineArguments(m_qmlDebugServices, m_qmlPort); + res << QmlDebug::qmlDebugTcpArguments(m_qmlDebugServices, m_qmlPort); return res; } diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index 7d3fe5c7db..d4e4fd63df 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -591,9 +591,9 @@ void IosDeviceToolHandlerPrivate::requestTransferApp(const QString &bundlePath, this->bundlePath = bundlePath; this->deviceId = deviceId; QStringList args; - args << QLatin1String("-device-id") << deviceId << QLatin1String("-bundle") - << bundlePath << QLatin1String("-timeout") << QString::number(timeout) - << QLatin1String("-deploy"); + args << QLatin1String("--id") << deviceId << QLatin1String("--bundle") + << bundlePath << QLatin1String("--timeout") << QString::number(timeout) + << QLatin1String("--install"); start(IosToolHandler::iosDeviceToolPath(), args); } @@ -606,18 +606,17 @@ void IosDeviceToolHandlerPrivate::requestRunApp(const QString &bundlePath, this->deviceId = deviceId; this->runKind = runType; QStringList args; - args << QLatin1String("-device-id") << deviceId << QLatin1String("-bundle") - << bundlePath << QLatin1String("-timeout") << QString::number(timeout); - //args << QLatin1String("--deploy"); // to remove when the separate deploy step is functional + args << QLatin1String("--id") << deviceId << QLatin1String("--bundle") + << bundlePath << QLatin1String("--timeout") << QString::number(timeout); switch (runType) { case IosToolHandler::NormalRun: - args << QLatin1String("-run"); + args << QLatin1String("--run"); break; case IosToolHandler::DebugRun: - args << QLatin1String("-debug"); + args << QLatin1String("--debug"); break; } - args << QLatin1String("-extra-args") << extraArgs; + args << QLatin1String("--args") << extraArgs; op = OpAppRun; start(IosToolHandler::iosDeviceToolPath(), args); } @@ -626,8 +625,8 @@ void IosDeviceToolHandlerPrivate::requestDeviceInfo(const QString &deviceId, int { this->deviceId = deviceId; QStringList args; - args << QLatin1String("-device-id") << deviceId << QLatin1String("-device-info") - << QLatin1String("-timeout") << QString::number(timeout); + args << QLatin1String("--id") << deviceId << QLatin1String("--device-info") + << QLatin1String("--timeout") << QString::number(timeout); op = OpDeviceInfo; start(IosToolHandler::iosDeviceToolPath(), args); } diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index e189ec132f..05fb8f66e2 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -141,7 +141,7 @@ bool MercurialPlugin::initialize(const QStringList & /* arguments */, QString * addAutoReleasedObject(new OptionsPage(versionControl())); connect(m_client, SIGNAL(changed(QVariant)), versionControl(), SLOT(changed(QVariant))); - connect(m_client, SIGNAL(needUpdate()), this, SLOT(update())); + connect(m_client, &MercurialClient::needUpdate, this, &MercurialPlugin::update); static const char *describeSlot = SLOT(view(QString,QString)); const int editorCount = sizeof(editorParameters)/sizeof(editorParameters[0]); @@ -191,7 +191,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) annotateFile = new ParameterAction(tr("Annotate Current File"), tr("Annotate \"%1\""), ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(annotateFile, Core::Id(Constants::ANNOTATE), context); command->setAttribute(Core::Command::CA_UpdateText); - connect(annotateFile, SIGNAL(triggered()), this, SLOT(annotateCurrentFile())); + connect(annotateFile, &QAction::triggered, this, &MercurialPlugin::annotateCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -199,7 +199,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(diffFile, Core::Id(Constants::DIFF), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+H,Meta+D") : tr("Alt+G,Alt+D"))); - connect(diffFile, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); + connect(diffFile, &QAction::triggered, this, &MercurialPlugin::diffCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -207,7 +207,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(logFile, Core::Id(Constants::LOG), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+H,Meta+L") : tr("Alt+G,Alt+L"))); - connect(logFile, SIGNAL(triggered()), this, SLOT(logCurrentFile())); + connect(logFile, &QAction::triggered, this, &MercurialPlugin::logCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -215,7 +215,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) command = Core::ActionManager::registerAction(statusFile, Core::Id(Constants::STATUS), context); command->setAttribute(Core::Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+H,Meta+S") : tr("Alt+G,Alt+S"))); - connect(statusFile, SIGNAL(triggered()), this, SLOT(statusCurrentFile())); + connect(statusFile, &QAction::triggered, this, &MercurialPlugin::statusCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -224,7 +224,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) m_addAction = new ParameterAction(tr("Add"), tr("Add \"%1\""), ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(m_addAction, Core::Id(Constants::ADD), context); command->setAttribute(Core::Command::CA_UpdateText); - connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + connect(m_addAction, &QAction::triggered, this, &MercurialPlugin::addCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -238,7 +238,7 @@ void MercurialPlugin::createFileActions(const Core::Context &context) revertFile = new ParameterAction(tr("Revert Current File..."), tr("Revert \"%1\"..."), ParameterAction::EnabledWithParameter, this); command = Core::ActionManager::registerAction(revertFile, Core::Id(Constants::REVERT), context); command->setAttribute(Core::Command::CA_UpdateText); - connect(revertFile, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); + connect(revertFile, &QAction::triggered, this, &MercurialPlugin::revertCurrentFile); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); } @@ -298,28 +298,28 @@ void MercurialPlugin::createDirectoryActions(const Core::Context &context) auto action = new QAction(tr("Diff"), this); m_repositoryActionList.append(action); Core::Command *command = Core::ActionManager::registerAction(action, Core::Id(Constants::DIFFMULTI), context); - connect(action, SIGNAL(triggered()), this, SLOT(diffRepository())); + connect(action, &QAction::triggered, this, &MercurialPlugin::diffRepository); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Log"), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::LOGMULTI), context); - connect(action, SIGNAL(triggered()), this, SLOT(logRepository())); + connect(action, &QAction::triggered, this, &MercurialPlugin::logRepository); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Revert..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::REVERTMULTI), context); - connect(action, SIGNAL(triggered()), this, SLOT(revertMulti())); + connect(action, &QAction::triggered, this, &MercurialPlugin::revertMulti); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Status"), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::STATUSMULTI), context); - connect(action, SIGNAL(triggered()), this, SLOT(statusMulti())); + connect(action, &QAction::triggered, this, &MercurialPlugin::statusMulti); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); } @@ -362,42 +362,42 @@ void MercurialPlugin::createRepositoryActions(const Core::Context &context) auto action = new QAction(tr("Pull..."), this); m_repositoryActionList.append(action); Core::Command *command = Core::ActionManager::registerAction(action, Core::Id(Constants::PULL), context); - connect(action, SIGNAL(triggered()), this, SLOT(pull())); + connect(action, &QAction::triggered, this, &MercurialPlugin::pull); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Push..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::PUSH), context); - connect(action, SIGNAL(triggered()), this, SLOT(push())); + connect(action, &QAction::triggered, this, &MercurialPlugin::push); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Update..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::UPDATE), context); - connect(action, SIGNAL(triggered()), this, SLOT(update())); + connect(action, &QAction::triggered, this, &MercurialPlugin::update); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Import..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::IMPORT), context); - connect(action, SIGNAL(triggered()), this, SLOT(import())); + connect(action, &QAction::triggered, this, &MercurialPlugin::import); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Incoming..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::INCOMING), context); - connect(action, SIGNAL(triggered()), this, SLOT(incoming())); + connect(action, &QAction::triggered, this, &MercurialPlugin::incoming); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); action = new QAction(tr("Outgoing..."), this); m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::OUTGOING), context); - connect(action, SIGNAL(triggered()), this, SLOT(outgoing())); + connect(action, &QAction::triggered, this, &MercurialPlugin::outgoing); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -405,7 +405,7 @@ void MercurialPlugin::createRepositoryActions(const Core::Context &context) m_repositoryActionList.append(action); command = Core::ActionManager::registerAction(action, Core::Id(Constants::COMMIT), context); command->setDefaultKeySequence(QKeySequence(Core::UseMacShortcuts ? tr("Meta+H,Meta+C") : tr("Alt+G,Alt+C"))); - connect(action, SIGNAL(triggered()), this, SLOT(commit())); + connect(action, &QAction::triggered, this, &MercurialPlugin::commit); m_mercurialContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -493,7 +493,7 @@ void MercurialPlugin::createSubmitEditorActions() editorCommit = new QAction(VcsBaseSubmitEditor::submitIcon(), tr("Commit"), this); Core::Command *command = Core::ActionManager::registerAction(editorCommit, Core::Id(Constants::COMMIT), context); command->setAttribute(Core::Command::CA_UpdateText); - connect(editorCommit, SIGNAL(triggered()), this, SLOT(commitFromEditor())); + connect(editorCommit, &QAction::triggered, this, &MercurialPlugin::commitFromEditor); editorDiff = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this); Core::ActionManager::registerAction(editorDiff, Core::Id(Constants::DIFFEDITOR), context); diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h index ac76395f76..998c8f0d08 100644 --- a/src/plugins/mercurial/mercurialplugin.h +++ b/src/plugins/mercurial/mercurialplugin.h @@ -75,7 +75,18 @@ public: static MercurialPlugin *instance() { return m_instance; } static MercurialClient *client() { return m_instance->m_client; } +#ifdef WITH_TESTS private slots: + void testDiffFileResolving_data(); + void testDiffFileResolving(); + void testLogResolving(); +#endif + +protected: + void updateActions(VcsBase::VcsBasePlugin::ActionState); + bool submitEditorAboutToClose(); + +private: // File menu action slots void addCurrentFile(); void annotateCurrentFile(); @@ -101,14 +112,9 @@ private slots: void showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status); void commitFromEditor(); void diffFromEditorSelected(const QStringList &files); -#ifdef WITH_TESTS - void testDiffFileResolving_data(); - void testDiffFileResolving(); - void testLogResolving(); -#endif //TODO implement - /* //repository management action slots + /* //repository management action slots void merge(); void branch(); void heads(); @@ -121,11 +127,6 @@ private slots: void init(); void serve();*/ -protected: - void updateActions(VcsBase::VcsBasePlugin::ActionState); - bool submitEditorAboutToClose(); - -private: void createMenu(const Core::Context &context); void createSubmitEditorActions(); void createFileActions(const Core::Context &context); diff --git a/src/plugins/modeleditor/classviewcontroller.h b/src/plugins/modeleditor/classviewcontroller.h index 508d5ee1a9..fd51f9eba9 100644 --- a/src/plugins/modeleditor/classviewcontroller.h +++ b/src/plugins/modeleditor/classviewcontroller.h @@ -50,7 +50,7 @@ public: QSet<QString> findClassDeclarations(const QString &fileName); void appendClassDeclarationsFromDocument(CPlusPlus::Document::Ptr document, QSet<QString> *classNames); - void appendClassDeclarationsFromSymbol(CPlusPlus::Symbol *symbol, QSet<QString> *class_names); + void appendClassDeclarationsFromSymbol(CPlusPlus::Symbol *symbol, QSet<QString> *classNames); }; } // namespace Internal diff --git a/src/plugins/modeleditor/componentviewcontroller.cpp b/src/plugins/modeleditor/componentviewcontroller.cpp index e313a33622..3cd2098b30 100644 --- a/src/plugins/modeleditor/componentviewcontroller.cpp +++ b/src/plugins/modeleditor/componentviewcontroller.cpp @@ -80,12 +80,12 @@ void FindComponentFromFilePath::setFilePath(const QString &filePath) void FindComponentFromFilePath::visitMComponent(qmt::MComponent *component) { - if (component->getName() == m_elementName) { + if (component->name() == m_elementName) { QStringList elementPath; - const qmt::MObject *ancestor = component->getOwner(); + const qmt::MObject *ancestor = component->owner(); while (ancestor) { - elementPath.prepend(ancestor->getName()); - ancestor = ancestor->getOwner(); + elementPath.prepend(ancestor->name()); + ancestor = ancestor->owner(); } int i = elementPath.size() - 1; int j = m_elementsPath.size() - 1; @@ -158,26 +158,26 @@ void UpdateIncludeDependenciesVisitor::visitMComponent(qmt::MComponent *componen // add dependency between components if (!haveDependency(component, includeComponent)) { auto dependency = new qmt::MDependency; - dependency->setFlags(qmt::MElement::REVERSE_ENGINEERED); + dependency->setFlags(qmt::MElement::ReverseEngineered); dependency->setStereotypes(QStringList() << QStringLiteral("include")); - dependency->setDirection(qmt::MDependency::A_TO_B); - dependency->setSource(component->getUid()); - dependency->setTarget(includeComponent->getUid()); + dependency->setDirection(qmt::MDependency::AToB); + dependency->setSource(component->uid()); + dependency->setTarget(includeComponent->uid()); m_modelController->addRelation(component, dependency); } // search ancestors sharing a common owner QList<qmt::MPackage *> componentAncestors; - auto ancestor = dynamic_cast<qmt::MPackage *>(component->getOwner()); + auto ancestor = dynamic_cast<qmt::MPackage *>(component->owner()); while (ancestor) { componentAncestors.append(ancestor); - ancestor = dynamic_cast<qmt::MPackage *>(ancestor->getOwner()); + ancestor = dynamic_cast<qmt::MPackage *>(ancestor->owner()); } QList<qmt::MPackage *> includeComponentAncestors; - ancestor = dynamic_cast<qmt::MPackage *>(includeComponent->getOwner()); + ancestor = dynamic_cast<qmt::MPackage *>(includeComponent->owner()); while (ancestor) { includeComponentAncestors.append(ancestor); - ancestor = dynamic_cast<qmt::MPackage *>(ancestor->getOwner()); + ancestor = dynamic_cast<qmt::MPackage *>(ancestor->owner()); } int componentHighestAncestorIndex = componentAncestors.size() - 1; @@ -195,17 +195,17 @@ void UpdateIncludeDependenciesVisitor::visitMComponent(qmt::MComponent *componen int includeComponentLowestIndex = 0; while (index1 <= componentHighestAncestorIndex && includeComponentLowestIndex <= includeComponentHighestAncestorIndex) { - if (!componentAncestors.at(index1)->getStereotypes().isEmpty()) { + if (!componentAncestors.at(index1)->stereotypes().isEmpty()) { int index2 = includeComponentLowestIndex; while (index2 <= includeComponentHighestAncestorIndex) { if (haveMatchingStereotypes(componentAncestors.at(index1), includeComponentAncestors.at(index2))) { if (!haveDependency(componentAncestors.at(index1), includeComponentAncestors.at(index2))) { auto dependency = new qmt::MDependency; - dependency->setFlags(qmt::MElement::REVERSE_ENGINEERED); + dependency->setFlags(qmt::MElement::ReverseEngineered); dependency->setStereotypes(QStringList() << QStringLiteral("same stereotype")); - dependency->setDirection(qmt::MDependency::A_TO_B); - dependency->setSource(componentAncestors.at(index1)->getUid()); - dependency->setTarget(includeComponentAncestors.at(index2)->getUid()); + dependency->setDirection(qmt::MDependency::AToB); + dependency->setSource(componentAncestors.at(index1)->uid()); + dependency->setTarget(includeComponentAncestors.at(index2)->uid()); m_modelController->addRelation(componentAncestors.at(index1), dependency); } includeComponentLowestIndex = index2 + 1; @@ -221,11 +221,11 @@ void UpdateIncludeDependenciesVisitor::visitMComponent(qmt::MComponent *componen if (componentAncestors.at(componentHighestAncestorIndex) != includeComponentAncestors.at(includeComponentHighestAncestorIndex)) { if (!haveDependency(componentAncestors.at(componentHighestAncestorIndex), includeComponentAncestors)) { auto dependency = new qmt::MDependency; - dependency->setFlags(qmt::MElement::REVERSE_ENGINEERED); + dependency->setFlags(qmt::MElement::ReverseEngineered); dependency->setStereotypes(QStringList() << QStringLiteral("ancestor")); - dependency->setDirection(qmt::MDependency::A_TO_B); - dependency->setSource(componentAncestors.at(componentHighestAncestorIndex)->getUid()); - dependency->setTarget(includeComponentAncestors.at(includeComponentHighestAncestorIndex)->getUid()); + dependency->setDirection(qmt::MDependency::AToB); + dependency->setSource(componentAncestors.at(componentHighestAncestorIndex)->uid()); + dependency->setTarget(includeComponentAncestors.at(includeComponentHighestAncestorIndex)->uid()); m_modelController->addRelation(componentAncestors.at(componentHighestAncestorIndex), dependency); } } @@ -235,11 +235,11 @@ void UpdateIncludeDependenciesVisitor::visitMComponent(qmt::MComponent *componen if (componentAncestors.at(0) != includeComponentAncestors.at(0)) { if (!haveDependency(componentAncestors.at(0), includeComponentAncestors)) { auto dependency = new qmt::MDependency; - dependency->setFlags(qmt::MElement::REVERSE_ENGINEERED); + dependency->setFlags(qmt::MElement::ReverseEngineered); dependency->setStereotypes(QStringList() << QStringLiteral("parents")); - dependency->setDirection(qmt::MDependency::A_TO_B); - dependency->setSource(componentAncestors.at(0)->getUid()); - dependency->setTarget(includeComponentAncestors.at(0)->getUid()); + dependency->setDirection(qmt::MDependency::AToB); + dependency->setSource(componentAncestors.at(0)->uid()); + dependency->setTarget(includeComponentAncestors.at(0)->uid()); m_modelController->addRelation(componentAncestors.at(0), dependency); } } @@ -254,7 +254,7 @@ void UpdateIncludeDependenciesVisitor::visitMComponent(qmt::MComponent *componen bool UpdateIncludeDependenciesVisitor::haveMatchingStereotypes(const qmt::MObject *object1, const qmt::MObject *object2) { - return !(object1->getStereotypes().toSet() & object2->getStereotypes().toSet()).isEmpty(); + return !(object1->stereotypes().toSet() & object2->stereotypes().toSet()).isEmpty(); } QStringList UpdateIncludeDependenciesVisitor::findFilePathOfComponent(const qmt::MComponent *component) @@ -266,14 +266,14 @@ QStringList UpdateIncludeDependenciesVisitor::findFilePathOfComponent(const qmt: collectElementPaths(projectNode, &filePaths); } QStringList elementPath; - const qmt::MObject *ancestor = component->getOwner(); + const qmt::MObject *ancestor = component->owner(); while (ancestor) { - elementPath.prepend(ancestor->getName()); - ancestor = ancestor->getOwner(); + elementPath.prepend(ancestor->name()); + ancestor = ancestor->owner(); } QStringList bestFilePaths; int maxPathLength = 1; - foreach (const Node &node, filePaths.values(component->getName())) { + foreach (const Node &node, filePaths.values(component->name())) { int i = elementPath.size() - 1; int j = node.m_elementPath.size() - 1; while (i >= 0 && j >= 0 && elementPath.at(i) == node.m_elementPath.at(j)) { @@ -295,11 +295,11 @@ void UpdateIncludeDependenciesVisitor::collectElementPaths(const ProjectExplorer QMultiHash<QString, Node> *filePathsMap) { foreach (const ProjectExplorer::FileNode *fileNode, folderNode->fileNodes()) { - QString elementName = qmt::NameController::convertFileNameToElementName(fileNode->path().toString()); - QFileInfo fileInfo(fileNode->path().toString()); + QString elementName = qmt::NameController::convertFileNameToElementName(fileNode->filePath().toString()); + QFileInfo fileInfo = fileNode->filePath().toFileInfo(); QString nodePath = fileInfo.path(); QStringList elementsPath = qmt::NameController::buildElementsPath(nodePath, false); - filePathsMap->insertMulti(elementName, Node(fileNode->path().toString(), elementsPath)); + filePathsMap->insertMulti(elementName, Node(fileNode->filePath().toString(), elementsPath)); } foreach (const ProjectExplorer::FolderNode *subNode, folderNode->subFolderNodes()) collectElementPaths(subNode, filePathsMap); @@ -309,31 +309,31 @@ qmt::MComponent *UpdateIncludeDependenciesVisitor::findComponentFromFilePath(con { FindComponentFromFilePath visitor; visitor.setFilePath(filePath); - m_modelController->getRootPackage()->accept(&visitor); + m_modelController->rootPackage()->accept(&visitor); return visitor.component(); } bool UpdateIncludeDependenciesVisitor::haveDependency(const qmt::MObject *source, const qmt::MObject *target, bool inverted) { - qmt::MDependency::Direction aToB = qmt::MDependency::A_TO_B; - qmt::MDependency::Direction bToA = qmt::MDependency::B_TO_A; + qmt::MDependency::Direction aToB = qmt::MDependency::AToB; + qmt::MDependency::Direction bToA = qmt::MDependency::BToA; if (inverted) { - aToB = qmt::MDependency::B_TO_A; - bToA = qmt::MDependency::A_TO_B; + aToB = qmt::MDependency::BToA; + bToA = qmt::MDependency::AToB; } - foreach (const qmt::Handle<qmt::MRelation> &handle, source->getRelations()) { - if (auto dependency = dynamic_cast<qmt::MDependency *>(handle.getTarget())) { - if (dependency->getSource() == source->getUid() - && dependency->getTarget() == target->getUid() - && (dependency->getDirection() == aToB - || dependency->getDirection() == qmt::MDependency::BIDIRECTIONAL)) { + foreach (const qmt::Handle<qmt::MRelation> &handle, source->relations()) { + if (auto dependency = dynamic_cast<qmt::MDependency *>(handle.target())) { + if (dependency->source() == source->uid() + && dependency->target() == target->uid() + && (dependency->direction() == aToB + || dependency->direction() == qmt::MDependency::Bidirectional)) { return true; } - if (dependency->getSource() == target->getUid() - && dependency->getTarget() == source->getUid() - && (dependency->getDirection() == bToA - || dependency->getDirection() == qmt::MDependency::BIDIRECTIONAL)) { + if (dependency->source() == target->uid() + && dependency->target() == source->uid() + && (dependency->direction() == bToA + || dependency->direction() == qmt::MDependency::Bidirectional)) { return true; } } @@ -385,10 +385,10 @@ void ComponentViewController::createComponentModel(const ProjectExplorer::Folder const QString anchorFolder) { foreach (const ProjectExplorer::FileNode *fileNode, folderNode->fileNodes()) { - QString componentName = qmt::NameController::convertFileNameToElementName(fileNode->path().toString()); + QString componentName = qmt::NameController::convertFileNameToElementName(fileNode->filePath().toString()); qmt::MComponent *component = 0; bool isSource = false; - CppTools::ProjectFile::Kind kind = CppTools::ProjectFile::classify(fileNode->path().toString()); + CppTools::ProjectFile::Kind kind = CppTools::ProjectFile::classify(fileNode->filePath().toString()); switch (kind) { case CppTools::ProjectFile::CHeader: case CppTools::ProjectFile::CSource: @@ -408,7 +408,7 @@ void ComponentViewController::createComponentModel(const ProjectExplorer::Folder } if (isSource) { component = new qmt::MComponent; - component->setFlags(qmt::MElement::REVERSE_ENGINEERED); + component->setFlags(qmt::MElement::ReverseEngineered); component->setName(componentName); } if (component) { @@ -419,7 +419,7 @@ void ComponentViewController::createComponentModel(const ProjectExplorer::Folder } else { qmt::MPackage *requestedRootPackage = d->diagramSceneController->findSuitableParentPackage(0, diagram); qmt::MPackage *bestParentPackage = d->pxnodeUtilities->createBestMatchingPackagePath(requestedRootPackage, relativeElements); - d->diagramSceneController->getModelController()->addObject(bestParentPackage, component); + d->diagramSceneController->modelController()->addObject(bestParentPackage, component); } } } @@ -431,7 +431,7 @@ void ComponentViewController::createComponentModel(const ProjectExplorer::Folder void ComponentViewController::updateIncludeDependencies(qmt::MPackage *rootPackage) { UpdateIncludeDependenciesVisitor visitor; - visitor.setModelController(d->diagramSceneController->getModelController()); + visitor.setModelController(d->diagramSceneController->modelController()); rootPackage->accept(&visitor); } diff --git a/src/plugins/modeleditor/editordiagramview.cpp b/src/plugins/modeleditor/editordiagramview.cpp index b2e0d00446..945cfb883b 100644 --- a/src/plugins/modeleditor/editordiagramview.cpp +++ b/src/plugins/modeleditor/editordiagramview.cpp @@ -63,8 +63,8 @@ EditorDiagramView::EditorDiagramView(QWidget *parent) auto node = value.value<ProjectExplorer::Node *>(); QPointF scenePos = mapToScene(pos); d->pxNodeController->addExplorerNode( - node, getDiagramSceneModel()->findTopmostElement(scenePos), - scenePos, getDiagramSceneModel()->getDiagram()); + node, diagramSceneModel()->findTopmostElement(scenePos), + scenePos, diagramSceneModel()->diagram()); } } }); diff --git a/src/plugins/modeleditor/elementtasks.cpp b/src/plugins/modeleditor/elementtasks.cpp index 33abd17870..dd00104e01 100644 --- a/src/plugins/modeleditor/elementtasks.cpp +++ b/src/plugins/modeleditor/elementtasks.cpp @@ -89,7 +89,7 @@ void ElementTasks::openElement(const qmt::DElement *element, const qmt::MDiagram Q_UNUSED(diagram); OpenDiagramElementVisitor visitor; - visitor.setModelController(d->documentController->getModelController()); + visitor.setModelController(d->documentController->modelController()); visitor.setElementTasks(this); element->accept(&visitor); } @@ -97,9 +97,9 @@ void ElementTasks::openElement(const qmt::DElement *element, const qmt::MDiagram bool ElementTasks::hasClassDefinition(const qmt::MElement *element) const { if (auto klass = dynamic_cast<const qmt::MClass *>(element)) { - QString qualifiedClassName = klass->getNamespace().isEmpty() - ? klass->getName() - : klass->getNamespace() + QStringLiteral("::") + klass->getName(); + QString qualifiedClassName = klass->umlNamespace().isEmpty() + ? klass->name() + : klass->umlNamespace() + QStringLiteral("::") + klass->name(); CppTools::CppClassesFilter *classesFilter = ExtensionSystem::PluginManager::getObject<CppTools::CppClassesFilter>(); if (!classesFilter) @@ -123,8 +123,8 @@ bool ElementTasks::hasClassDefinition(const qmt::DElement *element, { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement( - element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement( + element->modelUid()); if (!melement) return false; return hasClassDefinition(melement); @@ -133,9 +133,9 @@ bool ElementTasks::hasClassDefinition(const qmt::DElement *element, void ElementTasks::openClassDefinition(const qmt::MElement *element) { if (auto klass = dynamic_cast<const qmt::MClass *>(element)) { - QString qualifiedClassName = klass->getNamespace().isEmpty() - ? klass->getName() - : klass->getNamespace() + QStringLiteral("::") + klass->getName(); + QString qualifiedClassName = klass->umlNamespace().isEmpty() + ? klass->name() + : klass->umlNamespace() + QStringLiteral("::") + klass->name(); CppTools::CppClassesFilter *classesFilter = ExtensionSystem::PluginManager::getObject<CppTools::CppClassesFilter>(); if (!classesFilter) @@ -157,7 +157,7 @@ void ElementTasks::openClassDefinition(const qmt::DElement *element, const qmt:: { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; openClassDefinition(melement); @@ -174,7 +174,7 @@ bool ElementTasks::hasHeaderFile(const qmt::DElement *element, const qmt::MDiagr { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return hasHeaderFile(melement); @@ -191,7 +191,7 @@ bool ElementTasks::hasSourceFile(const qmt::DElement *element, const qmt::MDiagr { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return hasSourceFile(melement); @@ -207,7 +207,7 @@ void ElementTasks::openHeaderFile(const qmt::DElement *element, const qmt::MDiag { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; openHeaderFile(melement); @@ -223,7 +223,7 @@ void ElementTasks::openSourceFile(const qmt::DElement *element, const qmt::MDiag { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; openSourceFile(melement); @@ -240,7 +240,7 @@ bool ElementTasks::hasFolder(const qmt::DElement *element, const qmt::MDiagram * { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return hasFolder(melement); @@ -256,7 +256,7 @@ void ElementTasks::showFolder(const qmt::DElement *element, const qmt::MDiagram { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; showFolder(melement); @@ -266,7 +266,7 @@ bool ElementTasks::hasDiagram(const qmt::MElement *element) const { qmt::FindDiagramVisitor visitor; element->accept(&visitor); - const qmt::MDiagram *diagram = visitor.getDiagram(); + const qmt::MDiagram *diagram = visitor.diagram(); return diagram != 0; } @@ -274,7 +274,7 @@ bool ElementTasks::hasDiagram(const qmt::DElement *element, const qmt::MDiagram { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return hasDiagram(melement); @@ -284,11 +284,11 @@ void ElementTasks::openDiagram(const qmt::MElement *element) { qmt::FindDiagramVisitor visitor; element->accept(&visitor); - const qmt::MDiagram *diagram = visitor.getDiagram(); + const qmt::MDiagram *diagram = visitor.diagram(); if (diagram) { ModelEditorPlugin::modelsManager()->openDiagram( - d->documentController->getProjectController()->getProject()->getUid(), - diagram->getUid()); + d->documentController->projectController()->project()->uid(), + diagram->uid()); } } @@ -296,7 +296,7 @@ void ElementTasks::openDiagram(const qmt::DElement *element, const qmt::MDiagram { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; openDiagram(melement); @@ -304,12 +304,12 @@ void ElementTasks::openDiagram(const qmt::DElement *element, const qmt::MDiagram bool ElementTasks::hasParentDiagram(const qmt::MElement *element) const { - if (element && element->getOwner()) { - qmt::MObject *parentObject = element->getOwner()->getOwner(); + if (element && element->owner()) { + qmt::MObject *parentObject = element->owner()->owner(); if (parentObject) { qmt::FindDiagramVisitor visitor; parentObject->accept(&visitor); - const qmt::MDiagram *parentDiagram = visitor.getDiagram(); + const qmt::MDiagram *parentDiagram = visitor.diagram(); if (parentDiagram) { return true; } @@ -325,7 +325,7 @@ bool ElementTasks::hasParentDiagram(const qmt::DElement *element, const qmt::MDi if (!element) return false; - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return hasParentDiagram(melement); @@ -333,16 +333,16 @@ bool ElementTasks::hasParentDiagram(const qmt::DElement *element, const qmt::MDi void ElementTasks::openParentDiagram(const qmt::MElement *element) { - if (element && element->getOwner()) { - qmt::MObject *parentObject = element->getOwner()->getOwner(); + if (element && element->owner()) { + qmt::MObject *parentObject = element->owner()->owner(); if (parentObject) { qmt::FindDiagramVisitor visitor; parentObject->accept(&visitor); - const qmt::MDiagram *parentDiagram = visitor.getDiagram(); + const qmt::MDiagram *parentDiagram = visitor.diagram(); if (parentDiagram) { ModelEditorPlugin::modelsManager()->openDiagram( - d->documentController->getProjectController()->getProject()->getUid(), - parentDiagram->getUid()); + d->documentController->projectController()->project()->uid(), + parentDiagram->uid()); return; } } @@ -356,7 +356,7 @@ void ElementTasks::openParentDiagram(const qmt::DElement *element, const qmt::ME if (!element) return; - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; openParentDiagram(melement); @@ -372,7 +372,7 @@ bool ElementTasks::mayCreateDiagram(const qmt::DElement *element, { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return false; return mayCreateDiagram(melement); @@ -383,20 +383,20 @@ void ElementTasks::createAndOpenDiagram(const qmt::MElement *element) if (auto package = dynamic_cast<const qmt::MPackage *>(element)) { qmt::FindDiagramVisitor visitor; element->accept(&visitor); - const qmt::MDiagram *diagram = visitor.getDiagram(); + const qmt::MDiagram *diagram = visitor.diagram(); if (diagram) { ModelEditorPlugin::modelsManager()->openDiagram( - d->documentController->getProjectController()->getProject()->getUid(), - diagram->getUid()); + d->documentController->projectController()->project()->uid(), + diagram->uid()); } else { auto newDiagram = new qmt::MCanvasDiagram(); - newDiagram->setName(package->getName()); - qmt::MPackage *parentPackage = d->documentController->getModelController()->findObject<qmt::MPackage>(package->getUid()); + newDiagram->setName(package->name()); + qmt::MPackage *parentPackage = d->documentController->modelController()->findObject<qmt::MPackage>(package->uid()); QTC_ASSERT(parentPackage, delete newDiagram; return); - d->documentController->getModelController()->addObject(parentPackage, newDiagram); + d->documentController->modelController()->addObject(parentPackage, newDiagram); ModelEditorPlugin::modelsManager()->openDiagram( - d->documentController->getProjectController()->getProject()->getUid(), - newDiagram->getUid()); + d->documentController->projectController()->project()->uid(), + newDiagram->uid()); } } } @@ -405,7 +405,7 @@ void ElementTasks::createAndOpenDiagram(const qmt::DElement *element, const qmt: { Q_UNUSED(diagram); - qmt::MElement *melement = d->documentController->getModelController()->findElement(element->getModelUid()); + qmt::MElement *melement = d->documentController->modelController()->findElement(element->modelUid()); if (!melement) return; createAndOpenDiagram(melement); diff --git a/src/plugins/modeleditor/extdocumentcontroller.cpp b/src/plugins/modeleditor/extdocumentcontroller.cpp index 70195294b2..a667854eb4 100644 --- a/src/plugins/modeleditor/extdocumentcontroller.cpp +++ b/src/plugins/modeleditor/extdocumentcontroller.cpp @@ -54,11 +54,11 @@ ExtDocumentController::ExtDocumentController(QObject *parent) d->elementTasks = new ElementTasks; d->pxNodeController = new PxNodeController(this); d->elementTasks->setDocumentController(this); - getDiagramSceneController()->setElementTasks(d->elementTasks); + diagramSceneController()->setElementTasks(d->elementTasks); - d->pxNodeController->setDiagramSceneController(getDiagramSceneController()); + d->pxNodeController->setDiagramSceneController(diagramSceneController()); - connect(getProjectController(), &qmt::ProjectController::fileNameChanged, + connect(projectController(), &qmt::ProjectController::fileNameChanged, this, &ExtDocumentController::onProjectFileNameChanged); } diff --git a/src/plugins/modeleditor/modeldocument.cpp b/src/plugins/modeleditor/modeldocument.cpp index f25e8cc1f6..e950bf2835 100644 --- a/src/plugins/modeleditor/modeldocument.cpp +++ b/src/plugins/modeleditor/modeldocument.cpp @@ -88,16 +88,16 @@ bool ModelDocument::save(QString *errorString, const QString &name, bool autoSav QString actualName = filePath().toString(); if (!name.isEmpty()) actualName = name; - d->documentController->getProjectController()->setFileName(actualName); + d->documentController->projectController()->setFileName(actualName); try { - d->documentController->getProjectController()->save(); + d->documentController->projectController()->save(); } catch (const qmt::Exception &ex) { - *errorString = ex.getErrorMsg(); + *errorString = ex.errorMessage(); return false; } if (!autoSave) { - setFilePath(Utils::FileName::fromString(d->documentController->getProjectController()->getProject()->getFileName())); + setFilePath(Utils::FileName::fromString(d->documentController->projectController()->project()->fileName())); emit changed(); } @@ -116,7 +116,7 @@ QString ModelDocument::suggestedFileName() const bool ModelDocument::isModified() const { - return d->documentController ? d->documentController->getProjectController()->isModified() : false; + return d->documentController ? d->documentController->projectController()->isModified() : false; } bool ModelDocument::isSaveAsAllowed() const @@ -149,12 +149,12 @@ Core::IDocument::OpenResult ModelDocument::load(QString *errorString, const QStr try { d->documentController->loadProject(fileName); - setFilePath(Utils::FileName::fromString(d->documentController->getProjectController()->getProject()->getFileName())); + setFilePath(Utils::FileName::fromString(d->documentController->projectController()->project()->fileName())); } catch (const qmt::FileNotFoundException &ex) { - *errorString = ex.getErrorMsg(); + *errorString = ex.errorMessage(); return OpenResult::ReadError; } catch (const qmt::Exception &ex) { - *errorString = tr("Could not open \"%1\" for reading: %2.").arg(fileName).arg(ex.getErrorMsg()); + *errorString = tr("Could not open \"%1\" for reading: %2.").arg(fileName).arg(ex.errorMessage()); return OpenResult::CannotHandle; } diff --git a/src/plugins/modeleditor/modeleditor.cpp b/src/plugins/modeleditor/modeleditor.cpp index b59bb6b50f..034eb8e716 100644 --- a/src/plugins/modeleditor/modeleditor.cpp +++ b/src/plugins/modeleditor/modeleditor.cpp @@ -166,7 +166,7 @@ bool ModelEditor::restoreState(const QByteArray &state) qmt::Uid uid; stream >> uid; if (uid.isValid()) { - qmt::MDiagram *diagram = d->document->documentController()->getModelController()->findObject<qmt::MDiagram>(uid); + qmt::MDiagram *diagram = d->document->documentController()->modelController()->findObject<qmt::MDiagram>(uid); if (diagram) { openDiagram(diagram, false); return true; @@ -325,40 +325,40 @@ void ModelEditor::initDocument() QTC_CHECK(!d->diagramsViewManager); d->diagramsViewManager = new DiagramsViewManager(this); //connect(diagramsViewManager, &DiagramsViewManager::someDiagramOpened, - // documentController->getDiagramsManager(), &qmt::DiagramsManager::someDiagramOpened); + // documentController->diagramsManager(), &qmt::DiagramsManager::someDiagramOpened); connect(d->diagramsViewManager, &DiagramsViewManager::openNewDiagram, this, &ModelEditor::showDiagram); connect(d->diagramsViewManager, &DiagramsViewManager::closeOpenDiagram, this, &ModelEditor::closeDiagram); connect(d->diagramsViewManager, &DiagramsViewManager::closeAllOpenDiagrams, this, &ModelEditor::closeAllDiagrams); - documentController->getDiagramsManager()->setDiagramsView(d->diagramsViewManager); + documentController->diagramsManager()->setDiagramsView(d->diagramsViewManager); - d->propertiesView->setDiagramController(documentController->getDiagramController()); - d->propertiesView->setModelController(documentController->getModelController()); - d->propertiesView->setStereotypeController(documentController->getStereotypeController()); - d->propertiesView->setStyleController(documentController->getStyleController()); + d->propertiesView->setDiagramController(documentController->diagramController()); + d->propertiesView->setModelController(documentController->modelController()); + d->propertiesView->setStereotypeController(documentController->stereotypeController()); + d->propertiesView->setStyleController(documentController->styleController()); - d->modelTreeView->setTreeModel(documentController->getSortedTreeModel()); + d->modelTreeView->setTreeModel(documentController->sortedTreeModel()); d->modelTreeView->setElementTasks(documentController->elementTasks()); - d->modelTreeViewServant->setTreeModel(documentController->getTreeModel()); + d->modelTreeViewServant->setTreeModel(documentController->treeModel()); connect(documentController, &qmt::DocumentController::diagramClipboardChanged, this, &ModelEditor::onDiagramClipboardChanged, Qt::QueuedConnection); - connect(documentController->getUndoController()->getUndoStack(), &QUndoStack::canUndoChanged, + connect(documentController->undoController()->undoStack(), &QUndoStack::canUndoChanged, this, &ModelEditor::onCanUndoChanged, Qt::QueuedConnection); - connect(documentController->getUndoController()->getUndoStack(), &QUndoStack::canRedoChanged, + connect(documentController->undoController()->undoStack(), &QUndoStack::canRedoChanged, this, &ModelEditor::onCanRedoChanged, Qt::QueuedConnection); - connect(documentController->getTreeModel(), &qmt::TreeModel::modelReset, + connect(documentController->treeModel(), &qmt::TreeModel::modelReset, this, &ModelEditor::onTreeModelReset, Qt::QueuedConnection); - connect(documentController->getDiagramController(), &qmt::DiagramController::modified, + connect(documentController->diagramController(), &qmt::DiagramController::modified, this, &ModelEditor::onDiagramModified, Qt::QueuedConnection); - connect(documentController->getDiagramsManager(), &qmt::DiagramsManager::diagramSelectionChanged, + connect(documentController->diagramsManager(), &qmt::DiagramsManager::diagramSelectionChanged, this, &ModelEditor::onDiagramSelectionChanged, Qt::QueuedConnection); - connect(documentController->getDiagramsManager(), &qmt::DiagramsManager::diagramActivated, + connect(documentController->diagramsManager(), &qmt::DiagramsManager::diagramActivated, this, &ModelEditor::onDiagramActivated, Qt::QueuedConnection); - connect(documentController->getDiagramSceneController(), &qmt::DiagramSceneController::newElementCreated, + connect(documentController->diagramSceneController(), &qmt::DiagramSceneController::newElementCreated, this, &ModelEditor::onNewElementCreated, Qt::QueuedConnection); connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, @@ -371,13 +371,13 @@ void ModelEditor::initDocument() connect(d->modelTreeView, &QAbstractItemView::doubleClicked, this, &ModelEditor::onTreeViewDoubleClicked, Qt::QueuedConnection); - connect(documentController->getModelController(), &qmt::ModelController::endMoveObject, + connect(documentController->modelController(), &qmt::ModelController::endMoveObject, this, &ModelEditor::updateDiagramSelector); - connect(documentController->getModelController(), &qmt::ModelController::endRemoveObject, + connect(documentController->modelController(), &qmt::ModelController::endRemoveObject, this, &ModelEditor::updateDiagramSelector); - connect(documentController->getModelController(), &qmt::ModelController::endResetModel, + connect(documentController->modelController(), &qmt::ModelController::endResetModel, this, &ModelEditor::updateDiagramSelector); - connect(documentController->getModelController(), &qmt::ModelController::endUpdateObject, + connect(documentController->modelController(), &qmt::ModelController::endUpdateObject, this, &ModelEditor::updateDiagramSelector); updateSelectedArea(SelectedArea::Nothing); @@ -385,9 +385,9 @@ void ModelEditor::initDocument() qmt::MDiagram *ModelEditor::currentDiagram() const { - if (!d->diagramView->getDiagramSceneModel()) + if (!d->diagramView->diagramSceneModel()) return 0; - return d->diagramView->getDiagramSceneModel()->getDiagram(); + return d->diagramView->diagramSceneModel()->diagram(); } void ModelEditor::showDiagram(qmt::MDiagram *diagram) @@ -397,12 +397,12 @@ void ModelEditor::showDiagram(qmt::MDiagram *diagram) void ModelEditor::undo() { - d->document->documentController()->getUndoController()->getUndoStack()->undo(); + d->document->documentController()->undoController()->undoStack()->undo(); } void ModelEditor::redo() { - d->document->documentController()->getUndoController()->getUndoStack()->redo(); + d->document->documentController()->undoController()->undoStack()->redo(); } void ModelEditor::cut() @@ -416,7 +416,7 @@ void ModelEditor::cut() documentController->cutFromDiagram(currentDiagram()); break; case SelectedArea::TreeView: - documentController->cutFromModel(d->modelTreeViewServant->getSelectedObjects()); + documentController->cutFromModel(d->modelTreeViewServant->selectedObjects()); break; } } @@ -435,7 +435,7 @@ void ModelEditor::copy() documentController->copyDiagram(currentDiagram()); break; case SelectedArea::TreeView: - documentController->copyFromModel(d->modelTreeViewServant->getSelectedObjects()); + documentController->copyFromModel(d->modelTreeViewServant->selectedObjects()); break; } } @@ -451,7 +451,7 @@ void ModelEditor::paste() documentController->pasteIntoDiagram(currentDiagram()); break; case SelectedArea::TreeView: - documentController->pasteIntoModel(d->modelTreeViewServant->getSelectedObject()); + documentController->pasteIntoModel(d->modelTreeViewServant->selectedObject()); break; } } @@ -480,7 +480,7 @@ void ModelEditor::deleteSelectedElements() documentController->deleteFromDiagram(currentDiagram()); break; case SelectedArea::TreeView: - documentController->deleteFromModel(d->modelTreeViewServant->getSelectedObjects()); + documentController->deleteFromModel(d->modelTreeViewServant->selectedObjects()); break; } } @@ -507,23 +507,23 @@ qmt::MPackage *ModelEditor::guessSelectedPackage() const qmt::MPackage *package = 0; switch (d->selectedArea) { case SelectedArea::Nothing: - package = d->modelTreeViewServant->getSelectedPackage(); + package = d->modelTreeViewServant->selectedPackage(); break; case SelectedArea::Diagram: { qmt::DocumentController *documentController = d->document->documentController(); - qmt::DiagramsManager *diagramsManager = documentController->getDiagramsManager(); + qmt::DiagramsManager *diagramsManager = documentController->diagramsManager(); qmt::MDiagram *diagram = currentDiagram(); - qmt::DSelection selection = diagramsManager->getDiagramSceneModel(diagram)->getSelectedElements(); - if (selection.getIndices().size() == 1) { - qmt::DPackage *diagramElement = documentController->getDiagramController()->findElement<qmt::DPackage>(selection.getIndices().at(0).getElementKey(), diagram); + qmt::DSelection selection = diagramsManager->diagramSceneModel(diagram)->selectedElements(); + if (selection.indices().size() == 1) { + qmt::DPackage *diagramElement = documentController->diagramController()->findElement<qmt::DPackage>(selection.indices().at(0).elementKey(), diagram); if (diagramElement) - package = documentController->getModelController()->findObject<qmt::MPackage>(diagramElement->getModelUid()); + package = documentController->modelController()->findObject<qmt::MPackage>(diagramElement->modelUid()); } break; } case SelectedArea::TreeView: - package = d->modelTreeViewServant->getSelectedPackage(); + package = d->modelTreeViewServant->selectedPackage(); break; } return package; @@ -547,22 +547,22 @@ void ModelEditor::updateSelectedArea(SelectedArea selectedArea) qmt::MDiagram *activeDiagram = currentDiagram(); switch (d->selectedArea) { case SelectedArea::Nothing: - canSelectAll = activeDiagram && !activeDiagram->getDiagramElements().isEmpty(); + canSelectAll = activeDiagram && !activeDiagram->diagramElements().isEmpty(); break; case SelectedArea::Diagram: { if (activeDiagram) { - bool hasSelection = documentController->getDiagramsManager()->getDiagramSceneModel(activeDiagram)->hasSelection(); + bool hasSelection = documentController->diagramsManager()->diagramSceneModel(activeDiagram)->hasSelection(); canCutCopyDelete = hasSelection; canRemove = hasSelection; canPaste = !documentController->isDiagramClipboardEmpty(); - canSelectAll = !activeDiagram->getDiagramElements().isEmpty(); + canSelectAll = !activeDiagram->diagramElements().isEmpty(); canCopyDiagram = !hasSelection; if (hasSelection) { - qmt::DSelection selection = documentController->getDiagramsManager()->getDiagramSceneModel(activeDiagram)->getSelectedElements(); + qmt::DSelection selection = documentController->diagramsManager()->diagramSceneModel(activeDiagram)->selectedElements(); if (!selection.isEmpty()) { - foreach (qmt::DSelection::Index index, selection.getIndices()) { - qmt::DElement *diagramElement = documentController->getDiagramController()->findElement(index.getElementKey(), activeDiagram); + foreach (qmt::DSelection::Index index, selection.indices()) { + qmt::DElement *diagramElement = documentController->diagramController()->findElement(index.elementKey(), activeDiagram); if (diagramElement) propertiesDiagramElements.append(diagramElement); } @@ -575,16 +575,16 @@ void ModelEditor::updateSelectedArea(SelectedArea selectedArea) } case SelectedArea::TreeView: { - bool hasSelection = !d->modelTreeViewServant->getSelectedObjects().isEmpty(); - bool hasSingleSelection = d->modelTreeViewServant->getSelectedObjects().getIndices().size() == 1; + bool hasSelection = !d->modelTreeViewServant->selectedObjects().isEmpty(); + bool hasSingleSelection = d->modelTreeViewServant->selectedObjects().indices().size() == 1; canCutCopyDelete = hasSelection && !d->modelTreeViewServant->isRootPackageSelected(); canPaste = hasSingleSelection && !documentController->isModelClipboardEmpty(); - canSelectAll = activeDiagram && !activeDiagram->getDiagramElements().isEmpty(); - QModelIndexList indexes = d->modelTreeView->getSelectedSourceModelIndexes(); + canSelectAll = activeDiagram && !activeDiagram->diagramElements().isEmpty(); + QModelIndexList indexes = d->modelTreeView->selectedSourceModelIndexes(); if (!indexes.isEmpty()) { foreach (const QModelIndex &propertiesIndex, indexes) { if (propertiesIndex.isValid()) { - qmt::MElement *modelElement = documentController->getTreeModel()->getElement(propertiesIndex); + qmt::MElement *modelElement = documentController->treeModel()->element(propertiesIndex); if (modelElement) propertiesModelElements.append(modelElement); } @@ -613,11 +613,11 @@ void ModelEditor::updateSelectedArea(SelectedArea selectedArea) void ModelEditor::showProperties(const QList<qmt::MElement *> &modelElements) { - if (modelElements != d->propertiesView->getSelectedModelElements()) { + if (modelElements != d->propertiesView->selectedModelElements()) { clearProperties(); if (modelElements.size() > 0) { d->propertiesView->setSelectedModelElements(modelElements); - d->propertiesGroupWidget = d->propertiesView->getWidget(); + d->propertiesGroupWidget = d->propertiesView->widget(); d->propertiesScrollArea->setWidget(d->propertiesGroupWidget); } } @@ -626,13 +626,13 @@ void ModelEditor::showProperties(const QList<qmt::MElement *> &modelElements) void ModelEditor::showProperties(qmt::MDiagram *diagram, const QList<qmt::DElement *> &diagramElements) { - if (diagram != d->propertiesView->getSelectedDiagram() - || diagramElements != d->propertiesView->getSelectedDiagramElements()) + if (diagram != d->propertiesView->selectedDiagram() + || diagramElements != d->propertiesView->selectedDiagramElements()) { clearProperties(); if (diagram && diagramElements.size() > 0) { d->propertiesView->setSelectedDiagramElements(diagramElements, diagram); - d->propertiesGroupWidget = d->propertiesView->getWidget(); + d->propertiesGroupWidget = d->propertiesView->widget(); d->propertiesScrollArea->setWidget(d->propertiesGroupWidget); } } @@ -689,8 +689,8 @@ void ModelEditor::onAddPackage() { ExtDocumentController *documentController = d->document->documentController(); - qmt::MPackage *package = documentController->createNewPackage(d->modelTreeViewServant->getSelectedPackage()); - d->modelTreeView->selectFromSourceModelIndex(documentController->getTreeModel()->getIndex(package)); + qmt::MPackage *package = documentController->createNewPackage(d->modelTreeViewServant->selectedPackage()); + d->modelTreeView->selectFromSourceModelIndex(documentController->treeModel()->indexOf(package)); QTimer::singleShot(0, this, [this]() { onEditSelectedElement(); }); } @@ -698,8 +698,8 @@ void ModelEditor::onAddComponent() { ExtDocumentController *documentController = d->document->documentController(); - qmt::MComponent *component = documentController->createNewComponent(d->modelTreeViewServant->getSelectedPackage()); - d->modelTreeView->selectFromSourceModelIndex(documentController->getTreeModel()->getIndex(component)); + qmt::MComponent *component = documentController->createNewComponent(d->modelTreeViewServant->selectedPackage()); + d->modelTreeView->selectFromSourceModelIndex(documentController->treeModel()->indexOf(component)); QTimer::singleShot(0, this, [this]() { onEditSelectedElement(); }); } @@ -707,8 +707,8 @@ void ModelEditor::onAddClass() { ExtDocumentController *documentController = d->document->documentController(); - qmt::MClass *klass = documentController->createNewClass(d->modelTreeViewServant->getSelectedPackage()); - d->modelTreeView->selectFromSourceModelIndex(documentController->getTreeModel()->getIndex(klass)); + qmt::MClass *klass = documentController->createNewClass(d->modelTreeViewServant->selectedPackage()); + d->modelTreeView->selectFromSourceModelIndex(documentController->treeModel()->indexOf(klass)); QTimer::singleShot(0, this, [this]() { onEditSelectedElement(); }); } @@ -716,17 +716,17 @@ void ModelEditor::onAddCanvasDiagram() { ExtDocumentController *documentController = d->document->documentController(); - qmt::MDiagram *diagram = documentController->createNewCanvasDiagram(d->modelTreeViewServant->getSelectedPackage()); - d->modelTreeView->selectFromSourceModelIndex(documentController->getTreeModel()->getIndex(diagram)); + qmt::MDiagram *diagram = documentController->createNewCanvasDiagram(d->modelTreeViewServant->selectedPackage()); + d->modelTreeView->selectFromSourceModelIndex(documentController->treeModel()->indexOf(diagram)); QTimer::singleShot(0, this, [this]() { onEditSelectedElement(); }); } void ModelEditor::onCurrentEditorChanged(Core::IEditor *editor) { if (this == editor) { - QUndoStack *undo_stack = d->document->documentController()->getUndoController()->getUndoStack(); - d->actionHandler->undoAction()->setDisabled(!undo_stack->canUndo()); - d->actionHandler->redoAction()->setDisabled(!undo_stack->canRedo()); + QUndoStack *undoStack = d->document->documentController()->undoController()->undoStack(); + d->actionHandler->undoAction()->setDisabled(!undoStack->canUndo()); + d->actionHandler->redoAction()->setDisabled(!undoStack->canRedo()); updateSelectedArea(SelectedArea::Nothing); } @@ -768,7 +768,7 @@ void ModelEditor::onTreeViewDoubleClicked(const QModelIndex &index) ExtDocumentController *documentController = d->document->documentController(); QModelIndex treeModelIndex = d->modelTreeView->mapToSourceModelIndex(index); - qmt::MElement *melement = documentController->getTreeModel()->getElement(treeModelIndex); + qmt::MElement *melement = documentController->treeModel()->element(treeModelIndex); // double click on package is already used for toggeling tree if (melement && !dynamic_cast<qmt::MPackage *>(melement)) documentController->elementTasks()->openElement(melement); @@ -803,9 +803,9 @@ void ModelEditor::onNewElementCreated(qmt::DElement *element, qmt::MDiagram *dia if (diagram == currentDiagram()) { ExtDocumentController *documentController = d->document->documentController(); - documentController->getDiagramsManager()->getDiagramSceneModel(diagram)->selectElement(element); - qmt::MElement *melement = documentController->getModelController()->findElement(element->getModelUid()); - if (!(melement && melement->getFlags().testFlag(qmt::MElement::REVERSE_ENGINEERED))) + documentController->diagramsManager()->diagramSceneModel(diagram)->selectElement(element); + qmt::MElement *melement = documentController->modelController()->findElement(element->modelUid()); + if (!(melement && melement->flags().testFlag(qmt::MElement::ReverseEngineered))) QTimer::singleShot(0, this, [this]() { onEditSelectedElement(); }); } } @@ -854,67 +854,67 @@ void ModelEditor::initToolbars() QHash<QString, QWidget *> toolBars; // TODO add toolbars sorted by prio qmt::DocumentController *documentController = d->document->documentController(); - qmt::StereotypeController *stereotypeController = documentController->getStereotypeController(); - foreach (const qmt::Toolbar &toolbar, stereotypeController->getToolbars()) { - QWidget *toolBar = toolBars.value(toolbar.getId()); + qmt::StereotypeController *stereotypeController = documentController->stereotypeController(); + foreach (const qmt::Toolbar &toolbar, stereotypeController->toolbars()) { + QWidget *toolBar = toolBars.value(toolbar.id()); QLayout *toolBarLayout = 0; if (!toolBar) { toolBar = new QWidget(d->leftToolBox); toolBarLayout = new QVBoxLayout(toolBar); toolBarLayout->setContentsMargins(2, 2, 2, 2); toolBarLayout->setSpacing(6); - d->leftToolBox->addItem(toolBar, toolbar.getId()); - toolBars.insert(toolbar.getId(), toolBar); + d->leftToolBox->addItem(toolBar, toolbar.id()); + toolBars.insert(toolbar.id(), toolBar); } else { toolBarLayout = toolBar->layout(); QTC_ASSERT(toolBarLayout, continue); } - foreach (const qmt::Toolbar::Tool &tool, toolbar.getTools()) { - switch (tool._tool_type) { - case qmt::Toolbar::TOOLTYPE_TOOL: + foreach (const qmt::Toolbar::Tool &tool, toolbar.tools()) { + switch (tool.m_toolType) { + case qmt::Toolbar::TooltypeTool: { QString iconPath; - qmt::StereotypeIcon::Element stereotypeIconElement = qmt::StereotypeIcon::ELEMENT_ANY; - qmt::StyleEngine::ElementType styleEngineElementType = qmt::StyleEngine::TYPE_OTHER; - if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_PACKAGE)) { + qmt::StereotypeIcon::Element stereotypeIconElement = qmt::StereotypeIcon::ElementAny; + qmt::StyleEngine::ElementType styleEngineElementType = qmt::StyleEngine::TypeOther; + if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_PACKAGE)) { iconPath = QStringLiteral(":/modelinglib/48x48/package.png"); - stereotypeIconElement = qmt::StereotypeIcon::ELEMENT_PACKAGE; - styleEngineElementType = qmt::StyleEngine::TYPE_PACKAGE; - } else if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_COMPONENT)) { + stereotypeIconElement = qmt::StereotypeIcon::ElementPackage; + styleEngineElementType = qmt::StyleEngine::TypePackage; + } else if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_COMPONENT)) { iconPath = QStringLiteral(":/modelinglib/48x48/component.png"); - stereotypeIconElement = qmt::StereotypeIcon::ELEMENT_COMPONENT; - styleEngineElementType = qmt::StyleEngine::TYPE_COMPONENT; - } else if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_CLASS)) { + stereotypeIconElement = qmt::StereotypeIcon::ElementComponent; + styleEngineElementType = qmt::StyleEngine::TypeComponent; + } else if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_CLASS)) { iconPath = QStringLiteral(":/modelinglib/48x48/class.png"); - stereotypeIconElement = qmt::StereotypeIcon::ELEMENT_CLASS; - styleEngineElementType = qmt::StyleEngine::TYPE_CLASS; - } else if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_ITEM)) { + stereotypeIconElement = qmt::StereotypeIcon::ElementClass; + styleEngineElementType = qmt::StyleEngine::TypeClass; + } else if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_ITEM)) { iconPath = QStringLiteral(":/modelinglib/48x48/item.png"); - stereotypeIconElement = qmt::StereotypeIcon::ELEMENT_ITEM; - styleEngineElementType = qmt::StyleEngine::TYPE_ITEM; - } else if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_ANNOTATION)) { + stereotypeIconElement = qmt::StereotypeIcon::ElementItem; + styleEngineElementType = qmt::StyleEngine::TypeItem; + } else if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_ANNOTATION)) { iconPath = QStringLiteral(":/modelinglib/48x48/annotation.png"); - styleEngineElementType = qmt::StyleEngine::TYPE_ANNOTATION; - } else if (tool._element_type == QLatin1String(qmt::ELEMENT_TYPE_BOUNDARY)) { + styleEngineElementType = qmt::StyleEngine::TypeAnnotation; + } else if (tool.m_elementType == QLatin1String(qmt::ELEMENT_TYPE_BOUNDARY)) { iconPath = QStringLiteral(":/modelinglib/48x48/boundary.png"); - styleEngineElementType = qmt::StyleEngine::TYPE_BOUNDARY; + styleEngineElementType = qmt::StyleEngine::TypeBoundary; } QIcon icon; - if (!tool._stereotype.isEmpty() && stereotypeIconElement != qmt::StereotypeIcon::ELEMENT_ANY) { - const qmt::Style *style = documentController->getStyleController()->adaptStyle(styleEngineElementType); + if (!tool.m_stereotype.isEmpty() && stereotypeIconElement != qmt::StereotypeIcon::ElementAny) { + const qmt::Style *style = documentController->styleController()->adaptStyle(styleEngineElementType); icon = stereotypeController->createIcon( - stereotypeIconElement, QStringList() << tool._stereotype, + stereotypeIconElement, QStringList() << tool.m_stereotype, QString(), style, QSize(48, 48), QMarginsF(3.0, 2.0, 3.0, 4.0)); } if (icon.isNull()) icon = QIcon(iconPath); if (!icon.isNull()) { - toolBarLayout->addWidget(new DragTool(icon, tool._name, tool._element_type, - tool._stereotype, toolBar)); + toolBarLayout->addWidget(new DragTool(icon, tool.m_name, tool.m_elementType, + tool.m_stereotype, toolBar)); } break; } - case qmt::Toolbar::TOOLTYPE_SEPARATOR: + case qmt::Toolbar::TooltypeSeparator: { auto horizLine1 = new QFrame(d->leftToolBox); horizLine1->setFrameShape(QFrame::HLine); @@ -983,7 +983,7 @@ void ModelEditor::openDiagram(qmt::MDiagram *diagram, bool addToHistory) { closeCurrentDiagram(addToHistory); if (diagram) { - qmt::DiagramSceneModel *diagramSceneModel = d->document->documentController()->getDiagramsManager()->bindDiagramSceneModel(diagram); + qmt::DiagramSceneModel *diagramSceneModel = d->document->documentController()->diagramsManager()->bindDiagramSceneModel(diagram); d->diagramView->setDiagramSceneModel(diagramSceneModel); d->diagramStack->setCurrentWidget(d->diagramView); updateSelectedArea(SelectedArea::Nothing); @@ -994,10 +994,10 @@ void ModelEditor::openDiagram(qmt::MDiagram *diagram, bool addToHistory) void ModelEditor::closeCurrentDiagram(bool addToHistory) { ExtDocumentController *documentController = d->document->documentController(); - qmt::DiagramsManager *diagramsManager = documentController->getDiagramsManager(); - qmt::DiagramSceneModel *sceneModel = d->diagramView->getDiagramSceneModel(); + qmt::DiagramsManager *diagramsManager = documentController->diagramsManager(); + qmt::DiagramSceneModel *sceneModel = d->diagramView->diagramSceneModel(); if (sceneModel) { - qmt::MDiagram *diagram = sceneModel->getDiagram(); + qmt::MDiagram *diagram = sceneModel->diagram(); if (diagram) { if (addToHistory) addToNavigationHistory(diagram); @@ -1011,9 +1011,9 @@ void ModelEditor::closeCurrentDiagram(bool addToHistory) void ModelEditor::closeDiagram(const qmt::MDiagram *diagram) { ExtDocumentController *documentController = d->document->documentController(); - qmt::DiagramsManager *diagramsManager = documentController->getDiagramsManager(); - qmt::DiagramSceneModel *sceneModel = d->diagramView->getDiagramSceneModel(); - if (sceneModel && diagram == sceneModel->getDiagram()) { + qmt::DiagramsManager *diagramsManager = documentController->diagramsManager(); + qmt::DiagramSceneModel *sceneModel = d->diagramView->diagramSceneModel(); + if (sceneModel && diagram == sceneModel->diagram()) { addToNavigationHistory(diagram); d->diagramStack->setCurrentWidget(d->noDiagramLabel); d->diagramView->setDiagramSceneModel(0); @@ -1035,7 +1035,7 @@ void ModelEditor::onContentSet() qmt::MDiagram *rootDiagram = documentController->findOrCreateRootDiagram(); showDiagram(rootDiagram); // select diagram in model tree view - QModelIndex modelIndex = documentController->getTreeModel()->getIndex(rootDiagram); + QModelIndex modelIndex = documentController->treeModel()->indexOf(rootDiagram); if (modelIndex.isValid()) d->modelTreeView->selectFromSourceModelIndex(modelIndex); @@ -1045,7 +1045,7 @@ void ModelEditor::onContentSet() void ModelEditor::addDiagramToSelector(const qmt::MDiagram *diagram) { QString diagramLabel = buildDiagramLabel(diagram); - QVariant diagramUid = QVariant::fromValue(diagram->getUid()); + QVariant diagramUid = QVariant::fromValue(diagram->uid()); int i = d->diagramSelector->findData(diagramUid); if (i >= 0) d->diagramSelector->removeItem(i); @@ -1061,7 +1061,7 @@ void ModelEditor::updateDiagramSelector() while (i < d->diagramSelector->count()) { qmt::Uid diagramUid = d->diagramSelector->itemData(i).value<qmt::Uid>(); if (diagramUid.isValid()) { - qmt::MDiagram *diagram = d->document->documentController()->getModelController()->findObject<qmt::MDiagram>(diagramUid); + qmt::MDiagram *diagram = d->document->documentController()->modelController()->findObject<qmt::MDiagram>(diagramUid); if (diagram) { QString diagramLabel = buildDiagramLabel(diagram); if (diagramLabel != d->diagramSelector->itemText(i)) @@ -1078,7 +1078,7 @@ void ModelEditor::onDiagramSelectorSelected(int index) { qmt::Uid diagramUid = d->diagramSelector->itemData(index).value<qmt::Uid>(); if (diagramUid.isValid()) { - qmt::MDiagram *diagram = d->document->documentController()->getModelController()->findObject<qmt::MDiagram>(diagramUid); + qmt::MDiagram *diagram = d->document->documentController()->modelController()->findObject<qmt::MDiagram>(diagramUid); if (diagram) { showDiagram(diagram); return; @@ -1089,12 +1089,12 @@ void ModelEditor::onDiagramSelectorSelected(int index) QString ModelEditor::buildDiagramLabel(const qmt::MDiagram *diagram) { - QString label = diagram->getName(); - qmt::MObject *owner = diagram->getOwner(); + QString label = diagram->name(); + qmt::MObject *owner = diagram->owner(); QStringList path; while (owner) { - path.append(owner->getName()); - owner = owner->getOwner(); + path.append(owner->name()); + owner = owner->owner(); } if (!path.isEmpty()) { label += QStringLiteral(" ["); @@ -1121,9 +1121,9 @@ QByteArray ModelEditor::saveState(const qmt::MDiagram *diagram) const QDataStream stream(&state, QIODevice::WriteOnly); stream << 1; // version number if (diagram) - stream << diagram->getUid(); + stream << diagram->uid(); else - stream << qmt::Uid::getInvalidUid(); + stream << qmt::Uid::invalidUid(); return state; } @@ -1132,12 +1132,12 @@ void ModelEditor::onEditSelectedElement() // TODO introduce similar method for selected elements in model tree // currently this method is called on adding new elements in model tree // but the method is a no-op in that case. - qmt::MDiagram *diagram = d->propertiesView->getSelectedDiagram(); - QList<qmt::DElement *> elements = d->propertiesView->getSelectedDiagramElements(); + qmt::MDiagram *diagram = d->propertiesView->selectedDiagram(); + QList<qmt::DElement *> elements = d->propertiesView->selectedDiagramElements(); if (diagram && !elements.isEmpty()) { qmt::DElement *element = elements.at(0); if (element) { - qmt::DiagramSceneModel *diagramSceneModel = d->document->documentController()->getDiagramsManager()->getDiagramSceneModel(diagram); + qmt::DiagramSceneModel *diagramSceneModel = d->document->documentController()->diagramsManager()->diagramSceneModel(diagram); if (diagramSceneModel->isElementEditable(element)) { diagramSceneModel->editElement(element); return; diff --git a/src/plugins/modeleditor/modelindexer.cpp b/src/plugins/modeleditor/modelindexer.cpp index cbc0662e83..2dd95ad313 100644 --- a/src/plugins/modeleditor/modelindexer.cpp +++ b/src/plugins/modeleditor/modelindexer.cpp @@ -119,7 +119,7 @@ public: void reset(const QDateTime &lastModified) { m_lastModified = lastModified; - m_modelUid = qmt::Uid::getInvalidUid(); + m_modelUid = qmt::Uid::invalidUid(); m_diagrams.clear(); } @@ -156,8 +156,8 @@ public: void reset(const QDateTime &lastModified) { m_lastModified = lastModified; - m_modelUid = qmt::Uid::getInvalidUid(); - m_diagramUid = qmt::Uid::getInvalidUid(); + m_modelUid = qmt::Uid::invalidUid(); + m_diagramUid = qmt::Uid::invalidUid(); } QString file() const { return m_file; } @@ -219,17 +219,17 @@ ModelIndexer::DiagramsCollectorVisitor::DiagramsCollectorVisitor(IndexedModel *i void ModelIndexer::DiagramsCollectorVisitor::visitMObject(const qmt::MObject *object) { - foreach (const qmt::Handle<qmt::MObject> &child, object->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &child, object->children()) { if (child.hasTarget()) - child.getTarget()->accept(this); + child.target()->accept(this); } visitMElement(object); } void ModelIndexer::DiagramsCollectorVisitor::visitMDiagram(const qmt::MDiagram *diagram) { - qCDebug(logger) << "add diagram " << diagram->getName() << " to index"; - m_indexedModel->addDiagram(diagram->getUid()); + qCDebug(logger) << "add diagram " << diagram->name() << " to index"; + m_indexedModel->addDiagram(diagram->uid()); visitMObject(diagram); } @@ -299,21 +299,21 @@ void ModelIndexer::IndexerThread::onFilesQueued() qmt::Project project; projectSerializer.load(queuedFile.file(), &project); locker.relock(); - indexedModel->setModelUid(project.getUid()); + indexedModel->setModelUid(project.uid()); // add indexedModel to set of indexedModelsByUid - QSet<IndexedModel *> indexedModels = m_indexer->d->indexedModelsByUid.value(project.getUid()); + QSet<IndexedModel *> indexedModels = m_indexer->d->indexedModelsByUid.value(project.uid()); indexedModels.insert(indexedModel); - m_indexer->d->indexedModelsByUid.insert(project.getUid(), indexedModels); + m_indexer->d->indexedModelsByUid.insert(project.uid(), indexedModels); // collect all diagrams of model DiagramsCollectorVisitor visitor(indexedModel); - project.getRootPackage()->accept(&visitor); + project.rootPackage()->accept(&visitor); if (m_indexer->d->defaultModelFiles.contains(queuedFile)) { m_indexer->d->defaultModelFiles.remove(queuedFile); // check if model has a diagram which could be opened qmt::FindRootDiagramVisitor diagramVisitor; - project.getRootPackage()->accept(&diagramVisitor); - if (diagramVisitor.getDiagram()) - emit m_indexer->openDefaultModel(project.getUid()); + project.rootPackage()->accept(&diagramVisitor); + if (diagramVisitor.diagram()) + emit m_indexer->openDefaultModel(project.uid()); } } } @@ -457,9 +457,9 @@ QString ModelIndexer::findFirstModel(ProjectExplorer::FolderNode *folderNode) { foreach (ProjectExplorer::FileNode *fileNode, folderNode->fileNodes()) { Utils::MimeType mimeType = Utils::MimeDatabase().mimeTypeForFile( - fileNode->path().toFileInfo()); + fileNode->filePath().toFileInfo()); if (mimeType.name() == QLatin1String(Constants::MIME_TYPE_MODEL)) - return fileNode->path().toString(); + return fileNode->filePath().toString(); } foreach (ProjectExplorer::FolderNode *subFolderNode, folderNode->subFolderNodes()) { QString modelFileName = findFirstModel(subFolderNode); diff --git a/src/plugins/modeleditor/modelindexer.h b/src/plugins/modeleditor/modelindexer.h index 7d2e49b959..3f751286d4 100644 --- a/src/plugins/modeleditor/modelindexer.h +++ b/src/plugins/modeleditor/modelindexer.h @@ -54,7 +54,7 @@ class ModelIndexer : class DiagramsCollectorVisitor; class ModelIndexerPrivate; - friend uint qHash(const ModelIndexer::QueuedFile &queued_file); + friend uint qHash(const ModelIndexer::QueuedFile &queuedFile); friend bool operator==(const ModelIndexer::QueuedFile &lhs, const ModelIndexer::QueuedFile &rhs); @@ -65,7 +65,7 @@ public: signals: void quitIndexerThread(); void filesQueued(); - void openDefaultModel(const qmt::Uid &model_uid); + void openDefaultModel(const qmt::Uid &modelUid); public: QString findModel(const qmt::Uid &modelUid); diff --git a/src/plugins/modeleditor/modelsmanager.cpp b/src/plugins/modeleditor/modelsmanager.cpp index 871997b1ac..d32cd254ca 100644 --- a/src/plugins/modeleditor/modelsmanager.cpp +++ b/src/plugins/modeleditor/modelsmanager.cpp @@ -139,7 +139,7 @@ ExtDocumentController *ModelsManager::createModel(ModelDocument *modelDocument) QDir dir; dir.setPath(Core::ICore::resourcePath() + QLatin1String("/modeleditor")); // TODO error output on reading definition files - documentController->getConfigController()->readStereotypeDefinitions(dir.path()); + documentController->configController()->readStereotypeDefinitions(dir.path()); d->managedModels.append(ManagedModel(documentController, modelDocument)); return documentController; @@ -161,8 +161,8 @@ void ModelsManager::releaseModel(ExtDocumentController *documentController) void ModelsManager::openDiagram(const qmt::Uid &modelUid, const qmt::Uid &diagramUid) { foreach (const ManagedModel &managedModel, d->managedModels) { - if (managedModel.m_documentController->getProjectController()->getProject()->getUid() == modelUid) { - qmt::MDiagram *diagram = managedModel.m_documentController->getModelController()->findObject<qmt::MDiagram>(diagramUid); + if (managedModel.m_documentController->projectController()->project()->uid() == modelUid) { + qmt::MDiagram *diagram = managedModel.m_documentController->modelController()->findObject<qmt::MDiagram>(diagramUid); QTC_ASSERT(diagram, continue); openDiagram(managedModel.m_documentController, diagram); return; diff --git a/src/plugins/modeleditor/openelementvisitor.cpp b/src/plugins/modeleditor/openelementvisitor.cpp index 33b8e7362a..eb8f51777d 100644 --- a/src/plugins/modeleditor/openelementvisitor.cpp +++ b/src/plugins/modeleditor/openelementvisitor.cpp @@ -68,7 +68,7 @@ void OpenDiagramElementVisitor::setElementTasks(ElementTasks *elementTasks) void OpenDiagramElementVisitor::visitDElement(const qmt::DElement *element) { - qmt::MElement *modelElement = m_modelController->findElement(element->getModelUid()); + qmt::MElement *modelElement = m_modelController->findElement(element->modelUid()); if (modelElement) { OpenModelElementVisitor visitor; visitor.setElementTasks(m_elementTasks); diff --git a/src/plugins/modeleditor/pxnodecontroller.cpp b/src/plugins/modeleditor/pxnodecontroller.cpp index 8389af064f..845ca6185e 100644 --- a/src/plugins/modeleditor/pxnodecontroller.cpp +++ b/src/plugins/modeleditor/pxnodecontroller.cpp @@ -139,13 +139,13 @@ void PxNodeController::addExplorerNode(const ProjectExplorer::Node *node, QTC_ASSERT(diagram, return); QString elementName = qmt::NameController::convertFileNameToElementName( - node->path().toString()); + node->filePath().toString()); switch (node->nodeType()) { case ProjectExplorer::FileNodeType: { QStringList classNames = d->classViewController->findClassDeclarations( - node->path().toString()).toList(); + node->filePath().toString()).toList(); auto menu = new QMenu; menu->addAction(new MenuAction(tr("Add Component %1").arg(elementName), elementName, MenuAction::TYPE_ADD_COMPONENT, menu)); @@ -219,15 +219,15 @@ qmt::MDiagram *PxNodeController::findDiagramForExplorerNode(const ProjectExplore d->pxnodeUtilities->calcRelativePath(node, d->anchorFolder), false); QQueue<qmt::MPackage *> roots; - roots.append(d->diagramSceneController->getModelController()->getRootPackage()); + roots.append(d->diagramSceneController->modelController()->rootPackage()); while (!roots.isEmpty()) { qmt::MPackage *package = roots.takeFirst(); // append all sub-packages of the same level as next root packages - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) roots.append(childPackage); } } @@ -239,10 +239,10 @@ qmt::MDiagram *PxNodeController::findDiagramForExplorerNode(const ProjectExplore QString relativeSearchId = qmt::NameController::calcElementNameSearchId( relativeElements.at(relativeIndex)); found = false; - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) { - if (qmt::NameController::calcElementNameSearchId(childPackage->getName()) == relativeSearchId) { + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) { + if (qmt::NameController::calcElementNameSearchId(childPackage->name()) == relativeSearchId) { package = childPackage; ++relativeIndex; found = true; @@ -257,13 +257,13 @@ qmt::MDiagram *PxNodeController::findDiagramForExplorerNode(const ProjectExplore QTC_ASSERT(relativeIndex >= relativeElements.size(), return 0); // complete package chain found so check for appropriate diagram within deepest package qmt::MDiagram *diagram = d->diagramSceneController->findDiagramBySearchId( - package, package->getName()); + package, package->name()); if (diagram) return diagram; // find first diagram within deepest package - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto diagram = dynamic_cast<qmt::MDiagram *>(handle.getTarget())) + if (auto diagram = dynamic_cast<qmt::MDiagram *>(handle.target())) return diagram; } } @@ -286,7 +286,7 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio case MenuAction::TYPE_ADD_COMPONENT: { auto component = new qmt::MComponent(); - component->setFlags(qmt::MElement::REVERSE_ENGINEERED); + component->setFlags(qmt::MElement::ReverseEngineered); component->setName(action->elementName); newObject = component; break; @@ -295,11 +295,11 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio { // TODO handle template classes auto klass = new qmt::MClass(); - klass->setFlags(qmt::MElement::REVERSE_ENGINEERED); + klass->setFlags(qmt::MElement::ReverseEngineered); QString qualifiedName = action->className; int i = qualifiedName.lastIndexOf(QStringLiteral("::")); if (i >= 0) { - klass->setNamespace(qualifiedName.left(i)); + klass->setUmlNamespace(qualifiedName.left(i)); klass->setName(qualifiedName.mid(i + 2)); } else { klass->setName(qualifiedName); @@ -311,7 +311,7 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio case MenuAction::TYPE_ADD_PACKAGE_AND_DIAGRAM: { auto package = new qmt::MPackage(); - package->setFlags(qmt::MElement::REVERSE_ENGINEERED); + package->setFlags(qmt::MElement::ReverseEngineered); package->setName(action->elementName); if (!action->packageStereotype.isEmpty()) package->setStereotypes(QStringList() << action->packageStereotype); @@ -326,21 +326,21 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio case MenuAction::TYPE_ADD_COMPONENT_MODEL: { auto package = new qmt::MPackage(); - package->setFlags(qmt::MElement::REVERSE_ENGINEERED); + package->setFlags(qmt::MElement::ReverseEngineered); package->setName(action->elementName); if (!action->packageStereotype.isEmpty()) package->setStereotypes(QStringList() << action->packageStereotype); auto folderNode = dynamic_cast<const ProjectExplorer::FolderNode *>(node); QTC_CHECK(folderNode); if (folderNode) { - d->diagramSceneController->getModelController()->getUndoController()->beginMergeSequence(tr("Create Component Model")); + d->diagramSceneController->modelController()->undoController()->beginMergeSequence(tr("Create Component Model")); QStringList relativeElements = qmt::NameController::buildElementsPath( d->pxnodeUtilities->calcRelativePath(folderNode, d->anchorFolder), true); if (qmt::MObject *existingObject = d->pxnodeUtilities->findSameObject(relativeElements, package)) { delete package; package = dynamic_cast<qmt::MPackage *>(existingObject); QTC_ASSERT(package, return); - d->diagramSceneController->addExistingModelElement(package->getUid(), pos, diagram); + d->diagramSceneController->addExistingModelElement(package->uid(), pos, diagram); } else { qmt::MPackage *requestedRootPackage = d->diagramSceneController->findSuitableParentPackage(topMostElementAtPos, diagram); qmt::MPackage *bestParentPackage = d->pxnodeUtilities->createBestMatchingPackagePath(requestedRootPackage, relativeElements); @@ -348,14 +348,14 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio } d->componentViewController->createComponentModel(folderNode, diagram, d->anchorFolder); d->componentViewController->updateIncludeDependencies(package); - d->diagramSceneController->getModelController()->getUndoController()->endMergeSequence(); + d->diagramSceneController->modelController()->undoController()->endMergeSequence(); } break; } } if (newObject) { - d->diagramSceneController->getModelController()->getUndoController()->beginMergeSequence(tr("Drop Node")); + d->diagramSceneController->modelController()->undoController()->beginMergeSequence(tr("Drop Node")); qmt::MObject *parentForDiagram = 0; QStringList relativeElements = qmt::NameController::buildElementsPath( d->pxnodeUtilities->calcRelativePath(node, d->anchorFolder), @@ -363,7 +363,7 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio if (qmt::MObject *existingObject = d->pxnodeUtilities->findSameObject(relativeElements, newObject)) { delete newObject; newObject = 0; - d->diagramSceneController->addExistingModelElement(existingObject->getUid(), pos, diagram); + d->diagramSceneController->addExistingModelElement(existingObject->uid(), pos, diagram); parentForDiagram = existingObject; } else { qmt::MPackage *requestedRootPackage = d->diagramSceneController->findSuitableParentPackage(topMostElementAtPos, diagram); @@ -376,12 +376,12 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio if (newDiagramInObject) { auto package = dynamic_cast<qmt::MPackage *>(parentForDiagram); QTC_ASSERT(package, return); - if (d->diagramSceneController->findDiagramBySearchId(package, newDiagramInObject->getName())) + if (d->diagramSceneController->findDiagramBySearchId(package, newDiagramInObject->name())) delete newDiagramInObject; else - d->diagramSceneController->getModelController()->addObject(package, newDiagramInObject); + d->diagramSceneController->modelController()->addObject(package, newDiagramInObject); } - d->diagramSceneController->getModelController()->getUndoController()->endMergeSequence(); + d->diagramSceneController->modelController()->undoController()->endMergeSequence(); } } diff --git a/src/plugins/modeleditor/pxnodeutilities.cpp b/src/plugins/modeleditor/pxnodeutilities.cpp index 5bf72aa8a5..ac48fe1603 100644 --- a/src/plugins/modeleditor/pxnodeutilities.cpp +++ b/src/plugins/modeleditor/pxnodeutilities.cpp @@ -76,14 +76,14 @@ QString PxNodeUtilities::calcRelativePath(const ProjectExplorer::Node *node, switch (node->nodeType()) { case ProjectExplorer::FileNodeType: { - QFileInfo fileInfo(node->path().toString()); + QFileInfo fileInfo = node->filePath().toFileInfo(); nodePath = fileInfo.path(); break; } case ProjectExplorer::FolderNodeType: case ProjectExplorer::VirtualFolderNodeType: case ProjectExplorer::ProjectNodeType: - nodePath = node->path().toString(); + nodePath = node->filePath().toString(); break; case ProjectExplorer::SessionNodeType: QTC_ASSERT(false, return QString()); @@ -100,11 +100,11 @@ qmt::MPackage *PxNodeUtilities::createBestMatchingPackagePath( qmt::MPackage *suggestedParent = suggestedParentPackage; while (suggestedParent) { suggestedParents.insert(suggestedParent); - suggestedParent = dynamic_cast<qmt::MPackage *>(suggestedParent->getOwner()); + suggestedParent = dynamic_cast<qmt::MPackage *>(suggestedParent->owner()); } QQueue<QPair<qmt::MPackage *, int> > roots; - roots.append(qMakePair(d->diagramSceneController->getModelController()->getRootPackage(), 0)); + roots.append(qMakePair(d->diagramSceneController->modelController()->rootPackage(), 0)); int maxChainLength = -1; int minChainDepth = -1; @@ -116,9 +116,9 @@ qmt::MPackage *PxNodeUtilities::createBestMatchingPackagePath( roots.takeFirst(); // append all sub-packages of the same level as next root packages - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) { + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) { // only accept root packages in the same path as the suggested parent package if (suggestedParents.contains(childPackage)) { roots.append(qMakePair(childPackage, depth + 1)); @@ -135,10 +135,10 @@ qmt::MPackage *PxNodeUtilities::createBestMatchingPackagePath( QString relativeSearchId = qmt::NameController::calcElementNameSearchId( relativeElements.at(relativeIndex)); found = false; - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) { - if (qmt::NameController::calcElementNameSearchId(childPackage->getName()) == relativeSearchId) { + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) { + if (qmt::NameController::calcElementNameSearchId(childPackage->name()) == relativeSearchId) { package = childPackage; ++relativeIndex; found = true; @@ -175,9 +175,9 @@ qmt::MPackage *PxNodeUtilities::createBestMatchingPackagePath( int i = maxChainLength; while (i < relativeElements.size()) { auto newPackage = new qmt::MPackage(); - newPackage->setFlags(qmt::MElement::REVERSE_ENGINEERED); + newPackage->setFlags(qmt::MElement::ReverseEngineered); newPackage->setName(relativeElements.at(i)); - d->diagramSceneController->getModelController()->addObject(bestParentPackage, newPackage); + d->diagramSceneController->modelController()->addObject(bestParentPackage, newPackage); bestParentPackage = newPackage; ++i; } @@ -188,15 +188,15 @@ qmt::MObject *PxNodeUtilities::findSameObject(const QStringList &relativeElement const qmt::MObject *object) { QQueue<qmt::MPackage *> roots; - roots.append(d->diagramSceneController->getModelController()->getRootPackage()); + roots.append(d->diagramSceneController->modelController()->rootPackage()); while (!roots.isEmpty()) { qmt::MPackage *package = roots.takeFirst(); // append all sub-packages of the same level as next root packages - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) roots.append(childPackage); } } @@ -208,10 +208,10 @@ qmt::MObject *PxNodeUtilities::findSameObject(const QStringList &relativeElement QString relativeSearchId = qmt::NameController::calcElementNameSearchId( relativeElements.at(relativeIndex)); found = false; - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.getTarget())) { - if (qmt::NameController::calcElementNameSearchId(childPackage->getName()) == relativeSearchId) { + if (auto childPackage = dynamic_cast<qmt::MPackage *>(handle.target())) { + if (qmt::NameController::calcElementNameSearchId(childPackage->name()) == relativeSearchId) { package = childPackage; ++relativeIndex; found = true; @@ -225,12 +225,12 @@ qmt::MObject *PxNodeUtilities::findSameObject(const QStringList &relativeElement if (found) { QTC_CHECK(relativeIndex >= relativeElements.size()); // chain was found so check for given object within deepest package - QString objectSearchId = qmt::NameController::calcElementNameSearchId(object->getName()); - foreach (const qmt::Handle<qmt::MObject> &handle, package->getChildren()) { + QString objectSearchId = qmt::NameController::calcElementNameSearchId(object->name()); + foreach (const qmt::Handle<qmt::MObject> &handle, package->children()) { if (handle.hasTarget()) { - qmt::MObject *target = handle.getTarget(); + qmt::MObject *target = handle.target(); if (typeid(*target) == typeid(*object) - && qmt::NameController::calcElementNameSearchId(target->getName()) == objectSearchId) { + && qmt::NameController::calcElementNameSearchId(target->name()) == objectSearchId) { return target; } } diff --git a/src/plugins/perforce/perforcechecker.cpp b/src/plugins/perforce/perforcechecker.cpp index 566f0b5dce..1fcd395ab1 100644 --- a/src/plugins/perforce/perforcechecker.cpp +++ b/src/plugins/perforce/perforcechecker.cpp @@ -108,7 +108,7 @@ void PerforceChecker::start(const QString &binary, const QString &workingDirecto m_timeOutMS = timeoutMS; m_timedOut = false; if (timeoutMS > 0) - QTimer::singleShot(m_timeOutMS, this, SLOT(slotTimeOut())); + QTimer::singleShot(m_timeOutMS, this, &PerforceChecker::slotTimeOut); // Cursor if (m_useOverideCursor) { m_isOverrideCursor = true; diff --git a/src/plugins/perforce/perforcechecker.h b/src/plugins/perforce/perforcechecker.h index c4e262db57..01e7d4120b 100644 --- a/src/plugins/perforce/perforcechecker.h +++ b/src/plugins/perforce/perforcechecker.h @@ -65,12 +65,11 @@ signals: void succeeded(const QString &repositoryRoot); void failed(const QString &errorMessage); -private slots: +private: void slotError(QProcess::ProcessError error); void slotFinished(int exitCode, QProcess::ExitStatus exitStatus); void slotTimeOut(); -private: void emitFailed(const QString &); void emitSucceeded(const QString &); void parseOutput(const QString &); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 54d2c06d05..42aa669caf 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -264,7 +264,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command = ActionManager::registerAction(m_diffFileAction, CMD_ID_DIFF_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDescription(tr("Diff Current File")); - connect(m_diffFileAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); + connect(m_diffFileAction, &QAction::triggered, this, &PerforcePlugin::diffCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -272,7 +272,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command = ActionManager::registerAction(m_annotateCurrentAction, CMD_ID_ANNOTATE_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDescription(tr("Annotate Current File")); - connect(m_annotateCurrentAction, SIGNAL(triggered()), this, SLOT(annotateCurrentFile())); + connect(m_annotateCurrentAction, &QAction::triggered, this, &PerforcePlugin::annotateCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -281,7 +281,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+F") : tr("Alt+P,Alt+F"))); command->setDescription(tr("Filelog Current File")); - connect(m_filelogCurrentAction, SIGNAL(triggered()), this, SLOT(filelogCurrentFile())); + connect(m_filelogCurrentAction, &QAction::triggered, this, &PerforcePlugin::filelogCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -292,7 +292,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+E") : tr("Alt+P,Alt+E"))); command->setDescription(tr("Edit File")); - connect(m_editAction, SIGNAL(triggered()), this, SLOT(openCurrentFile())); + connect(m_editAction, &QAction::triggered, this, &PerforcePlugin::openCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -301,7 +301,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+A") : tr("Alt+P,Alt+A"))); command->setDescription(tr("Add File")); - connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + connect(m_addAction, &QAction::triggered, this, &PerforcePlugin::addCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -318,7 +318,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+R") : tr("Alt+P,Alt+R"))); command->setDescription(tr("Revert File")); - connect(m_revertFileAction, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); + connect(m_revertFileAction, &QAction::triggered, this, &PerforcePlugin::revertCurrentFile); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -330,14 +330,14 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+D") : tr("Alt+P,Alt+D"))); command->setDescription(diffProjectDefaultText); - connect(m_diffProjectAction, SIGNAL(triggered()), this, SLOT(diffCurrentProject())); + connect(m_diffProjectAction, &QAction::triggered, this, &PerforcePlugin::diffCurrentProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context); command->setAttribute(Command::CA_UpdateText); - connect(m_logProjectAction, SIGNAL(triggered()), this, SLOT(logProject())); + connect(m_logProjectAction, &QAction::triggered, this, &PerforcePlugin::logProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -345,7 +345,7 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command = ActionManager::registerAction(m_submitProjectAction, CMD_ID_SUBMIT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+S") : tr("Alt+P,Alt+S"))); - connect(m_submitProjectAction, SIGNAL(triggered()), this, SLOT(startSubmitProject())); + connect(m_submitProjectAction, &QAction::triggered, this, &PerforcePlugin::startSubmitProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -354,21 +354,21 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE_PROJECT, context); command->setDescription(updateProjectDefaultText); command->setAttribute(Command::CA_UpdateText); - connect(m_updateProjectAction, SIGNAL(triggered()), this, SLOT(updateCurrentProject())); + connect(m_updateProjectAction, &QAction::triggered, this, &PerforcePlugin::updateCurrentProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_revertUnchangedAction = new ParameterAction(tr("Revert Unchanged"), tr("Revert Unchanged Files of Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_revertUnchangedAction, CMD_ID_REVERT_UNCHANGED_PROJECT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_revertUnchangedAction, SIGNAL(triggered()), this, SLOT(revertUnchangedCurrentProject())); + connect(m_revertUnchangedAction, &QAction::triggered, this, &PerforcePlugin::revertUnchangedCurrentProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_revertProjectAction = new ParameterAction(tr("Revert Project"), tr("Revert Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_revertProjectAction, CMD_ID_REVERT_PROJECT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_revertProjectAction, SIGNAL(triggered()), this, SLOT(revertCurrentProject())); + connect(m_revertProjectAction, &QAction::triggered, this, &PerforcePlugin::revertCurrentProject); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -376,32 +376,32 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er m_diffAllAction = new QAction(tr("Diff Opened Files"), this); command = ActionManager::registerAction(m_diffAllAction, CMD_ID_DIFF_ALL, context); - connect(m_diffAllAction, SIGNAL(triggered()), this, SLOT(diffAllOpened())); + connect(m_diffAllAction, &QAction::triggered, this, &PerforcePlugin::diffAllOpened); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_openedAction = new QAction(tr("Opened"), this); command = ActionManager::registerAction(m_openedAction, CMD_ID_OPENED, context); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+P,Meta+O") : tr("Alt+P,Alt+O"))); - connect(m_openedAction, SIGNAL(triggered()), this, SLOT(printOpenedFileList())); + connect(m_openedAction, &QAction::triggered, this, &PerforcePlugin::printOpenedFileList); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_logRepositoryAction = new QAction(tr("Repository Log"), this); command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context); - connect(m_logRepositoryAction, SIGNAL(triggered()), this, SLOT(logRepository())); + connect(m_logRepositoryAction, &QAction::triggered, this, &PerforcePlugin::logRepository); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_pendingAction = new QAction(tr("Pending Changes..."), this); command = ActionManager::registerAction(m_pendingAction, CMD_ID_PENDING_CHANGES, context); - connect(m_pendingAction, SIGNAL(triggered()), this, SLOT(printPendingChanges())); + connect(m_pendingAction, &QAction::triggered, this, &PerforcePlugin::printPendingChanges); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); m_updateAllAction = new QAction(tr("Update All"), this); command = ActionManager::registerAction(m_updateAllAction, CMD_ID_UPDATEALL, context); - connect(m_updateAllAction, SIGNAL(triggered()), this, SLOT(updateAll())); + connect(m_updateAllAction, &QAction::triggered, this, &PerforcePlugin::updateAll); perforceContainer->addAction(command); m_commandLocator->appendCommand(command); @@ -409,23 +409,23 @@ bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *er m_describeAction = new QAction(tr("Describe..."), this); command = ActionManager::registerAction(m_describeAction, CMD_ID_DESCRIBE, context); - connect(m_describeAction, SIGNAL(triggered()), this, SLOT(describeChange())); + connect(m_describeAction, &QAction::triggered, this, &PerforcePlugin::describeChange); perforceContainer->addAction(command); m_annotateAction = new QAction(tr("Annotate..."), this); command = ActionManager::registerAction(m_annotateAction, CMD_ID_ANNOTATE, context); - connect(m_annotateAction, SIGNAL(triggered()), this, SLOT(annotate())); + connect(m_annotateAction, &QAction::triggered, this, &PerforcePlugin::annotateFile); perforceContainer->addAction(command); m_filelogAction = new QAction(tr("Filelog..."), this); command = ActionManager::registerAction(m_filelogAction, CMD_ID_FILELOG, context); - connect(m_filelogAction, SIGNAL(triggered()), this, SLOT(filelog())); + connect(m_filelogAction, &QAction::triggered, this, &PerforcePlugin::filelogFile); perforceContainer->addAction(command); m_submitCurrentLogAction = new QAction(VcsBaseSubmitEditor::submitIcon(), tr("Submit"), this); command = ActionManager::registerAction(m_submitCurrentLogAction, SUBMIT_CURRENT, perforcesubmitcontext); command->setAttribute(Command::CA_UpdateText); - connect(m_submitCurrentLogAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); + connect(m_submitCurrentLogAction, &QAction::triggered, this, &PerforcePlugin::submitCurrentLog); m_diffSelectedFiles = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this); ActionManager::registerAction(m_diffSelectedFiles, DIFF_SELECTED, perforcesubmitcontext); @@ -699,7 +699,7 @@ void PerforcePlugin::annotateCurrentFile() annotate(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void PerforcePlugin::annotate() +void PerforcePlugin::annotateFile() { const QString file = QFileDialog::getOpenFileName(ICore::dialogParent(), tr("p4 annotate")); if (!file.isEmpty()) { @@ -749,7 +749,7 @@ void PerforcePlugin::filelogCurrentFile() filelog(state.currentFileTopLevel(), state.relativeCurrentFile(), true); } -void PerforcePlugin::filelog() +void PerforcePlugin::filelogFile() { const QString file = QFileDialog::getOpenFileName(ICore::dialogParent(), tr("p4 filelog")); if (!file.isEmpty()) { @@ -1052,7 +1052,7 @@ PerforceResponse PerforcePlugin::synchronousProcess(const QString &workingDir, if (flags & StdOutToWindow) { process.setStdOutBufferedSignalsEnabled(true); if (flags & SilentStdOut) { - connect(&process, SIGNAL(stdOutBuffered(QString,bool)), outputWindow, SLOT(appendSilently(QString))); + connect(&process, &SynchronousProcess::stdOutBuffered, outputWindow, &VcsOutputWindow::appendSilently); } else { connect(&process, SIGNAL(stdOutBuffered(QString,bool)), outputWindow, SLOT(append(QString))); @@ -1265,13 +1265,11 @@ class PerforceDiffParameterWidget : public VcsBaseEditorParameterWidget Q_OBJECT public: explicit PerforceDiffParameterWidget(const PerforceDiffParameters &p, QWidget *parent = 0); + void triggerReRun(); signals: void reRunDiff(const Perforce::Internal::PerforceDiffParameters &); -private slots: - void triggerReRun(); - private: const PerforceDiffParameters m_parameters; }; @@ -1281,7 +1279,7 @@ PerforceDiffParameterWidget::PerforceDiffParameterWidget(const PerforceDiffParam { setBaseArguments(p.diffArguments); addToggleButton(QLatin1String("w"), tr("Ignore Whitespace")); - connect(this, SIGNAL(argumentsChanged()), this, SLOT(triggerReRun())); + connect(this, &VcsBaseEditorParameterWidget::argumentsChanged, this, &PerforceDiffParameterWidget::triggerReRun); } void PerforceDiffParameterWidget::triggerReRun() @@ -1339,8 +1337,8 @@ void PerforcePlugin::p4Diff(const PerforceDiffParameters &p) auto pw = new PerforceDiffParameterWidget(p); connect(pw, SIGNAL(reRunDiff(Perforce::Internal::PerforceDiffParameters)), this, SLOT(p4Diff(Perforce::Internal::PerforceDiffParameters))); - connect(diffEditorWidget, SIGNAL(diffChunkReverted(VcsBase::DiffChunk)), - pw, SLOT(triggerReRun())); + connect(diffEditorWidget, &VcsBaseEditorWidget::diffChunkReverted, + pw, &PerforceDiffParameterWidget::triggerReRun); diffEditorWidget->setConfigurationWidget(pw); } diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index a202b5687f..cd928495de 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -112,7 +112,17 @@ public slots: const QString &revision, int lineNumber); void p4Diff(const Perforce::Internal::PerforceDiffParameters &p); +#ifdef WITH_TESTS private slots: + void testLogResolving(); +#endif + +protected: + void updateActions(VcsBase::VcsBasePlugin::ActionState); + bool submitEditorAboutToClose(); + + +private: void openCurrentFile(); void addCurrentFile(); void revertCurrentFile(); @@ -127,9 +137,9 @@ private slots: void startSubmitProject(); void describeChange(); void annotateCurrentFile(); - void annotate(); + void annotateFile(); void filelogCurrentFile(); - void filelog(); + void filelogFile(); void logProject(); void logRepository(); @@ -139,15 +149,6 @@ private slots: void setTopLevel(const QString &); void slotTopLevelFailed(const QString &); -#ifdef WITH_TESTS - void testLogResolving(); -#endif -protected: - void updateActions(VcsBase::VcsBasePlugin::ActionState); - bool submitEditorAboutToClose(); - - -private: class DirectoryCacheEntry { public: diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp index b37e7e72ba..5624f5e84d 100644 --- a/src/plugins/perforce/settingspage.cpp +++ b/src/plugins/perforce/settingspage.cpp @@ -59,8 +59,8 @@ void SettingsPageWidget::slotTest() if (!m_checker) { m_checker = new PerforceChecker(this); m_checker->setUseOverideCursor(true); - connect(m_checker.data(), SIGNAL(failed(QString)), this, SLOT(setStatusError(QString))); - connect(m_checker.data(), SIGNAL(succeeded(QString)), this, SLOT(testSucceeded(QString))); + connect(m_checker.data(), &PerforceChecker::failed, this, &SettingsPageWidget::setStatusError); + connect(m_checker.data(), &PerforceChecker::succeeded, this, &SettingsPageWidget::testSucceeded); } if (m_checker->isRunning()) diff --git a/src/plugins/perforce/settingspage.h b/src/plugins/perforce/settingspage.h index bb07dc3d01..3751448f0a 100644 --- a/src/plugins/perforce/settingspage.h +++ b/src/plugins/perforce/settingspage.h @@ -55,14 +55,12 @@ public: void setSettings(const PerforceSettings &); Settings settings() const; -private slots: +private: void slotTest(); void setStatusText(const QString &); void setStatusError(const QString &); void testSucceeded(const QString &repo); -private: - Ui::SettingsPage m_ui; QPointer<PerforceChecker> m_checker; }; diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index cbf6c128b4..1d2ceac974 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -471,7 +471,7 @@ Abi Abi::abiFromTargetTriplet(const QString &triple) Abi::OS os = Abi::UnknownOS; Abi::OSFlavor flavor = Abi::UnknownFlavor; Abi::BinaryFormat format = Abi::UnknownFormat; - int width = 0; + unsigned char width = 0; int unknownCount = 0; foreach (const QString &p, parts) { diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 29b5e90184..8fc5315274 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -178,8 +178,9 @@ void AbstractProcessStep::setIgnoreReturnValue(bool b) YourBuildStep::init(). */ -bool AbstractProcessStep::init() +bool AbstractProcessStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); return true; } diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index a79ebd2db5..b086545f67 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -52,11 +52,11 @@ class PROJECTEXPLORER_EXPORT AbstractProcessStep : public BuildStep Q_OBJECT public: - virtual ~AbstractProcessStep(); + ~AbstractProcessStep() override; - virtual bool init(); - virtual void run(QFutureInterface<bool> &); - bool runInGuiThread() const { return true; } + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &) override; + bool runInGuiThread() const override { return true; } ProcessParameters *processParameters() { return &m_param; } diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index a79c9b19ae..237bea2a61 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -51,6 +51,7 @@ #include <utils/algorithm.h> #include <utils/outputformatter.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QAction> #include <QVBoxLayout> @@ -163,7 +164,7 @@ AppOutputPane::AppOutputPane() : setObjectName(QLatin1String("AppOutputPane")); // Used in valgrind engine // Rerun - m_reRunButton->setIcon(QIcon(QLatin1String(Constants::ICON_RUN_SMALL))); + m_reRunButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_RUN_SMALL))); m_reRunButton->setToolTip(tr("Re-run this run-configuration")); m_reRunButton->setAutoRaise(true); m_reRunButton->setEnabled(false); @@ -171,9 +172,7 @@ AppOutputPane::AppOutputPane() : this, SLOT(reRunRunControl())); // Stop - QIcon stopIcon = QIcon(QLatin1String(Constants::ICON_STOP)); - stopIcon.addFile(QLatin1String(Constants::ICON_STOP_SMALL)); - m_stopAction->setIcon(stopIcon); + m_stopAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_STOP_SMALL))); m_stopAction->setToolTip(tr("Stop")); m_stopAction->setEnabled(false); @@ -188,21 +187,24 @@ AppOutputPane::AppOutputPane() : // Attach m_attachButton->setToolTip(msgAttachDebuggerTooltip()); m_attachButton->setEnabled(false); - m_attachButton->setIcon(QIcon(QLatin1String(Constants::ICON_DEBUG_SMALL))); + m_attachButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_DEBUG_START_SMALL))); m_attachButton->setAutoRaise(true); connect(m_attachButton, SIGNAL(clicked()), this, SLOT(attachToRunControl())); m_zoomInButton->setToolTip(tr("Increase Font Size")); - m_zoomInButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PLUS))); + m_zoomInButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_PLUS))); m_zoomInButton->setAutoRaise(true); connect(m_zoomInButton, &QToolButton::clicked, this, &AppOutputPane::zoomIn); m_zoomOutButton->setToolTip(tr("Decrease Font Size")); - m_zoomOutButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS))); + m_zoomOutButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_MINUS))); m_zoomOutButton->setAutoRaise(true); connect(m_zoomOutButton, &QToolButton::clicked, @@ -640,7 +642,7 @@ void AppOutputPane::enableButtons(const RunControl *rc /* = 0 */, bool isRunning { if (rc) { m_reRunButton->setEnabled(!isRunning && rc->supportsReRunning()); - m_reRunButton->setIcon(QIcon(rc->icon())); + m_reRunButton->setIcon(Utils::ThemeHelper::themedIcon(rc->icon())); m_stopAction->setEnabled(isRunning); if (isRunning && debuggerPlugin() && rc->applicationProcessHandle().isValid()) { m_attachButton->setEnabled(true); @@ -653,7 +655,7 @@ void AppOutputPane::enableButtons(const RunControl *rc /* = 0 */, bool isRunning m_zoomOutButton->setEnabled(true); } else { m_reRunButton->setEnabled(false); - m_reRunButton->setIcon(QIcon(QLatin1String(Constants::ICON_RUN_SMALL))); + m_reRunButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_RUN_SMALL))); m_attachButton->setEnabled(false); m_attachButton->setToolTip(msgAttachDebuggerTooltip()); m_stopAction->setEnabled(false); diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 25c56725ba..d77da18af8 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -113,10 +113,6 @@ void BuildConfiguration::ctor() [this] { return displayName(); }, false); } -BuildConfiguration::~BuildConfiguration() -{ -} - Utils::FileName BuildConfiguration::buildDirectory() const { QString path = QDir::cleanPath(environment().expandVariables(m_buildDirectory.toString())); diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 81d2f05a7b..da6e5764ad 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -53,7 +53,6 @@ class PROJECTEXPLORER_EXPORT BuildConfiguration : public ProjectConfiguration public: // ctors are protected - virtual ~BuildConfiguration(); Utils::FileName buildDirectory() const; Utils::FileName rawBuildDirectory() const; @@ -75,8 +74,8 @@ public: QList<Core::Id> knownStepLists() const; BuildStepList *stepList(Core::Id id) const; - virtual bool fromMap(const QVariantMap &map); - virtual QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; Target *target() const; diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 4d8db4520f..0e363beb0a 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -491,6 +491,7 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps, QStringList names, addToOutputWindow(str, BuildStep::MessageOutput, BuildStep::DontAppendNewline); } + QList<const BuildStep *> earlierSteps; int count = steps.size(); bool init = true; int i = 0; @@ -501,9 +502,10 @@ bool BuildManager::buildQueueAppend(QList<BuildStep *> steps, QStringList names, connect(bs, SIGNAL(addOutput(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting)), m_instance, SLOT(addToOutputWindow(QString,ProjectExplorer::BuildStep::OutputFormat,ProjectExplorer::BuildStep::OutputNewlineSetting))); if (bs->enabled()) { - init = bs->init(); + init = bs->init(earlierSteps); if (!init) break; + earlierSteps.append(bs); } } if (!init) { diff --git a/src/plugins/projectexplorer/buildprogress.cpp b/src/plugins/projectexplorer/buildprogress.cpp index f96d85b76f..c44194a952 100644 --- a/src/plugins/projectexplorer/buildprogress.cpp +++ b/src/plugins/projectexplorer/buildprogress.cpp @@ -33,6 +33,7 @@ #include <coreplugin/coreconstants.h> #include <utils/stylehelper.h> +#include <utils/themehelper.h> #include <QVBoxLayout> #include <QHBoxLayout> @@ -87,10 +88,10 @@ BuildProgress::BuildProgress(TaskWindow *taskWindow, Qt::Orientation orientation m_errorIcon->setAlignment(Qt::AlignRight); m_warningIcon->setAlignment(Qt::AlignRight); - m_errorIcon->setPixmap(QPixmap(Utils::StyleHelper::dpiSpecificImageFile( - QLatin1String(Core::Constants::ICON_ERROR)))); - m_warningIcon->setPixmap(QPixmap(Utils::StyleHelper::dpiSpecificImageFile( - QLatin1String(Core::Constants::ICON_WARNING)))); + m_errorIcon->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_ERROR))); + m_warningIcon->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); m_contentWidget->hide(); diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index 1d4e40b0aa..719dad45a9 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -127,10 +127,6 @@ BuildStep::BuildStep(BuildStepList *bsl, BuildStep *bs) : setDisplayName(bs->displayName()); } -BuildStep::~BuildStep() -{ -} - bool BuildStep::fromMap(const QVariantMap &map) { m_enabled = map.value(QLatin1String(buildStepEnabledKey), true).toBool(); diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index bfd0dfd616..a2f065da6f 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -56,9 +56,7 @@ protected: BuildStep(BuildStepList *bsl, BuildStep *bs); public: - virtual ~BuildStep(); - - virtual bool init() = 0; + virtual bool init(QList<const BuildStep *> &earlierSteps) = 0; virtual void run(QFutureInterface<bool> &fi) = 0; @@ -68,8 +66,8 @@ public: virtual bool runInGuiThread() const; virtual void cancel(); - virtual bool fromMap(const QVariantMap &map); - virtual QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; bool enabled() const; void setEnabled(bool b); diff --git a/src/plugins/projectexplorer/buildsteplist.h b/src/plugins/projectexplorer/buildsteplist.h index e646b13fb1..4647f4f78d 100644 --- a/src/plugins/projectexplorer/buildsteplist.h +++ b/src/plugins/projectexplorer/buildsteplist.h @@ -50,7 +50,7 @@ public: BuildStepList(QObject *parent, Core::Id id); BuildStepList(QObject *parent, BuildStepList *source); BuildStepList(QObject *parent, const QVariantMap &data); - virtual ~BuildStepList(); + ~BuildStepList() override; QList<BuildStep *> steps() const; bool isNull() const; @@ -66,7 +66,7 @@ public: Target *target() const; - virtual QVariantMap toMap() const; + virtual QVariantMap toMap() const override; void cloneSteps(BuildStepList *source); signals: @@ -76,7 +76,7 @@ signals: void stepMoved(int from, int to); protected: - virtual bool fromMap(const QVariantMap &map); + virtual bool fromMap(const QVariantMap &map) override; private: QList<BuildStep *> m_steps; diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp index c1efcdd784..14559bc1b2 100644 --- a/src/plugins/projectexplorer/compileoutputwindow.cpp +++ b/src/plugins/projectexplorer/compileoutputwindow.cpp @@ -46,6 +46,7 @@ #include <texteditor/behaviorsettings.h> #include <utils/ansiescapecodehandler.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QIcon> #include <QTextCharFormat> @@ -171,9 +172,11 @@ CompileOutputWindow::CompileOutputWindow(QAction *cancelBuildAction) : m_cancelBuildButton->setDefaultAction(cancelBuildAction); m_zoomInButton->setToolTip(tr("Increase Font Size")); - m_zoomInButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PLUS))); + m_zoomInButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_PLUS))); m_zoomOutButton->setToolTip(tr("Decrease Font Size")); - m_zoomOutButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS))); + m_zoomOutButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_MINUS))); updateZoomEnabled(); diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp index b7d38dc7cd..b2a71d27a9 100644 --- a/src/plugins/projectexplorer/customtoolchain.cpp +++ b/src/plugins/projectexplorer/customtoolchain.cpp @@ -181,7 +181,7 @@ void CustomToolChain::addToEnvironment(Environment &env) const } } -QList<FileName> CustomToolChain::suggestedMkspecList() const +FileNameList CustomToolChain::suggestedMkspecList() const { return m_mkspecs; } diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h index a2169a61f2..4b6e9d703e 100644 --- a/src/plugins/projectexplorer/customtoolchain.h +++ b/src/plugins/projectexplorer/customtoolchain.h @@ -91,7 +91,7 @@ public: QList<HeaderPath> systemHeaderPaths(const QStringList &cxxFlags, const Utils::FileName &) const override; void addToEnvironment(Utils::Environment &env) const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; IOutputParser *outputParser() const override; QStringList headerPathsList() const; void setHeaderPaths(const QStringList &list); @@ -135,7 +135,7 @@ private: QStringList m_predefinedMacros; QList<HeaderPath> m_systemHeaderPaths; QStringList m_cxx11Flags; - QList<Utils::FileName> m_mkspecs; + Utils::FileNameList m_mkspecs; OutputParser m_outputParser; CustomParserSettings m_customParserSettings; diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h index bf997d0652..96f5528882 100644 --- a/src/plugins/projectexplorer/deployconfiguration.h +++ b/src/plugins/projectexplorer/deployconfiguration.h @@ -52,12 +52,12 @@ class PROJECTEXPLORER_EXPORT DeployConfiguration : public ProjectConfiguration public: // ctors are protected - virtual ~DeployConfiguration(); + ~DeployConfiguration() override; BuildStepList *stepList() const; - virtual bool fromMap(const QVariantMap &map); - virtual QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; virtual NamedWidget *createConfigWidget(); diff --git a/src/plugins/projectexplorer/devicesupport/desktopdeviceconfigurationwidget.cpp b/src/plugins/projectexplorer/devicesupport/desktopdeviceconfigurationwidget.cpp index 8a42c080aa..63257945b1 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdeviceconfigurationwidget.cpp +++ b/src/plugins/projectexplorer/devicesupport/desktopdeviceconfigurationwidget.cpp @@ -35,6 +35,7 @@ #include <coreplugin/coreconstants.h> #include <utils/portlist.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> using namespace ProjectExplorer::Constants; @@ -75,7 +76,7 @@ void DesktopDeviceConfigurationWidget::initGui() m_ui->freePortsLineEdit->setPlaceholderText( QString::fromLatin1("eg: %1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END)); m_ui->portsWarningLabel->setPixmap( - QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING))); m_ui->portsWarningLabel->setToolTip(QLatin1String("<font color=\"red\">") + tr("You will need at least one port for QML debugging.") + QLatin1String("</font>")); diff --git a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp index 0cc4320789..3e8f558cad 100644 --- a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.cpp @@ -54,8 +54,9 @@ DeviceCheckBuildStep::DeviceCheckBuildStep(BuildStepList *bsl, DeviceCheckBuildS setDefaultDisplayName(stepDisplayName()); } -bool DeviceCheckBuildStep::init() +bool DeviceCheckBuildStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); IDevice::ConstPtr device = DeviceKitInformation::device(target()->kit()); if (!device) { Core::Id deviceTypeId = DeviceTypeKitInformation::deviceTypeId(target()->kit()); diff --git a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h index 88e3d453a8..d50cd73cb4 100644 --- a/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h +++ b/src/plugins/projectexplorer/devicesupport/devicecheckbuildstep.h @@ -47,11 +47,11 @@ public: DeviceCheckBuildStep(BuildStepList *bsl, Core::Id id); DeviceCheckBuildStep(BuildStepList *bsl, DeviceCheckBuildStep *bs); - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; - BuildStepConfigWidget *createConfigWidget(); + BuildStepConfigWidget *createConfigWidget() override; static Core::Id stepId(); static QString stepDisplayName(); diff --git a/src/plugins/projectexplorer/doubletabwidget.cpp b/src/plugins/projectexplorer/doubletabwidget.cpp index 36e93cfb88..a9b9696e56 100644 --- a/src/plugins/projectexplorer/doubletabwidget.cpp +++ b/src/plugins/projectexplorer/doubletabwidget.cpp @@ -54,7 +54,7 @@ static const int SELECTION_IMAGE_WIDTH = 10; static const int SELECTION_IMAGE_HEIGHT = 20; static const int OVERFLOW_DROPDOWN_WIDTH = StyleHelper::navigationWidgetHeight(); -static void drawFirstLevelSeparator(QPainter *painter, QPoint top, QPoint bottom) +static void drawFirstLevelSeparator(QPainter *painter, const QPointF &top, const QPointF &bottom) { QLinearGradient grad(top, bottom); if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { @@ -62,13 +62,13 @@ static void drawFirstLevelSeparator(QPainter *painter, QPoint top, QPoint bottom grad.setColorAt(0.4, QColor(255, 255, 255, 60)); grad.setColorAt(0.7, QColor(255, 255, 255, 50)); grad.setColorAt(1, QColor(255, 255, 255, 40)); - painter->setPen(QPen(grad, 0)); + painter->setPen(QPen(grad, 1)); painter->drawLine(top, bottom); grad.setColorAt(0, QColor(0, 0, 0, 30)); grad.setColorAt(0.4, QColor(0, 0, 0, 70)); grad.setColorAt(0.7, QColor(0, 0, 0, 70)); grad.setColorAt(1, QColor(0, 0, 0, 40)); - painter->setPen(QPen(grad, 0)); + painter->setPen(QPen(grad, 1)); painter->drawLine(top - QPoint(1,0), bottom - QPoint(1,0)); } else { painter->setPen(QPen(creatorTheme()->color(Theme::DoubleTabWidget1stSeparatorColor), 0)); @@ -84,13 +84,13 @@ static void drawSecondLevelSeparator(QPainter *painter, QPoint top, QPoint botto grad.setColorAt(0.4, QColor(255, 255, 255, 100)); grad.setColorAt(0.7, QColor(255, 255, 255, 100)); grad.setColorAt(1, QColor(255, 255, 255, 0)); - painter->setPen(QPen(grad, 0)); + painter->setPen(QPen(grad, 1)); painter->drawLine(top, bottom); grad.setColorAt(0, QColor(0, 0, 0, 0)); grad.setColorAt(0.4, QColor(0, 0, 0, 100)); grad.setColorAt(0.7, QColor(0, 0, 0, 100)); grad.setColorAt(1, QColor(0, 0, 0, 0)); - painter->setPen(QPen(grad, 0)); + painter->setPen(QPen(grad, 1)); painter->drawLine(top - QPoint(1,0), bottom - QPoint(1,0)); } else { painter->setPen(QPen(creatorTheme()->color(Theme::DoubleTabWidget2ndSeparatorColor), 0)); @@ -100,9 +100,7 @@ static void drawSecondLevelSeparator(QPainter *painter, QPoint top, QPoint botto DoubleTabWidget::DoubleTabWidget(QWidget *parent) : QWidget(parent), - m_left(QLatin1String(":/projectexplorer/images/leftselection.png")), - m_mid(QLatin1String(":/projectexplorer/images/midselection.png")), - m_right(QLatin1String(":/projectexplorer/images/rightselection.png")), + m_selection(StyleHelper::dpiSpecificImageFile(QLatin1String(":/projectexplorer/images/selection.png"))), ui(new Ui::DoubleTabWidget), m_currentIndex(-1), m_lastVisibleIndex(-1) @@ -366,15 +364,16 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) // draw top level tab bar r.setHeight(StyleHelper::navigationWidgetHeight()); + const QRectF borderRect = QRectF(r).adjusted(0.5, 0.5, -0.5, -0.5); if (creatorTheme()->widgetStyle () == Theme::StyleDefault) { QPoint offset = window()->mapToGlobal(QPoint(0, 0)) - mapToGlobal(r.topLeft()); QRect gradientSpan = QRect(offset, window()->size()); StyleHelper::horizontalGradient(&painter, gradientSpan, r); painter.setPen(StyleHelper::borderColor()); QColor lighter(255, 255, 255, 40); - painter.drawLine(r.bottomLeft(), r.bottomRight()); + painter.drawLine(borderRect.bottomLeft(), borderRect.bottomRight()); painter.setPen(lighter); - painter.drawLine(r.topLeft(), r.topRight()); + painter.drawLine(borderRect.topLeft(), borderRect.topRight()); } else { painter.fillRect(r, creatorTheme()->color(Theme::DoubleTabWidget1stEmptyAreaBackgroundColor)); } @@ -400,11 +399,8 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) painter.fillRect(QRect(0, r.height(), r.width(), OTHER_HEIGHT), grad); if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { painter.setPen(QColor(0x505050)); - painter.drawLine(0, r.height() + OTHER_HEIGHT, - r.width(), r.height() + OTHER_HEIGHT); - painter.setPen(Qt::white); - painter.drawLine(0, r.height(), - r.width(), r.height()); + painter.drawLine(QPointF(0.5, r.height() + OTHER_HEIGHT - 0.5), + QPointF(r.width() - 0.5, r.height() + OTHER_HEIGHT - 0.5)); } // top level tabs @@ -480,7 +476,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) Tab tab = m_tabs.at(actualIndex); if (actualIndex == m_currentIndex) { painter.setPen(StyleHelper::borderColor()); - painter.drawLine(x - 1, 0, x - 1, r.height() - 1); + painter.drawLine(QLineF(x - 0.5, 0.5, x - 0.5, r.height() - 1.5)); painter.fillRect(QRect(x, 0, 2 * MARGIN + fm.width(tab.displayName()), r.height() + 1), @@ -488,7 +484,7 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) if (actualIndex != 0 && creatorTheme()->widgetStyle() == Theme::StyleDefault) { painter.setPen(QColor(255, 255, 255, 170)); - painter.drawLine(x, 0, x, r.height()); + painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5)); } x += MARGIN; painter.setPen(creatorTheme()->color(Theme::DoubleTabWidget1stTabActiveTextColor)); @@ -497,21 +493,19 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) x += MARGIN; if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { painter.setPen(StyleHelper::borderColor()); - painter.drawLine(x, 0, x, r.height() - 1); + painter.drawLine(QLineF(x + 0.5, 0.5, x + 0.5, r.height() - 0.5)); painter.setPen(QColor(0, 0, 0, 20)); - painter.drawLine(x + 1, 0, x + 1, r.height() - 1); + painter.drawLine(QLineF(x + 1.5, 0.5, x + 1.5, r.height() - 0.5)); painter.setPen(QColor(255, 255, 255, 170)); - painter.drawLine(x - 1, 0, x - 1, r.height()); + painter.drawLine(QLineF(x - 0.5, 0.5, x - 0.5, r.height() - 0.5)); } } else { - if (i == 0 && creatorTheme()->widgetStyle() == Theme::StyleDefault) - drawFirstLevelSeparator(&painter, QPoint(x, 0), QPoint(x, r.height()-1)); x += MARGIN; painter.setPen(creatorTheme()->color(Theme::DoubleTabWidget1stTabInactiveTextColor)); painter.drawText(x + 1, baseline, tab.displayName()); x += nameWidth.at(actualIndex); x += MARGIN; - drawFirstLevelSeparator(&painter, QPoint(x, 0), QPoint(x, r.height()-1)); + drawFirstLevelSeparator(&painter, QPointF(x + 0.5, 0.5), QPointF(x + 0.5, r.height() - 0.5)); } } @@ -521,14 +515,14 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) opt.rect = QRect(x, 0, OVERFLOW_DROPDOWN_WIDTH - 1, r.height() - 1); style()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &opt, &painter, this); - drawFirstLevelSeparator(&painter, QPoint(x + OVERFLOW_DROPDOWN_WIDTH, 0), - QPoint(x + OVERFLOW_DROPDOWN_WIDTH, r.height()-1)); + drawFirstLevelSeparator(&painter, QPointF(x + OVERFLOW_DROPDOWN_WIDTH + 0.5, 0.5), + QPointF(x + OVERFLOW_DROPDOWN_WIDTH + 0.5, r.height() - 0.5)); } // second level tabs if (m_currentIndex != -1) { - int y = r.height() + (OTHER_HEIGHT - m_left.height()) / 2.; - int imageHeight = m_left.height(); + int imageHeight = static_cast<int>(m_selection.height() / m_selection.devicePixelRatio()); + int y = r.height() + (OTHER_HEIGHT - imageHeight) / 2; Tab currentTab = m_tabs.at(m_currentIndex); QStringList subTabs = currentTab.subTabs; x = 0; @@ -536,16 +530,13 @@ void DoubleTabWidget::paintEvent(QPaintEvent *event) x += MARGIN; int textWidth = fm.width(subTabs.at(i)); if (currentTab.currentSubTab == i) { + const QRect tabRect(x, y, 2 * SELECTION_IMAGE_WIDTH + textWidth, imageHeight); if (creatorTheme()->widgetStyle() == Theme::StyleDefault) { - painter.drawPixmap(x, y, m_left); - painter.drawPixmap(QRect(x + SELECTION_IMAGE_WIDTH, y, - textWidth, imageHeight), - m_mid, QRect(0, 0, m_mid.width(), m_mid.height())); - painter.drawPixmap(x + SELECTION_IMAGE_WIDTH + textWidth, y, m_right); + StyleHelper::drawCornerImage(m_selection, &painter, tabRect, 15, 0, 15, 0); } else { painter.setBrush(creatorTheme()->color(Theme::DoubleTabWidget2ndTabBackgroundColor)); painter.setPen(Qt::NoPen); - painter.drawRoundedRect(QRect(x,y,2*SELECTION_IMAGE_WIDTH+textWidth, m_mid.height()), 5,5); + painter.drawRoundedRect(tabRect, 5, 5); } painter.setPen(creatorTheme()->color(Theme::DoubleTabWidget2ndTabActiveTextColor)); } else { diff --git a/src/plugins/projectexplorer/doubletabwidget.h b/src/plugins/projectexplorer/doubletabwidget.h index 92c23ac54e..90d672ff22 100644 --- a/src/plugins/projectexplorer/doubletabwidget.h +++ b/src/plugins/projectexplorer/doubletabwidget.h @@ -33,7 +33,7 @@ #include <QVector> #include <QWidget> -#include <QPixmap> +#include <QImage> namespace ProjectExplorer { namespace Internal { @@ -88,9 +88,7 @@ private: enum HitArea { HITNOTHING, HITOVERFLOW, HITTAB, HITSUBTAB }; QPair<DoubleTabWidget::HitArea, int> convertPosToTab(QPoint pos); - const QPixmap m_left; - const QPixmap m_mid; - const QPixmap m_right; + const QImage m_selection; Ui::DoubleTabWidget *ui; diff --git a/src/plugins/projectexplorer/foldernavigationwidget.cpp b/src/plugins/projectexplorer/foldernavigationwidget.cpp index 779fe77529..6dbcc602da 100644 --- a/src/plugins/projectexplorer/foldernavigationwidget.cpp +++ b/src/plugins/projectexplorer/foldernavigationwidget.cpp @@ -50,6 +50,7 @@ #include <utils/qtcassert.h> #include <utils/elidinglabel.h> #include <utils/itemviews.h> +#include <utils/themehelper.h> #include <QDebug> #include <QSize> @@ -167,7 +168,8 @@ FolderNavigationWidget::FolderNavigationWidget(QWidget *parent) layout->setContentsMargins(0, 0, 0, 0); setLayout(layout); - m_toggleSync->setIcon(QIcon(QLatin1String(Core::Constants::ICON_LINK))); + m_toggleSync->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_LINK))); m_toggleSync->setCheckable(true); m_toggleSync->setToolTip(tr("Synchronize with Editor")); setAutoSynchronization(true); @@ -446,7 +448,7 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget() FolderNavigationWidget *fnw = new FolderNavigationWidget; n.widget = fnw; QToolButton *filter = new QToolButton; - filter->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + filter->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); filter->setToolTip(tr("Filter Files")); filter->setPopupMode(QToolButton::InstantPopup); filter->setProperty("noArrow", true); diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index cbec918acd..fc151d0387 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -565,7 +565,7 @@ void GccToolChain::addToEnvironment(Environment &env) const addCommandPathToEnvironment(m_compilerCommand, env); } -QList<FileName> GccToolChain::suggestedMkspecList() const +FileNameList GccToolChain::suggestedMkspecList() const { Abi abi = targetAbi(); Abi host = Abi::hostAbi(); @@ -574,34 +574,34 @@ QList<FileName> GccToolChain::suggestedMkspecList() const if (abi.architecture() != host.architecture() || abi.os() != host.os() || abi.osFlavor() != host.osFlavor()) // Note: This can fail:-( - return QList<FileName>(); + return FileNameList(); if (abi.os() == Abi::MacOS) { QString v = version(); // prefer versioned g++ on mac. This is required to enable building for older Mac OS versions if (v.startsWith(QLatin1String("4.0")) && m_compilerCommand.endsWith(QLatin1String("-4.0"))) - return QList<FileName>() << FileName::fromLatin1("macx-g++40"); + return FileNameList() << FileName::fromLatin1("macx-g++40"); if (v.startsWith(QLatin1String("4.2")) && m_compilerCommand.endsWith(QLatin1String("-4.2"))) - return QList<FileName>() << FileName::fromLatin1("macx-g++42"); - return QList<FileName>() << FileName::fromLatin1("macx-g++"); + return FileNameList() << FileName::fromLatin1("macx-g++42"); + return FileNameList() << FileName::fromLatin1("macx-g++"); } if (abi.os() == Abi::LinuxOS) { if (abi.osFlavor() != Abi::GenericLinuxFlavor) - return QList<FileName>(); // most likely not a desktop, so leave the mkspec alone. + return FileNameList(); // most likely not a desktop, so leave the mkspec alone. if (abi.wordWidth() == host.wordWidth()) { // no need to explicitly set the word width, but provide that mkspec anyway to make sure // that the correct compiler is picked if a mkspec with a wordwidth is given. - return QList<FileName>() << FileName::fromLatin1("linux-g++") - << FileName::fromString(QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth())); + return FileNameList() << FileName::fromLatin1("linux-g++") + << FileName::fromString(QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth())); } - return QList<FileName>() << FileName::fromString(QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth())); + return FileNameList() << FileName::fromString(QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth())); } if (abi.os() == Abi::BsdOS && abi.osFlavor() == Abi::FreeBsdFlavor) - return QList<FileName>() << FileName::fromLatin1("freebsd-g++"); + return FileNameList() << FileName::fromLatin1("freebsd-g++"); - return QList<FileName>(); + return FileNameList(); } QString GccToolChain::makeCommand(const Environment &environment) const @@ -1069,20 +1069,20 @@ ToolChain::WarningFlags ClangToolChain::warningFlags(const QStringList &cflags) return flags; } -QList<FileName> ClangToolChain::suggestedMkspecList() const +FileNameList ClangToolChain::suggestedMkspecList() const { Abi abi = targetAbi(); if (abi.os() == Abi::MacOS) - return QList<FileName>() + return FileNameList() << FileName::fromLatin1("macx-clang") << FileName::fromLatin1("macx-clang-32") << FileName::fromLatin1("unsupported/macx-clang") << FileName::fromLatin1("macx-ios-clang"); else if (abi.os() == Abi::LinuxOS) - return QList<FileName>() + return FileNameList() << FileName::fromLatin1("linux-clang") << FileName::fromLatin1("unsupported/linux-clang"); - return QList<FileName>(); // Note: Not supported by Qt yet, so default to the mkspec the Qt was build with + return FileNameList(); // Note: Not supported by Qt yet, so default to the mkspec the Qt was build with } void ClangToolChain::addToEnvironment(Environment &env) const @@ -1148,21 +1148,21 @@ QString MingwToolChain::typeDisplayName() const return MingwToolChainFactory::tr("MinGW"); } -QList<FileName> MingwToolChain::suggestedMkspecList() const +FileNameList MingwToolChain::suggestedMkspecList() const { if (HostOsInfo::isWindowsHost()) - return QList<FileName>() << FileName::fromLatin1("win32-g++"); + return FileNameList() << FileName::fromLatin1("win32-g++"); if (HostOsInfo::isLinuxHost()) { if (version().startsWith(QLatin1String("4.6."))) - return QList<FileName>() + return FileNameList() << FileName::fromLatin1("win32-g++-4.6-cross") << FileName::fromLatin1("unsupported/win32-g++-4.6-cross"); else - return QList<FileName>() + return FileNameList() << FileName::fromLatin1("win32-g++-cross") << FileName::fromLatin1("unsupported/win32-g++-cross"); } - return QList<FileName>(); + return FileNameList(); } QString MingwToolChain::makeCommand(const Environment &environment) const @@ -1256,9 +1256,9 @@ IOutputParser *LinuxIccToolChain::outputParser() const return new LinuxIccParser; } -QList<FileName> LinuxIccToolChain::suggestedMkspecList() const +FileNameList LinuxIccToolChain::suggestedMkspecList() const { - return QList<FileName>() + return FileNameList() << FileName::fromString(QLatin1String("linux-icc-") + QString::number(targetAbi().wordWidth())); } diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index 5a78360b37..4a276329b3 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -74,7 +74,7 @@ public: const Utils::FileName &sysRoot) const override; void addToEnvironment(Utils::Environment &env) const override; QString makeCommand(const Utils::Environment &environment) const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; IOutputParser *outputParser() const override; QVariantMap toMap() const override; @@ -172,7 +172,7 @@ public: ToolChain *clone() const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; void addToEnvironment(Utils::Environment &env) const override; protected: @@ -195,7 +195,7 @@ public: ToolChain *clone() const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; private: explicit MingwToolChain(Detection d); @@ -218,7 +218,7 @@ public: ToolChain *clone() const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; private: explicit LinuxIccToolChain(Detection d); diff --git a/src/plugins/projectexplorer/images/debugger_start_small.png b/src/plugins/projectexplorer/images/debugger_start_small.png Binary files differdeleted file mode 100644 index 98e8ccd001..0000000000 --- a/src/plugins/projectexplorer/images/debugger_start_small.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/leftselection.png b/src/plugins/projectexplorer/images/leftselection.png Binary files differdeleted file mode 100644 index 4287165490..0000000000 --- a/src/plugins/projectexplorer/images/leftselection.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/midselection.png b/src/plugins/projectexplorer/images/midselection.png Binary files differdeleted file mode 100644 index cc881b1e0e..0000000000 --- a/src/plugins/projectexplorer/images/midselection.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/rightselection.png b/src/plugins/projectexplorer/images/rightselection.png Binary files differdeleted file mode 100644 index 1e68b053ee..0000000000 --- a/src/plugins/projectexplorer/images/rightselection.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/run_small.png b/src/plugins/projectexplorer/images/run_small.png Binary files differindex 940af831f8..d1a9c205a5 100644 --- a/src/plugins/projectexplorer/images/run_small.png +++ b/src/plugins/projectexplorer/images/run_small.png diff --git a/src/plugins/projectexplorer/images/run_small@2x.png b/src/plugins/projectexplorer/images/run_small@2x.png Binary files differnew file mode 100644 index 0000000000..6672a17739 --- /dev/null +++ b/src/plugins/projectexplorer/images/run_small@2x.png diff --git a/src/plugins/projectexplorer/images/selection.png b/src/plugins/projectexplorer/images/selection.png Binary files differnew file mode 100644 index 0000000000..b504983df8 --- /dev/null +++ b/src/plugins/projectexplorer/images/selection.png diff --git a/src/plugins/projectexplorer/images/selection@2x.png b/src/plugins/projectexplorer/images/selection@2x.png Binary files differnew file mode 100644 index 0000000000..d32166f764 --- /dev/null +++ b/src/plugins/projectexplorer/images/selection@2x.png diff --git a/src/plugins/projectexplorer/images/stop.png b/src/plugins/projectexplorer/images/stop.png Binary files differdeleted file mode 100644 index 5a9f49c1c6..0000000000 --- a/src/plugins/projectexplorer/images/stop.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/stop_small.png b/src/plugins/projectexplorer/images/stop_small.png Binary files differindex 1063d08998..50571390da 100644 --- a/src/plugins/projectexplorer/images/stop_small.png +++ b/src/plugins/projectexplorer/images/stop_small.png diff --git a/src/plugins/projectexplorer/images/stop_small@2x.png b/src/plugins/projectexplorer/images/stop_small@2x.png Binary files differnew file mode 100644 index 0000000000..59b578d1c0 --- /dev/null +++ b/src/plugins/projectexplorer/images/stop_small@2x.png diff --git a/src/plugins/projectexplorer/images/targetbuildselected.png b/src/plugins/projectexplorer/images/targetbuildselected.png Binary files differdeleted file mode 100644 index 99a83caba1..0000000000 --- a/src/plugins/projectexplorer/images/targetbuildselected.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/targetchangebutton.png b/src/plugins/projectexplorer/images/targetchangebutton.png Binary files differindex acaeaad6e1..6eb3f94256 100644 --- a/src/plugins/projectexplorer/images/targetchangebutton.png +++ b/src/plugins/projectexplorer/images/targetchangebutton.png diff --git a/src/plugins/projectexplorer/images/targetchangebutton2.png b/src/plugins/projectexplorer/images/targetchangebutton2.png Binary files differindex 919527aca0..0b56ffa517 100644 --- a/src/plugins/projectexplorer/images/targetchangebutton2.png +++ b/src/plugins/projectexplorer/images/targetchangebutton2.png diff --git a/src/plugins/projectexplorer/images/targetchangebutton2@2x.png b/src/plugins/projectexplorer/images/targetchangebutton2@2x.png Binary files differnew file mode 100644 index 0000000000..15f545b35b --- /dev/null +++ b/src/plugins/projectexplorer/images/targetchangebutton2@2x.png diff --git a/src/plugins/projectexplorer/images/targetchangebutton@2x.png b/src/plugins/projectexplorer/images/targetchangebutton@2x.png Binary files differnew file mode 100644 index 0000000000..aa0fdcbd55 --- /dev/null +++ b/src/plugins/projectexplorer/images/targetchangebutton@2x.png diff --git a/src/plugins/projectexplorer/images/targetleftbutton.png b/src/plugins/projectexplorer/images/targetleftbutton.png Binary files differdeleted file mode 100644 index f0f4682666..0000000000 --- a/src/plugins/projectexplorer/images/targetleftbutton.png +++ /dev/null diff --git a/src/plugins/projectexplorer/images/targetrightbutton.png b/src/plugins/projectexplorer/images/targetrightbutton.png Binary files differindex b89cd5f91a..5168a02178 100644 --- a/src/plugins/projectexplorer/images/targetrightbutton.png +++ b/src/plugins/projectexplorer/images/targetrightbutton.png diff --git a/src/plugins/projectexplorer/images/targetrightbutton@2x.png b/src/plugins/projectexplorer/images/targetrightbutton@2x.png Binary files differnew file mode 100644 index 0000000000..28eeb09157 --- /dev/null +++ b/src/plugins/projectexplorer/images/targetrightbutton@2x.png diff --git a/src/plugins/projectexplorer/images/targetrunselected.png b/src/plugins/projectexplorer/images/targetrunselected.png Binary files differindex 468c2bb5c5..04b663b7ea 100644 --- a/src/plugins/projectexplorer/images/targetrunselected.png +++ b/src/plugins/projectexplorer/images/targetrunselected.png diff --git a/src/plugins/projectexplorer/images/targetrunselected@2x.png b/src/plugins/projectexplorer/images/targetrunselected@2x.png Binary files differnew file mode 100644 index 0000000000..ed3b3bca8d --- /dev/null +++ b/src/plugins/projectexplorer/images/targetrunselected@2x.png diff --git a/src/plugins/projectexplorer/jsonwizard/jsonsummarypage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonsummarypage.cpp index cf417dd773..da3f513848 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonsummarypage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonsummarypage.cpp @@ -183,7 +183,7 @@ void JsonSummaryPage::addToProject(const JsonWizard::GeneratorFiles &files) QMessageBox::critical(m_wizard, tr("Failed to Add to Project"), tr("Failed to add subproject \"%1\"\nto project \"%2\".") .arg(QDir::toNativeSeparators(generatedProject)) - .arg(folder->path().toUserOutput())); + .arg(folder->filePath().toUserOutput())); return; } m_wizard->removeAttributeFromAllFiles(GeneratedFile::OpenProjectAttribute); @@ -195,7 +195,7 @@ void JsonSummaryPage::addToProject(const JsonWizard::GeneratorFiles &files) QStringList nativeFilePaths = Utils::transform(filePaths, &QDir::toNativeSeparators); QMessageBox::critical(wizard(), tr("Failed to Add to Project"), tr("Failed to add one or more files to project\n\"%1\" (%2).") - .arg(folder->path().toUserOutput(), + .arg(folder->filePath().toUserOutput(), nativeFilePaths.join(QLatin1String(", ")))); return; } diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index 32722aca37..36d0b425b8 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -316,9 +316,9 @@ JsonWizardFactory *JsonWizardFactory::createWizardFactory(const QVariantMap &dat return factory; } -QList<Utils::FileName> &JsonWizardFactory::searchPaths() +Utils::FileNameList &JsonWizardFactory::searchPaths() { - static QList<Utils::FileName> m_searchPaths = QList<Utils::FileName>() + static Utils::FileNameList m_searchPaths = Utils::FileNameList() << Utils::FileName::fromString(Core::ICore::userResourcePath() + QLatin1Char('/') + QLatin1String(WIZARD_PATH)) << Utils::FileName::fromString(Core::ICore::resourcePath() + QLatin1Char('/') + diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h index 530f576d73..d5750dae91 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.h @@ -102,7 +102,7 @@ private: static QList<IWizardFactory *> createWizardFactories(); static JsonWizardFactory *createWizardFactory(const QVariantMap &data, const QDir &baseDir, QString *errorMessage); - static QList<Utils::FileName> &searchPaths(); + static Utils::FileNameList &searchPaths(); static void setVerbose(int level); static int verbose(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp index f80076527c..5f7d5f5303 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp @@ -40,9 +40,11 @@ #include <utils/qtcassert.h> #include <utils/macroexpander.h> #include <utils/templateengine.h> +#include <utils/algorithm.h> #include <QCoreApplication> #include <QDir> +#include <QDirIterator> #include <QVariant> namespace ProjectExplorer { @@ -108,6 +110,69 @@ bool JsonWizardFileGenerator::setup(const QVariant &data, QString *errorMessage) return true; } +Core::GeneratedFile JsonWizardFileGenerator::generateFile(const File &file, + Utils::MacroExpander *expander, QString *errorMessage) +{ + // Read contents of source file + const QFile::OpenMode openMode = file.isBinary.toBool() ? + QIODevice::ReadOnly : (QIODevice::ReadOnly|QIODevice::Text); + + Utils::FileReader reader; + if (!reader.fetch(file.source, openMode, errorMessage)) + return Core::GeneratedFile(); + + // Generate file information: + Core::GeneratedFile gf; + gf.setPath(file.target); + + if (!file.keepExisting) { + if (file.isBinary.toBool()) { + gf.setBinary(true); + gf.setBinaryContents(reader.data()); + } else { + // TODO: Document that input files are UTF8 encoded! + gf.setBinary(false); + Utils::MacroExpander nested; + const File *fPtr = &file; + Utils::MacroExpander *thisExpander = &nested; + nested.registerExtraResolver([fPtr, thisExpander](QString n, QString *ret) -> bool { + foreach (const File::OptionDefinition &od, fPtr->options) { + if (!JsonWizard::boolFromVariant(od.condition, thisExpander)) + continue; + if (n == od.key) { + *ret = od.value; + return true; + } + } + return false; + }); + nested.registerExtraResolver([expander](QString n, QString *ret) { return expander->resolveMacro(n, ret); }); + + gf.setContents(Utils::TemplateEngine::processText(&nested, QString::fromUtf8(reader.data()), + errorMessage)); + if (!errorMessage->isEmpty()) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", "When processing \"%1\":<br>%2") + .arg(file.source, *errorMessage); + return Core::GeneratedFile(); + } + } + } + + Core::GeneratedFile::Attributes attributes = 0; + if (JsonWizard::boolFromVariant(file.openInEditor, expander)) + attributes |= Core::GeneratedFile::OpenEditorAttribute; + if (JsonWizard::boolFromVariant(file.openAsProject, expander)) + attributes |= Core::GeneratedFile::OpenProjectAttribute; + if (JsonWizard::boolFromVariant(file.overwrite, expander)) + attributes |= Core::GeneratedFile::ForceOverwrite; + + if (file.keepExisting) + attributes |= Core::GeneratedFile::KeepExistingFileAttribute; + + gf.setAttributes(attributes); + return gf; +} + Core::GeneratedFiles JsonWizardFileGenerator::fileList(Utils::MacroExpander *expander, const QString &wizardDir, const QString &projectDir, QString *errorMessage) @@ -117,78 +182,63 @@ Core::GeneratedFiles JsonWizardFileGenerator::fileList(Utils::MacroExpander *exp QDir wizard(wizardDir); QDir project(projectDir); - Core::GeneratedFiles result; - - foreach (const File &f, m_fileList) { - if (!JsonWizard::boolFromVariant(f.condition, expander)) - continue; - - const bool keepExisting = f.source.isEmpty(); - const QString targetPath = project.absoluteFilePath(expander->expand(f.target)); - const QString sourcePath - = keepExisting ? targetPath : wizard.absoluteFilePath(expander->expand(f.source)); - const bool isBinary = JsonWizard::boolFromVariant(f.isBinary, expander); - - // Read contents of source file - const QFile::OpenMode openMode - = JsonWizard::boolFromVariant(isBinary, expander) - ? QIODevice::ReadOnly : (QIODevice::ReadOnly|QIODevice::Text); - - Utils::FileReader reader; - if (!reader.fetch(sourcePath, openMode, errorMessage)) - return Core::GeneratedFiles(); - - // Generate file information: - Core::GeneratedFile gf; - gf.setPath(targetPath); - - if (!keepExisting) { - if (isBinary) { - gf.setBinary(true); - gf.setBinaryContents(reader.data()); - } else { - // TODO: Document that input files are UTF8 encoded! - gf.setBinary(false); - Utils::MacroExpander nested; - const File *fPtr = &f; - Utils::MacroExpander *thisExpander = &nested; - nested.registerExtraResolver([fPtr, thisExpander](QString n, QString *ret) -> bool { - foreach (const File::OptionDefinition &od, fPtr->options) { - if (!JsonWizard::boolFromVariant(od.condition, thisExpander)) - continue; - if (n == od.key) { - *ret = od.value; - return true; - } - } - return false; - }); - nested.registerExtraResolver([expander](QString n, QString *ret) { return expander->resolveMacro(n, ret); }); - - gf.setContents(Utils::TemplateEngine::processText(&nested, QString::fromUtf8(reader.data()), - errorMessage)); - if (!errorMessage->isEmpty()) { - *errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", "When processing \"%1\":<br>%2") - .arg(sourcePath, *errorMessage); - return Core::GeneratedFiles(); - } - } + const QList<File> enabledFiles + = Utils::filtered(m_fileList, [&expander](const File &f) { + return JsonWizard::boolFromVariant(f.condition, expander); + }); + + const QList<File> concreteFiles + = Utils::transform(enabledFiles, + [&expander, &wizard, &project](const File &f) -> File { + // Return a new file with concrete values based on input file: + File file = f; + + file.keepExisting = file.source.isEmpty(); + file.target = project.absoluteFilePath(expander->expand(file.target)); + file.source = file.keepExisting ? file.target : wizard.absoluteFilePath( + expander->expand(file.source)); + file.isBinary = JsonWizard::boolFromVariant(file.isBinary, expander); + + return file; + }); + + QList<File> fileList; + QList<File> dirList; + std::tie(fileList, dirList) + = Utils::partition(concreteFiles, [](const File &f) { return !QFileInfo(f.source).isDir(); }); + + const QSet<QString> knownFiles + = QSet<QString>::fromList(Utils::transform(fileList, [](const File &f) { return f.target; })); + + foreach (const File &dir, dirList) { + QDir sourceDir(dir.source); + QDirIterator it(dir.source, QDir::NoDotAndDotDot | QDir::Files| QDir::Hidden, + QDirIterator::Subdirectories); + + while (it.hasNext()) { + const QString relativeFilePath = sourceDir.relativeFilePath(it.next()); + const QString targetPath = dir.target + QLatin1Char('/') + relativeFilePath; + + if (knownFiles.contains(targetPath)) + continue; + + // initialize each new file with properties (isBinary etc) + // from the current directory json entry + File newFile = dir; + newFile.source = dir.source + QLatin1Char('/') + relativeFilePath; + newFile.target = targetPath; + fileList.append(newFile); } + } - Core::GeneratedFile::Attributes attributes = 0; - if (JsonWizard::boolFromVariant(f.openInEditor, expander)) - attributes |= Core::GeneratedFile::OpenEditorAttribute; - if (JsonWizard::boolFromVariant(f.openAsProject, expander)) - attributes |= Core::GeneratedFile::OpenProjectAttribute; - if (JsonWizard::boolFromVariant(f.overwrite, expander)) - attributes |= Core::GeneratedFile::ForceOverwrite; - - if (keepExisting) - attributes |= Core::GeneratedFile::KeepExistingFileAttribute; + const Core::GeneratedFiles result + = Utils::transform(fileList, + [this, &expander, &errorMessage](const File &f) { + return generateFile(f, expander, errorMessage); + }); - gf.setAttributes(attributes); - result.append(gf); - } + if (Utils::contains(result, [](const Core::GeneratedFile &gf) { return gf.path().isEmpty(); })) + return Core::GeneratedFiles(); return result; } diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h index 03ee2dc557..c979165831 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h @@ -53,18 +53,14 @@ public: private: class File { public: - File() : - condition(true), isBinary(false), overwrite(false), - openInEditor(false), openAsProject(false) - { } - + bool keepExisting = false; QString source; QString target; - QVariant condition; - QVariant isBinary; - QVariant overwrite; - QVariant openInEditor; - QVariant openAsProject; + QVariant condition = true; + QVariant isBinary = false; + QVariant overwrite = false; + QVariant openInEditor = false; + QVariant openAsProject = false; class OptionDefinition { public: @@ -75,6 +71,9 @@ private: QList<OptionDefinition> options; }; + Core::GeneratedFile generateFile(const File &file, Utils::MacroExpander *expander, + QString *errorMessage); + QList<File> m_fileList; }; diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp index 963ae3c4be..211214c527 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardpagefactory_p.cpp @@ -199,6 +199,8 @@ bool KitsPageFactory::validateData(Core::Id typeId, const QVariant &data, QStrin // ProjectPageFactory: // -------------------------------------------------------------------- +static const char KEY_PROJECT_NAME_VALIDATOR[] = "projectNameValidator"; + ProjectPageFactory::ProjectPageFactory() { setTypeIdsSuffix(QLatin1String("Project")); @@ -216,6 +218,13 @@ Utils::WizardPage *ProjectPageFactory::create(JsonWizard *wizard, Core::Id typeI QString description = tmp.value(QLatin1String("trDescription"), QLatin1String("%{trDescription}")).toString(); page->setDescription(wizard->expander()->expand(description)); + QString projectNameValidator + = tmp.value(QLatin1String(KEY_PROJECT_NAME_VALIDATOR)).toString(); + if (!projectNameValidator.isEmpty()) { + QRegularExpression regularExpression(projectNameValidator); + if (regularExpression.isValid()) + page->setProjectNameRegularExpression(regularExpression); + } return page; } @@ -230,6 +239,19 @@ bool ProjectPageFactory::validateData(Core::Id typeId, const QVariant &data, QSt "\"data\" must be empty or a JSON object for \"Project\" pages."); return false; } + QVariantMap tmp = data.toMap(); + QString projectNameValidator + = tmp.value(QLatin1String(KEY_PROJECT_NAME_VALIDATOR)).toString(); + if (!projectNameValidator.isNull()) { + QRegularExpression regularExpression(projectNameValidator); + if (!regularExpression.isValid()) { + *errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", + "Invalid regular expression \"%1\" in \"%2\". %3").arg( + projectNameValidator, QLatin1String(KEY_PROJECT_NAME_VALIDATOR), regularExpression.errorString()); + return false; + } + } + return true; } diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 5370cd7532..408c7941ab 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -381,7 +381,7 @@ QIcon Kit::icon(const FileName &path) if (path == FileName::fromLatin1(":///DESKTOP///")) return qApp->style()->standardIcon(QStyle::SP_ComputerIcon); - QFileInfo fi(path.toString()); + QFileInfo fi = path.toFileInfo(); if (fi.isFile() && fi.isReadable()) return QIcon(path.toString()); return QIcon(); diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index 8fea31efd8..29cdb2ca19 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -37,6 +37,7 @@ #include <coreplugin/coreconstants.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QApplication> #include <QLayout> @@ -66,9 +67,6 @@ public: QVariant data(int, int role) const { - static QIcon warningIcon(QString::fromLatin1(Core::Constants::ICON_WARNING)); - static QIcon errorIcon(QString::fromLatin1(Core::Constants::ICON_ERROR)); - if (widget) { if (role == Qt::FontRole) { QFont f = QApplication::font(); @@ -86,10 +84,16 @@ public: return baseName; } if (role == Qt::DecorationRole) { - if (!widget->isValid()) + if (!widget->isValid()) { + static const QIcon errorIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_ERROR))); return errorIcon; - if (widget->hasWarning()) + } + if (widget->hasWarning()) { + static const QIcon warningIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_WARNING))); return warningIcon; + } return QIcon(); } if (role == Qt::ToolTipRole) { diff --git a/src/plugins/projectexplorer/localapplicationrunconfiguration.cpp b/src/plugins/projectexplorer/localapplicationrunconfiguration.cpp index ff3ace9687..c10a6f09e7 100644 --- a/src/plugins/projectexplorer/localapplicationrunconfiguration.cpp +++ b/src/plugins/projectexplorer/localapplicationrunconfiguration.cpp @@ -51,10 +51,6 @@ LocalApplicationRunConfiguration::LocalApplicationRunConfiguration(Target *targe { } -LocalApplicationRunConfiguration::~LocalApplicationRunConfiguration() -{ -} - void LocalApplicationRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const { Q_UNUSED(env); diff --git a/src/plugins/projectexplorer/localapplicationrunconfiguration.h b/src/plugins/projectexplorer/localapplicationrunconfiguration.h index aa4fcde293..51777c775b 100644 --- a/src/plugins/projectexplorer/localapplicationrunconfiguration.h +++ b/src/plugins/projectexplorer/localapplicationrunconfiguration.h @@ -42,8 +42,6 @@ class PROJECTEXPLORER_EXPORT LocalApplicationRunConfiguration : public RunConfig { Q_OBJECT public: - ~LocalApplicationRunConfiguration(); - virtual QString executable() const = 0; virtual ApplicationLauncher::Mode runMode() const = 0; virtual QString workingDirectory() const = 0; diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp index 1ce1869c7c..ad131c7742 100644 --- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp +++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp @@ -30,8 +30,9 @@ #include "localapplicationruncontrol.h" #include "localapplicationrunconfiguration.h" +#include "environmentaspect.h" -#include <projectexplorer/environmentaspect.h> +#include <projectexplorer/projectexplorerconstants.h> #include <utils/qtcassert.h> #include <utils/environment.h> @@ -75,7 +76,7 @@ RunControl *LocalApplicationRunControlFactory::create(RunConfiguration *runConfi LocalApplicationRunControl::LocalApplicationRunControl(RunConfiguration *rc, Core::Id mode) : RunControl(rc, mode), m_runMode(ApplicationLauncher::Console), m_running(false) { - setIcon(QLatin1String(Constants::ICON_RUN_SMALL)); + setIcon(QLatin1String(ProjectExplorer::Constants::ICON_RUN_SMALL)); EnvironmentAspect *environment = rc->extraAspect<EnvironmentAspect>(); Utils::Environment env; if (environment) diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 7d2b2e509c..1178777131 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -144,12 +144,13 @@ void TargetSelectorDelegate::paint(QPainter *painter, } else { painter->fillRect(option.rect, color.darker(140)); StyleHelper::drawCornerImage(selectionGradient, painter, option.rect.adjusted(0, 0, 0, -1), 5, 5, 5, 5); + const QRectF borderRect = QRectF(option.rect).adjusted(0.5, 0.5, -0.5, -0.5); painter->setPen(QColor(255, 255, 255, 60)); - painter->drawLine(option.rect.topLeft(), option.rect.topRight()); + painter->drawLine(borderRect.topLeft(), borderRect.topRight()); painter->setPen(QColor(255, 255, 255, 30)); - painter->drawLine(option.rect.bottomLeft() - QPoint(0,1), option.rect.bottomRight() - QPoint(0,1)); + painter->drawLine(borderRect.bottomLeft() - QPointF(0, 1), borderRect.bottomRight() - QPointF(0, 1)); painter->setPen(QColor(0, 0, 0, 80)); - painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); + painter->drawLine(borderRect.bottomLeft(), borderRect.bottomRight()); } } @@ -1601,10 +1602,11 @@ void MiniProjectTargetSelector::paintEvent(QPaintEvent *) QPainter painter(this); painter.setBrush(creatorTheme()->color(Theme::MiniProjectTargetSelectorBackgroundColor)); painter.drawRect(rect()); - painter.setPen(creatorTheme()->color(Theme::MiniProjectTargetSelectorBackgroundColor)); + painter.setPen(creatorTheme()->color(Theme::MiniProjectTargetSelectorBorderColor)); // draw border on top and right - painter.drawLine(rect().topLeft(), rect().topRight()); - painter.drawLine(rect().topRight(), rect().bottomRight()); + QRectF borderRect = QRectF(rect()).adjusted(0.5, 0.5, -0.5, -0.5); + painter.drawLine(borderRect.topLeft(), borderRect.topRight()); + painter.drawLine(borderRect.topRight(), borderRect.bottomRight()); if (creatorTheme()->flag(Theme::DrawTargetSelectorBottom)) { // draw thicker border on the bottom QRect bottomRect(0, rect().height() - 8, rect().width(), 8); diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 16633ecc4e..0677575980 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -379,21 +379,21 @@ QString MsvcToolChain::typeDisplayName() const return MsvcToolChainFactory::tr("MSVC"); } -QList<Utils::FileName> MsvcToolChain::suggestedMkspecList() const +Utils::FileNameList MsvcToolChain::suggestedMkspecList() const { switch (m_abi.osFlavor()) { case Abi::WindowsMsvc2005Flavor: - return QList<Utils::FileName>() << Utils::FileName::fromLatin1("win32-msvc2005"); + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2005"); case Abi::WindowsMsvc2008Flavor: - return QList<Utils::FileName>() << Utils::FileName::fromLatin1("win32-msvc2008"); + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2008"); case Abi::WindowsMsvc2010Flavor: - return QList<Utils::FileName>() << Utils::FileName::fromLatin1("win32-msvc2010"); + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2010"); case Abi::WindowsMsvc2012Flavor: - return QList<Utils::FileName>() + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2012") << Utils::FileName::fromLatin1("win32-msvc2010"); case Abi::WindowsMsvc2013Flavor: - return QList<Utils::FileName>() + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2013") << Utils::FileName::fromLatin1("winphone-arm-msvc2013") << Utils::FileName::fromLatin1("winphone-x86-msvc2013") @@ -403,7 +403,7 @@ QList<Utils::FileName> MsvcToolChain::suggestedMkspecList() const << Utils::FileName::fromLatin1("win32-msvc2012") << Utils::FileName::fromLatin1("win32-msvc2010"); case Abi::WindowsMsvc2015Flavor: - return QList<Utils::FileName>() + return Utils::FileNameList() << Utils::FileName::fromLatin1("win32-msvc2015") << Utils::FileName::fromLatin1("winphone-arm-msvc2015") << Utils::FileName::fromLatin1("winphone-x86-msvc2015") @@ -413,7 +413,7 @@ QList<Utils::FileName> MsvcToolChain::suggestedMkspecList() const default: break; } - return QList<Utils::FileName>(); + return Utils::FileNameList(); } QVariantMap MsvcToolChain::toMap() const diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 22dfab5ae9..69c6782393 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -61,7 +61,7 @@ public: MsvcToolChain(const QString &name, const Abi &abi, const QString &varsBat, const QString &varsBatArg, Detection d = ManualDetection); bool isValid() const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; static MsvcToolChain *readFromMap(const QVariantMap &data); diff --git a/src/plugins/projectexplorer/nodesvisitor.cpp b/src/plugins/projectexplorer/nodesvisitor.cpp index 076953028b..b815d4dd7d 100644 --- a/src/plugins/projectexplorer/nodesvisitor.cpp +++ b/src/plugins/projectexplorer/nodesvisitor.cpp @@ -93,10 +93,10 @@ void FindNodesForFileVisitor::visitProjectNode(ProjectNode *node) void FindNodesForFileVisitor::visitFolderNode(FolderNode *node) { - if (node->path() == m_path) + if (node->filePath() == m_path) m_nodes << node; foreach (FileNode *fileNode, node->fileNodes()) { - if (fileNode->path() == m_path) + if (fileNode->filePath() == m_path) m_nodes << fileNode; } } @@ -124,9 +124,9 @@ void FindAllFilesVisitor::visitProjectNode(ProjectNode *projectNode) void FindAllFilesVisitor::visitFolderNode(FolderNode *folderNode) { - m_filePaths.append(folderNode->path()); + m_filePaths.append(folderNode->filePath()); foreach (const FileNode *fileNode, folderNode->fileNodes()) - m_filePaths.append(fileNode->path()); + m_filePaths.append(fileNode->filePath()); } NodesVisitor::~NodesVisitor() diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp index 2e9cf17bf7..707fc66c53 100644 --- a/src/plugins/projectexplorer/processstep.cpp +++ b/src/plugins/projectexplorer/processstep.cpp @@ -72,11 +72,7 @@ void ProcessStep::ctor() m_workingDirectory = QLatin1String(Constants::DEFAULT_WORKING_DIR); } -ProcessStep::~ProcessStep() -{ -} - -bool ProcessStep::init() +bool ProcessStep::init(QList<const BuildStep *> &earlierSteps) { BuildConfiguration *bc = buildConfiguration(); if (!bc) @@ -90,7 +86,7 @@ bool ProcessStep::init() pp->resolveAll(); setOutputParser(target()->kit()->createOutputParser()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void ProcessStep::run(QFutureInterface<bool> & fi) diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h index 9bb1ee02ea..61a0462141 100644 --- a/src/plugins/projectexplorer/processstep.h +++ b/src/plugins/projectexplorer/processstep.h @@ -64,13 +64,12 @@ class ProcessStep : public AbstractProcessStep public: explicit ProcessStep(BuildStepList *bsl); - virtual ~ProcessStep(); - virtual bool init(); - virtual void run(QFutureInterface<bool> &); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &) override; - virtual BuildStepConfigWidget *createConfigWidget(); - virtual bool immutable() const; + BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QString command() const; QString arguments() const; @@ -80,12 +79,12 @@ public: void setArguments(const QString &arguments); void setWorkingDirectory(const QString &workingDirectory); - QVariantMap toMap() const; + QVariantMap toMap() const override; protected: ProcessStep(BuildStepList *bsl, ProcessStep *bs); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index f1200a9f8e..3b87652126 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -32,7 +32,9 @@ #include "buildinfo.h" #include "buildconfiguration.h" +#include "deployconfiguration.h" #include "editorconfiguration.h" +#include "kit.h" #include "projectexplorer.h" #include "target.h" #include "session.h" @@ -267,6 +269,138 @@ Target *Project::createTarget(Kit *k) return t; } +Target *Project::cloneTarget(Target *sourceTarget, Kit *k) +{ + Target *newTarget = new Target(this, k); + + QStringList buildconfigurationError; + QStringList deployconfigurationError; + QStringList runconfigurationError; + + foreach (BuildConfiguration *sourceBc, sourceTarget->buildConfigurations()) { + IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(newTarget, sourceBc); + if (!factory) { + buildconfigurationError << sourceBc->displayName(); + continue; + } + BuildConfiguration *newBc = factory->clone(newTarget, sourceBc); + if (!newBc) { + buildconfigurationError << sourceBc->displayName(); + continue; + } + newBc->setDisplayName(sourceBc->displayName()); + newTarget->addBuildConfiguration(newBc); + if (sourceTarget->activeBuildConfiguration() == sourceBc) + SessionManager::setActiveBuildConfiguration(newTarget, newBc, SetActive::NoCascade); + } + if (!newTarget->activeBuildConfiguration()) { + QList<BuildConfiguration *> bcs = newTarget->buildConfigurations(); + if (!bcs.isEmpty()) + SessionManager::setActiveBuildConfiguration(newTarget, bcs.first(), SetActive::NoCascade); + } + + foreach (DeployConfiguration *sourceDc, sourceTarget->deployConfigurations()) { + DeployConfigurationFactory *factory = DeployConfigurationFactory::find(newTarget, sourceDc); + if (!factory) { + deployconfigurationError << sourceDc->displayName(); + continue; + } + DeployConfiguration *newDc = factory->clone(newTarget, sourceDc); + if (!newDc) { + deployconfigurationError << sourceDc->displayName(); + continue; + } + newDc->setDisplayName(sourceDc->displayName()); + newTarget->addDeployConfiguration(newDc); + if (sourceTarget->activeDeployConfiguration() == sourceDc) + SessionManager::setActiveDeployConfiguration(newTarget, newDc, SetActive::NoCascade); + } + if (!newTarget->activeBuildConfiguration()) { + QList<DeployConfiguration *> dcs = newTarget->deployConfigurations(); + if (!dcs.isEmpty()) + SessionManager::setActiveDeployConfiguration(newTarget, dcs.first(), SetActive::NoCascade); + } + + foreach (RunConfiguration *sourceRc, sourceTarget->runConfigurations()) { + IRunConfigurationFactory *factory = IRunConfigurationFactory::find(newTarget, sourceRc); + if (!factory) { + runconfigurationError << sourceRc->displayName(); + continue; + } + RunConfiguration *newRc = factory->clone(newTarget, sourceRc); + if (!newRc) { + runconfigurationError << sourceRc->displayName(); + continue; + } + newRc->setDisplayName(sourceRc->displayName()); + newTarget->addRunConfiguration(newRc); + if (sourceTarget->activeRunConfiguration() == sourceRc) + newTarget->setActiveRunConfiguration(newRc); + } + if (!newTarget->activeRunConfiguration()) { + QList<RunConfiguration *> rcs = newTarget->runConfigurations(); + if (!rcs.isEmpty()) + newTarget->setActiveRunConfiguration(rcs.first()); + } + + bool fatalError = false; + if (buildconfigurationError.count() == sourceTarget->buildConfigurations().count()) + fatalError = true; + + if (deployconfigurationError.count() == sourceTarget->deployConfigurations().count()) + fatalError = true; + + if (runconfigurationError.count() == sourceTarget->runConfigurations().count()) + fatalError = true; + + if (fatalError) { + // That could be a more granular error message + QMessageBox::critical(Core::ICore::mainWindow(), + tr("Incompatible Kit"), + tr("Kit %1 is incompatible with kit %2.") + .arg(sourceTarget->kit()->displayName()) + .arg(k->displayName())); + + delete newTarget; + newTarget = 0; + } else if (!buildconfigurationError.isEmpty() + || !deployconfigurationError.isEmpty() + || ! runconfigurationError.isEmpty()) { + + QString error; + if (!buildconfigurationError.isEmpty()) + error += tr("Build configurations:") + QLatin1Char('\n') + + buildconfigurationError.join(QLatin1Char('\n')); + + if (!deployconfigurationError.isEmpty()) { + if (!error.isEmpty()) + error.append(QLatin1Char('\n')); + error += tr("Deploy configurations:") + QLatin1Char('\n') + + deployconfigurationError.join(QLatin1Char('\n')); + } + + if (!runconfigurationError.isEmpty()) { + if (!error.isEmpty()) + error.append(QLatin1Char('\n')); + error += tr("Run configurations:") + QLatin1Char('\n') + + runconfigurationError.join(QLatin1Char('\n')); + } + + QMessageBox msgBox(Core::ICore::mainWindow()); + msgBox.setIcon(QMessageBox::Warning); + msgBox.setWindowTitle(tr("Partially Incompatible Kit")); + msgBox.setText(tr("Some configurations could not be copied.")); + msgBox.setDetailedText(error); + msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + if (msgBox.exec() != QDialog::Accepted) { + delete newTarget; + newTarget = 0; + } + } + + return newTarget; +} + bool Project::setupTarget(Target *t) { t->updateDefaultBuildConfigurations(); diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index e171f4eb4c..03acb2dbbf 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -102,6 +102,7 @@ public: virtual bool supportsKit(Kit *k, QString *errorMessage = 0) const; Target *createTarget(Kit *k); + Target *cloneTarget(Target *sourceTarget, Kit *k); Target *restoreTarget(const QVariantMap &data); void saveSettings(); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f0c9c85599..3f501c1e64 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -79,7 +79,6 @@ #include "projectnodes.h" #include "sessiondialog.h" #include "projectexplorersettingspage.h" -#include "corelistenercheckingforrunningbuild.h" #include "buildconfiguration.h" #include "miniprojecttargetselector.h" #include "taskhub.h" @@ -132,6 +131,7 @@ #include <utils/parameteraction.h> #include <utils/qtcassert.h> #include <utils/stringutils.h> +#include <utils/themehelper.h> #include <QtPlugin> #include <QDebug> @@ -558,7 +558,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(new RemoveTaskHandler); addAutoReleasedObject(new ConfigTaskHandler(Task::compilerMissingTask(), Constants::KITS_SETTINGS_PAGE_ID)); - addAutoReleasedObject(new CoreListener); + + ICore::addPreCloseListener([this]() -> bool { return coreAboutToClose(); }); dd->m_outputPane = new AppOutputPane; addAutoReleasedObject(dd->m_outputPane); @@ -704,7 +705,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er ActionContainer *runMenu = ActionManager::createMenu(Constants::RUNMENUCONTEXTMENU); runMenu->setOnAllDisabledBehavior(ActionContainer::Hide); QIcon runIcon = QIcon(QLatin1String(Constants::ICON_RUN)); - runIcon.addFile(QLatin1String(Constants::ICON_RUN_SMALL)); + runIcon.addPixmap(Utils::ThemeHelper::themedIconPixmap(QLatin1String(Constants::ICON_RUN_SMALL))); runMenu->menu()->setIcon(runIcon); runMenu->menu()->setTitle(tr("Run")); msubProjectContextMenu->addMenu(runMenu, ProjectExplorer::Constants::G_PROJECT_RUN); @@ -906,8 +907,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er mbuild->addAction(cmd, Constants::G_BUILD_CLEAN); // cancel build action - QIcon stopIcon = QIcon(QLatin1String(Constants::ICON_STOP)); - stopIcon.addFile(QLatin1String(Constants::ICON_STOP_SMALL)); + const QIcon stopIcon = Utils::ThemeHelper::themedIcon(QLatin1String(Constants::ICON_STOP_SMALL)); dd->m_cancelBuildAction = new QAction(stopIcon, tr("Cancel Build"), this); cmd = ActionManager::registerAction(dd->m_cancelBuildAction, Constants::CANCELBUILD); mbuild->addAction(cmd, Constants::G_BUILD_CANCEL); @@ -2079,7 +2079,7 @@ void ProjectExplorerPluginPrivate::runConfigurationConfigurationFinished() static QString pathOrDirectoryFor(Node *node, bool dir) { - Utils::FileName path = node->path(); + Utils::FileName path = node->filePath(); QString location; FolderNode *folder = node->asFolderNode(); if (node->nodeType() == VirtualFolderNodeType && folder) { @@ -2091,7 +2091,7 @@ static QString pathOrDirectoryFor(Node *node, bool dir) // Otherwise we figure out a commonPath from the subfolders QStringList list; foreach (FolderNode *f, folder->subFolderNodes()) - list << f->path().toString() + QLatin1Char('/'); + list << f->filePath().toString() + QLatin1Char('/'); location = Utils::commonPath(list); } @@ -3063,7 +3063,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() m_renameFileAction->setEnabled(actions.contains(Rename)); EditorManager::populateOpenWithMenu(m_openWithMenu, - ProjectTree::currentNode()->path().toString()); + ProjectTree::currentNode()->filePath().toString()); } if (actions.contains(HidePathActions)) { @@ -3147,10 +3147,12 @@ void ProjectExplorerPluginPrivate::addExistingDirectory() QTC_ASSERT(folderNode, return); - SelectableFilesDialogAddDirectory dialog(directoryFor(ProjectTree::currentNode()), QStringList(), ICore::mainWindow()); + SelectableFilesDialogAddDirectory dialog(Utils::FileName::fromString(directoryFor(ProjectTree::currentNode())), + Utils::FileNameList(), ICore::mainWindow()); + dialog.setAddFileFilter(folderNode->addFileFilter()); if (dialog.exec() == QDialog::Accepted) - ProjectExplorerPlugin::addExistingFiles(folderNode, dialog.selectedFiles()); + ProjectExplorerPlugin::addExistingFiles(folderNode, Utils::transform(dialog.selectedFiles(), &Utils::FileName::toString)); } void ProjectExplorerPlugin::addExistingFiles(FolderNode *folderNode, const QStringList &filePaths) @@ -3188,17 +3190,17 @@ void ProjectExplorerPluginPrivate::removeProject() return; ProjectNode *projectNode = subProjectNode->parentFolderNode()->asProjectNode(); if (projectNode) { - RemoveFileDialog removeFileDialog(subProjectNode->path().toString(), ICore::mainWindow()); + RemoveFileDialog removeFileDialog(subProjectNode->filePath().toString(), ICore::mainWindow()); removeFileDialog.setDeleteFileVisible(false); if (removeFileDialog.exec() == QDialog::Accepted) - projectNode->removeSubProjects(QStringList() << subProjectNode->path().toString()); + projectNode->removeSubProjects(QStringList() << subProjectNode->filePath().toString()); } } void ProjectExplorerPluginPrivate::openFile() { QTC_ASSERT(ProjectTree::currentNode(), return); - EditorManager::openEditor(ProjectTree::currentNode()->path().toString()); + EditorManager::openEditor(ProjectTree::currentNode()->filePath().toString()); } void ProjectExplorerPluginPrivate::searchOnFileSystem() @@ -3226,7 +3228,7 @@ void ProjectExplorerPluginPrivate::removeFile() FileNode *fileNode = currentNode->asFileNode(); - QString filePath = currentNode->path().toString(); + QString filePath = currentNode->filePath().toString(); RemoveFileDialog removeFileDialog(filePath, ICore::mainWindow()); if (removeFileDialog.exec() == QDialog::Accepted) { @@ -3257,7 +3259,7 @@ void ProjectExplorerPluginPrivate::deleteFile() FileNode *fileNode = currentNode->asFileNode(); - QString filePath = currentNode->path().toString(); + QString filePath = currentNode->filePath().toString(); QMessageBox::StandardButton button = QMessageBox::question(ICore::mainWindow(), tr("Delete File"), @@ -3302,9 +3304,9 @@ void ProjectExplorerPluginPrivate::handleRenameFile() void ProjectExplorerPlugin::renameFile(Node *node, const QString &newFilePath) { - QString orgFilePath = node->path().toFileInfo().absoluteFilePath(); + QString orgFilePath = node->filePath().toFileInfo().absoluteFilePath(); FolderNode *folderNode = node->parentFolderNode(); - QString projectFileName = folderNode->projectNode()->path().fileName(); + QString projectFileName = folderNode->projectNode()->filePath().fileName(); if (!folderNode->canRenameFile(orgFilePath, newFilePath)) { QTimer::singleShot(0, [orgFilePath, newFilePath, projectFileName] { diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 8cf7433d9a..255e788325 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -135,7 +135,6 @@ public: // internal public for FlatModel static void renameFile(Node *node, const QString &newFilePath); static QStringList projectFilePatterns(); - static bool coreAboutToClose(); static QList<QPair<QString, QString> > recentProjects(); static bool canRun(Project *pro, Core::Id runMode, QString *whyNot = 0); @@ -160,6 +159,9 @@ public: static void updateContextMenuActions(); +private: + static bool coreAboutToClose(); + signals: void runControlStarted(ProjectExplorer::RunControl *rc); void runControlFinished(ProjectExplorer::RunControl *rc); diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index 9ce399bbb7..9f776e6797 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -59,7 +59,6 @@ HEADERS += projectexplorer.h \ gnumakeparser.h \ projectexplorerconstants.h \ projectexplorersettings.h \ - corelistenercheckingforrunningbuild.h \ project.h \ iprojectmanager.h \ currentprojectfilter.h \ @@ -238,7 +237,6 @@ SOURCES += projectexplorer.cpp \ cesdkhandler.cpp \ gccparser.cpp \ projectexplorersettingspage.cpp \ - corelistenercheckingforrunningbuild.cpp \ baseprojectwizarddialog.cpp \ miniprojecttargetselector.cpp \ targetselector.cpp \ diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs index 4b6f1faecd..c64178865e 100644 --- a/src/plugins/projectexplorer/projectexplorer.qbs +++ b/src/plugins/projectexplorer/projectexplorer.qbs @@ -47,7 +47,6 @@ QtcPlugin { "compileoutputwindow.cpp", "compileoutputwindow.h", "configtaskhandler.cpp", "configtaskhandler.h", "copytaskhandler.cpp", "copytaskhandler.h", - "corelistenercheckingforrunningbuild.cpp", "corelistenercheckingforrunningbuild.h", "currentprojectfilter.cpp", "currentprojectfilter.h", "currentprojectfind.cpp", "currentprojectfind.h", "customparser.cpp", "customparser.h", @@ -229,48 +228,7 @@ QtcPlugin { Group { name: "Images" prefix: "images/" - files: [ - "BuildSettings.png", - "CodeStyleSettings.png", - "DeviceConnected.png", - "DeviceDisconnected.png", - "DeviceReadyToUse.png", - "EditorSettings.png", - "MaemoDevice.png", - "ProjectDependencies.png", - "RunSettings.png", - "Simulator.png", - "build.png", - "build_32.png", - "build_small.png", - "clean.png", - "clean_small.png", - "closetab.png", - "debugger_start.png", - "debugger_start_small.png", - "findallprojects.png", - "findproject.png", - "leftselection.png", - "midselection.png", - "projectexplorer.png", - "rebuild.png", - "rebuild_small.png", - "rightselection.png", - "run.png", - "run_small.png", - "session.png", - "stop.png", - "stop_small.png", - "targetbuildselected.png", - "targetleftbutton.png", - "targetpanel_bottom.png", - "targetpanel_gradient.png", - "targetrightbutton.png", - "targetrunselected.png", - "targetseparatorbackground.png", - "targetunselected.png", - "window.png", - ] + files: ["*.png"] } Group { diff --git a/src/plugins/projectexplorer/projectexplorer.qrc b/src/plugins/projectexplorer/projectexplorer.qrc index 4fd236b7cd..43524be6ba 100644 --- a/src/plugins/projectexplorer/projectexplorer.qrc +++ b/src/plugins/projectexplorer/projectexplorer.qrc @@ -7,7 +7,6 @@ <file>images/closetab.png</file> <file>images/debugger_start.png</file> <file>images/debugger_start@2x.png</file> - <file>images/debugger_start_small.png</file> <file>images/mode_project.png</file> <file>images/mode_project@2x.png</file> <file>images/projectexplorer.png</file> @@ -16,15 +15,14 @@ <file>images/run.png</file> <file>images/run@2x.png</file> <file>images/run_small.png</file> + <file>images/run_small@2x.png</file> <file>images/session.png</file> - <file>images/stop.png</file> - <file>images/targetbuildselected.png</file> <file>images/targetrunselected.png</file> + <file>images/targetrunselected@2x.png</file> <file>images/targetseparatorbackground.png</file> <file>images/targetunselected.png</file> - <file>images/leftselection.png</file> - <file>images/rightselection.png</file> - <file>images/midselection.png</file> + <file>images/selection.png</file> + <file>images/selection@2x.png</file> <file>images/BuildSettings.png</file> <file>images/CodeStyleSettings.png</file> <file>images/RunSettings.png</file> @@ -41,14 +39,17 @@ <file>images/targetpanel_gradient.png</file> <file>images/window.png</file> <file>images/stop_small.png</file> + <file>images/stop_small@2x.png</file> <file>images/disabledbuildstep.png</file> <file>images/disabledbuildstep@2x.png</file> <file>images/lightdisabledbuildstep.png</file> <file>images/lightdisabledbuildstep@2x.png</file> <file>images/unconfigured.png</file> - <file>images/targetleftbutton.png</file> <file>images/targetrightbutton.png</file> + <file>images/targetrightbutton@2x.png</file> <file>images/targetchangebutton.png</file> + <file>images/targetchangebutton@2x.png</file> <file>images/targetchangebutton2.png</file> + <file>images/targetchangebutton2@2x.png</file> </qresource> </RCC> diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index d96c3759b3..394190fcfc 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -163,10 +163,9 @@ const char ICON_CLEAN_SMALL[] = ":/projectexplorer/images/clean_small.png"; const char ICON_REBUILD[] = ":/projectexplorer/images/rebuild.png"; const char ICON_REBUILD_SMALL[] = ":/projectexplorer/images/rebuild_small.png"; const char ICON_RUN[] = ":/projectexplorer/images/run.png"; -const char ICON_RUN_SMALL[] = ":/projectexplorer/images/run_small.png"; -const char ICON_DEBUG_SMALL[] = ":/projectexplorer/images/debugger_start_small.png"; +const char ICON_RUN_SMALL[] = ":/projectexplorer/images/run_small.png|IconsRunColor"; const char ICON_STOP[] = ":/projectexplorer/images/stop.png"; -const char ICON_STOP_SMALL[] = ":/projectexplorer/images/stop_small.png"; +const char ICON_STOP_SMALL[] = ":/projectexplorer/images/stop_small.png|IconsStopColor"; const char ICON_WINDOW[] = ":/projectexplorer/images/window.png"; // Mime types diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index 2b6a253d49..3f6a9a29d6 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -199,7 +199,7 @@ bool ProjectFileWizardExtension::processProject( if (m_context->wizard->kind() == IWizardFactory::ProjectWizard) { if (!static_cast<ProjectNode *>(folder)->addSubProjects(QStringList(generatedProject))) { *errorMessage = tr("Failed to add subproject \"%1\"\nto project \"%2\".") - .arg(generatedProject).arg(folder->path().toUserOutput()); + .arg(generatedProject).arg(folder->filePath().toUserOutput()); return false; } *removeOpenProjectAttribute = true; @@ -207,7 +207,7 @@ bool ProjectFileWizardExtension::processProject( QStringList filePaths = Utils::transform(files, &GeneratedFile::path); if (!folder->addFiles(filePaths)) { *errorMessage = tr("Failed to add one or more files to project\n\"%1\" (%2)."). - arg(folder->path().toUserOutput(), filePaths.join(QLatin1Char(','))); + arg(folder->filePath().toUserOutput(), filePaths.join(QLatin1Char(','))); return false; } } diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 4fa29622db..71d6592e0b 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -65,8 +65,8 @@ bool sortNodes(Node *n1, Node *n2) FileNode *file2 = n2->asFileNode(); if (file1 && file1->fileType() == ProjectFileType) { if (file2 && file2->fileType() == ProjectFileType) { - const QString fileName1 = file1->path().fileName(); - const QString fileName2 = file2->path().fileName(); + const QString fileName1 = file1->filePath().fileName(); + const QString fileName2 = file2->filePath().fileName(); int result = caseFriendlyCompare(fileName1, fileName2); if (result != 0) @@ -91,7 +91,8 @@ bool sortNodes(Node *n1, Node *n2) if (result != 0) return result < 0; - result = caseFriendlyCompare(project1->path().toString(), project2->path().toString()); + result = caseFriendlyCompare(project1->filePath().toString(), + project2->filePath().toString()); if (result != 0) return result < 0; return project1 < project2; // sort by pointer value @@ -111,7 +112,8 @@ bool sortNodes(Node *n1, Node *n2) return true; if (folder1->priority() < folder2->priority()) return false; - int result = caseFriendlyCompare(folder1->path().toString(), folder2->path().toString()); + int result = caseFriendlyCompare(folder1->filePath().toString(), + folder2->filePath().toString()); if (result != 0) return result < 0; else @@ -130,7 +132,8 @@ bool sortNodes(Node *n1, Node *n2) FolderNode *folder1 = static_cast<FolderNode*>(n1); FolderNode *folder2 = static_cast<FolderNode*>(n2); - int result = caseFriendlyCompare(folder1->path().toString(), folder2->path().toString()); + int result = caseFriendlyCompare(folder1->filePath().toString(), + folder2->filePath().toString()); if (result != 0) return result < 0; else @@ -148,11 +151,11 @@ bool sortNodes(Node *n1, Node *n2) if (result != 0) return result < 0; - const QString filePath1 = n1->path().toString(); - const QString filePath2 = n2->path().toString(); + const QString filePath1 = n1->filePath().toString(); + const QString filePath2 = n2->filePath().toString(); - const QString fileName1 = Utils::FileName::fromString(filePath1).fileName(); - const QString fileName2 = Utils::FileName::fromString(filePath2).fileName(); + const QString fileName1 = n1->filePath().fileName(); + const QString fileName2 = n2->filePath().fileName(); result = caseFriendlyCompare(fileName1, fileName2); if (result != 0) { @@ -272,7 +275,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const break; } case Qt::EditRole: { - result = node->path().fileName(); + result = node->filePath().fileName(); break; } case Qt::ToolTipRole: { @@ -283,7 +286,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const if (folderNode) result = folderNode->icon(); else - result = Core::FileIconProvider::icon(node->path().toString()); + result = Core::FileIconProvider::icon(node->filePath().toString()); break; } case Qt::FontRole: { @@ -294,7 +297,7 @@ QVariant FlatModel::data(const QModelIndex &index, int role) const break; } case Project::FilePathRole: { - result = node->path().toString(); + result = node->filePath().toString(); break; } case Project::EnabledRole: { @@ -336,7 +339,7 @@ bool FlatModel::setData(const QModelIndex &index, const QVariant &value, int rol Node *node = nodeForIndex(index); - Utils::FileName orgFilePath = node->path(); + Utils::FileName orgFilePath = node->filePath(); Utils::FileName newFilePath = orgFilePath.parentDir().appendPath(value.toString()); ProjectExplorerPlugin::renameFile(node, newFilePath.toString()); @@ -426,7 +429,7 @@ void FlatModel::recursiveAddFileNodes(FolderNode *startNode, QList<Node *> *list QList<Node*> FlatModel::childNodes(FolderNode *parentNode, const QSet<Node*> &blackList) const { - qCDebug(logger()) << " FlatModel::childNodes for " << parentNode->path(); + qCDebug(logger()) << " FlatModel::childNodes for " << parentNode->filePath(); QList<Node*> nodeList; if (parentNode->nodeType() == SessionNodeType) { @@ -498,7 +501,7 @@ QMimeData *FlatModel::mimeData(const QModelIndexList &indexes) const foreach (const QModelIndex &index, indexes) { Node *node = nodeForIndex(index); if (node->asFileNode()) - data->addFile(node->path().toString()); + data->addFile(node->filePath().toString()); data->addValue(QVariant::fromValue(node)); } return data; @@ -614,7 +617,7 @@ bool isSorted(const QList<Node *> &nodes) /// slots and all the fun void FlatModel::added(FolderNode* parentNode, const QList<Node*> &newNodeList) { - qCDebug(logger()) << "FlatModel::added" << parentNode->path() << newNodeList.size() << "nodes"; + qCDebug(logger()) << "FlatModel::added" << parentNode->filePath() << newNodeList.size() << "nodes"; QModelIndex parentIndex = indexForNode(parentNode); // Old list @@ -650,9 +653,8 @@ void FlatModel::added(FolderNode* parentNode, const QList<Node*> &newNodeList) if (!emptyDifference.isEmpty()) { // This should not happen... qDebug() << "FlatModel::added, old Node list should be subset of newNode list, found files in old list which were not part of new list"; - foreach (Node *n, emptyDifference) { - qDebug()<<n->path(); - } + foreach (Node *n, emptyDifference) + qDebug()<<n->filePath(); Q_ASSERT(false); } @@ -718,7 +720,7 @@ void FlatModel::added(FolderNode* parentNode, const QList<Node*> &newNodeList) void FlatModel::removed(FolderNode* parentNode, const QList<Node*> &newNodeList) { - qCDebug(logger()) << "FlatModel::removed" << parentNode->path() << newNodeList.size() << "nodes"; + qCDebug(logger()) << "FlatModel::removed" << parentNode->filePath() << newNodeList.size() << "nodes"; QModelIndex parentIndex = indexForNode(parentNode); // Old list QHash<FolderNode*, QList<Node*> >::const_iterator it = m_childNodes.constFind(parentNode); @@ -740,9 +742,8 @@ void FlatModel::removed(FolderNode* parentNode, const QList<Node*> &newNodeList) if (!emptyDifference.isEmpty()) { // This should not happen... qDebug() << "FlatModel::removed, new Node list should be subset of oldNode list, found files in new list which were not part of old list"; - foreach (Node *n, emptyDifference) { - qDebug()<<n->path(); - } + foreach (Node *n, emptyDifference) + qDebug()<<n->filePath(); Q_ASSERT(false); } diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index d538dd8f9e..83869e5d12 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -69,7 +69,7 @@ Node::Node(NodeType nodeType, const Utils::FileName &filePath, int line) m_line(line), m_projectNode(0), m_folderNode(0), - m_path(filePath) + m_filePath(filePath) { } @@ -91,40 +91,13 @@ void Node::emitNodeSortKeyChanged() ProjectTree::instance()->emitNodeSortKeyChanged(this); } -/*! - * The path of the file representing this node. - * - * This function does not emit any signals. That has to be done by the calling - * class. - */ -void Node::setPath(const Utils::FileName &path) +void Node::setAbsoluteFilePathAndLine(const Utils::FileName &path, int line) { - if (m_path == path) + if (m_filePath == path && m_line == line) return; emitNodeSortKeyAboutToChange(); - m_path = path; - emitNodeSortKeyChanged(); - emitNodeUpdated(); -} - -void Node::setLine(int line) -{ - if (m_line == line) - return; - emitNodeSortKeyAboutToChange(); - m_line = line; - emitNodeSortKeyChanged(); - emitNodeUpdated(); -} - -void Node::setPathAndLine(const Utils::FileName &path, int line) -{ - if (m_path == path - && m_line == line) - return; - emitNodeSortKeyAboutToChange(); - m_path = path; + m_filePath = path; m_line = line; emitNodeSortKeyChanged(); emitNodeUpdated(); @@ -155,9 +128,9 @@ FolderNode *Node::parentFolderNode() const /*! The path of the file or folder in the filesystem the node represents. */ -const Utils::FileName &Node::path() const +const Utils::FileName &Node::filePath() const { - return m_path; + return m_filePath; } int Node::line() const @@ -167,12 +140,12 @@ int Node::line() const QString Node::displayName() const { - return path().fileName(); + return filePath().fileName(); } QString Node::tooltip() const { - return path().toUserOutput(); + return filePath().toUserOutput(); } bool Node::isEnabled() const @@ -336,6 +309,11 @@ void FolderNode::setIcon(const QIcon &icon) m_icon = icon; } +QString FolderNode::addFileFilter() const +{ + return parentFolderNode()->addFileFilter(); +} + bool FolderNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { if (projectNode()) @@ -584,7 +562,7 @@ ProjectNode::ProjectNode(const Utils::FileName &projectFilePath) QString ProjectNode::vcsTopic() const { - const QString dir = path().toFileInfo().absolutePath(); + const QString dir = filePath().toFileInfo().absolutePath(); if (Core::IVersionControl *const vc = Core::VcsManager::findVersionControlForDirectory(dir)) @@ -791,6 +769,11 @@ QList<ProjectNode*> SessionNode::projectNodes() const return m_projectNodes; } +QString SessionNode::addFileFilter() const +{ + return QLatin1String("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;"); +} + void SessionNode::addProjectNodes(const QList<ProjectNode*> &projectNodes) { if (!projectNodes.isEmpty()) { diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 27a9eabc7e..cf6d93dcce 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -112,7 +112,7 @@ public: NodeType nodeType() const; ProjectNode *projectNode() const; // managing project FolderNode *parentFolderNode() const; // parent folder or project - const Utils::FileName &path() const; // file system path + const Utils::FileName &filePath() const; // file system path int line() const; virtual QString displayName() const; virtual QString tooltip() const; @@ -120,9 +120,8 @@ public: virtual QList<ProjectAction> supportedActions(Node *node) const; - void setPath(const Utils::FileName &path); - void setLine(int line); - void setPathAndLine(const Utils::FileName &path, int line); + void setAbsoluteFilePathAndLine(const Utils::FileName &filePath, int line); + void emitNodeUpdated(); virtual FileNode *asFileNode(); @@ -131,7 +130,7 @@ public: virtual SessionNode *asSessionNode(); protected: - Node(NodeType nodeType, const Utils::FileName &path, int line = -1); + Node(NodeType nodeType, const Utils::FileName &filePath, int line = -1); void setProjectNode(ProjectNode *project); void setParentFolderNode(FolderNode *parentFolder); @@ -144,7 +143,7 @@ private: int m_line; ProjectNode *m_projectNode; FolderNode *m_folderNode; - Utils::FileName m_path; + Utils::FileName m_filePath; }; class PROJECTEXPLORER_EXPORT FileNode : public Node @@ -155,7 +154,7 @@ public: FileType fileType() const; bool isGenerated() const; - FileNode *asFileNode(); + FileNode *asFileNode() override; private: // managed by ProjectNode @@ -172,9 +171,9 @@ class PROJECTEXPLORER_EXPORT FolderNode : public Node public: explicit FolderNode(const Utils::FileName &folderPath, NodeType nodeType = FolderNodeType, const QString &displayName = QString()); - virtual ~FolderNode(); + ~FolderNode() override; - QString displayName() const; + QString displayName() const override; QIcon icon() const; QList<FileNode*> fileNodes() const; @@ -185,6 +184,8 @@ public: void setDisplayName(const QString &name); void setIcon(const QIcon &icon); + virtual QString addFileFilter() const; + virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); virtual bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); virtual bool deleteFiles(const QStringList &filePaths); @@ -213,7 +214,7 @@ public: void addFolderNodes(const QList<FolderNode*> &subFolders); void removeFolderNodes(const QList<FolderNode*> &subFolders); - FolderNode *asFolderNode(); + FolderNode *asFolderNode() override; protected: QList<FolderNode*> m_subFolderNodes; @@ -230,7 +231,7 @@ class PROJECTEXPLORER_EXPORT VirtualFolderNode : public FolderNode { public: explicit VirtualFolderNode(const Utils::FileName &folderPath, int priority); - virtual ~VirtualFolderNode(); + ~VirtualFolderNode() override; int priority() const; private: @@ -291,18 +292,20 @@ class PROJECTEXPLORER_EXPORT SessionNode : public FolderNode public: SessionNode(); - QList<ProjectAction> supportedActions(Node *node) const; + QList<ProjectAction> supportedActions(Node *node) const override; QList<ProjectNode*> projectNodes() const; - void accept(NodesVisitor *visitor); + QString addFileFilter() const override; - bool isEnabled() const { return true; } + void accept(NodesVisitor *visitor) override; + + bool isEnabled() const override { return true; } - bool showInSimpleTree() const; + bool showInSimpleTree() const override; void projectDisplayNameChanged(Node *node); - SessionNode *asSessionNode(); + SessionNode *asSessionNode() override; protected: void addProjectNodes(const QList<ProjectNode*> &projectNodes); void removeProjectNodes(const QList<ProjectNode*> &projectNodes); diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index ddc858835e..b99cc3c8b6 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -185,7 +185,7 @@ void ProjectTree::updateFromDocumentManager(bool invalidCurrentNode) const FileName fileName = document ? document->filePath() : FileName(); Node *currentNode = 0; - if (!invalidCurrentNode && m_currentNode && m_currentNode->path() == fileName) + if (!invalidCurrentNode && m_currentNode && m_currentNode->filePath() == fileName) currentNode = m_currentNode; else currentNode = ProjectTreeWidget::nodeForFile(fileName); @@ -393,7 +393,7 @@ void ProjectTree::emitFilesAdded(FolderNode *folder) const FileName fileName = document ? document->filePath() : FileName(); int index = Utils::indexOf(m_filesAdded, [&fileName](FileNode *node) { - return node->path() == fileName; + return node->filePath() == fileName; }); if (index == -1) diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 004aaf31a2..1d596ecdb8 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -49,6 +49,7 @@ #include <utils/navigationtreeview.h> #include <utils/algorithm.h> #include <utils/tooltip/tooltip.h> +#include <utils/themehelper.h> #include <QDebug> #include <QSettings> @@ -233,7 +234,8 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent) this, SLOT(saveExpandData())); m_toggleSync = new QToolButton; - m_toggleSync->setIcon(QIcon(QLatin1String(Core::Constants::ICON_LINK))); + m_toggleSync->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_LINK))); m_toggleSync->setCheckable(true); m_toggleSync->setChecked(autoSynchronization()); m_toggleSync->setToolTip(tr("Synchronize with Editor")); @@ -277,7 +279,7 @@ void ProjectTreeWidget::rowsInserted(const QModelIndex &parent, int start, int e { Node *node = m_model->nodeForIndex(parent); QTC_ASSERT(node, return); - const QString path = node->path().toString(); + const QString path = node->filePath().toString(); const QString displayName = node->displayName(); auto it = m_toExpand.find(ExpandData(path, displayName)); @@ -289,7 +291,7 @@ void ProjectTreeWidget::rowsInserted(const QModelIndex &parent, int start, int e while (i <= end) { QModelIndex idx = m_model->index(i, 0, parent); Node *n = m_model->nodeForIndex(idx); - if (n && n->path() == m_delayedRename) { + if (n && n->filePath() == m_delayedRename) { m_view->setCurrentIndex(idx); m_delayedRename.clear(); break; @@ -353,7 +355,7 @@ void ProjectTreeWidget::loadExpandData() void ProjectTreeWidget::recursiveLoadExpandData(const QModelIndex &index, QSet<ExpandData> &data) { Node *node = m_model->nodeForIndex(index); - const QString path = node->path().toString(); + const QString path = node->filePath().toString(); const QString displayName = node->displayName(); auto it = data.find(ExpandData(path, displayName)); if (it != data.end()) { @@ -380,7 +382,7 @@ void ProjectTreeWidget::recursiveSaveExpandData(const QModelIndex &index, QList< // Note: We store the path+displayname of the node, which isn't unique for e.g. .pri files // but works for most nodes Node *node = m_model->nodeForIndex(index); - const QStringList &list = ExpandData(node->path().toString(), node->displayName()).toStringList(); + const QStringList &list = ExpandData(node->filePath().toString(), node->displayName()).toStringList(); data->append(QVariant::fromValue(list)); int count = m_model->rowCount(index); for (int i = 0; i < count; ++i) @@ -419,7 +421,7 @@ void ProjectTreeWidget::setAutoSynchronization(bool sync) Utils::FileName fileName; if (IDocument *doc = EditorManager::currentDocument()) fileName = doc->filePath(); - if (!currentNode() || currentNode()->path() != fileName) + if (!currentNode() || currentNode()->filePath() != fileName) setCurrentItem(ProjectTreeWidget::nodeForFile(fileName)); } } @@ -440,7 +442,7 @@ void ProjectTreeWidget::editCurrentItem() void ProjectTreeWidget::renamed(const Utils::FileName &oldPath, const Utils::FileName &newPath) { Q_UNUSED(oldPath); - if (!currentNode() || currentNode()->path() != newPath) { + if (!currentNode() || currentNode()->filePath() != newPath) { // try to find the node Node *node = nodeForFile(newPath); if (node) @@ -544,7 +546,7 @@ void ProjectTreeWidget::openItem(const QModelIndex &mainIndex) Node *node = m_model->nodeForIndex(mainIndex); if (node->nodeType() != FileNodeType) return; - IEditor *editor = EditorManager::openEditor(node->path().toString()); + IEditor *editor = EditorManager::openEditor(node->filePath().toString()); if (editor && node->line() >= 0) editor->gotoLine(node->line()); } @@ -587,7 +589,7 @@ NavigationView ProjectTreeWidgetFactory::createWidget() n.widget = ptw; QToolButton *filter = new QToolButton; - filter->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + filter->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); filter->setToolTip(tr("Filter Tree")); filter->setPopupMode(QToolButton::InstantPopup); filter->setProperty("noArrow", true); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 3e5f18a0ee..bfdbe01db9 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -160,7 +160,7 @@ class PROJECTEXPLORER_EXPORT RunConfiguration : public ProjectConfiguration Q_OBJECT public: - ~RunConfiguration(); + ~RunConfiguration() override; virtual bool isEnabled() const; virtual QString disabledReason() const; @@ -176,8 +176,8 @@ public: virtual Utils::OutputFormatter *createOutputFormatter() const; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; QList<IRunConfigurationAspect *> extraAspects() const; IRunConfigurationAspect *extraAspect(Core::Id id) const; diff --git a/src/plugins/projectexplorer/selectablefilesmodel.cpp b/src/plugins/projectexplorer/selectablefilesmodel.cpp index 7fc1494caa..1cf07dd8d9 100644 --- a/src/plugins/projectexplorer/selectablefilesmodel.cpp +++ b/src/plugins/projectexplorer/selectablefilesmodel.cpp @@ -47,28 +47,30 @@ namespace ProjectExplorer { -SelectableFilesModel::SelectableFilesModel(QObject *parent) - : QAbstractItemModel(parent), m_root(0), m_allFiles(true) +Tree::~Tree() { - connect(&m_watcher, SIGNAL(finished()), this, SLOT(buildTreeFinished())); + qDeleteAll(childDirectories); + qDeleteAll(files); +} + +SelectableFilesModel::SelectableFilesModel(QObject *parent) : QAbstractItemModel(parent) +{ + connect(&m_watcher, &QFutureWatcherBase::finished, + this, &SelectableFilesModel::buildTreeFinished); m_root = new Tree; m_root->parent = 0; } -void SelectableFilesModel::setInitialMarkedFiles(const QStringList &files) +void SelectableFilesModel::setInitialMarkedFiles(const Utils::FileNameList &files) { m_files = files.toSet(); - m_outOfBaseDirFiles.clear(); - QString base = m_baseDir + QLatin1Char('/'); - foreach (const QString &file, m_files) - if (!file.startsWith(base)) - m_outOfBaseDirFiles.append(file); - + m_outOfBaseDirFiles + = Utils::filtered(m_files, [this](const Utils::FileName &fn) { return !fn.isChildOf(m_baseDir); }); m_allFiles = false; } -void SelectableFilesModel::startParsing(const QString &baseDir) +void SelectableFilesModel::startParsing(const Utils::FileName &baseDir) { m_watcher.cancel(); m_watcher.waitForFinished(); @@ -93,7 +95,7 @@ void SelectableFilesModel::run(QFutureInterface<void> &fi) void SelectableFilesModel::buildTreeFinished() { beginResetModel(); - deleteTree(m_root); + delete m_root; m_root = m_rootForFuture; m_rootForFuture = 0; endResetModel(); @@ -124,18 +126,21 @@ bool SelectableFilesModel::filter(Tree *t) return Utils::anyOf(m_hideFilesFilter, matchesTreeName); } -void SelectableFilesModel::buildTree(const QString &baseDir, Tree *tree, QFutureInterface<void> &fi, int symlinkDepth) +void SelectableFilesModel::buildTree(const Utils::FileName &baseDir, Tree *tree, + QFutureInterface<void> &fi, int symlinkDepth) { if (symlinkDepth == 0) return; - const QFileInfoList fileInfoList = QDir(baseDir).entryInfoList(QDir::Files | - QDir::Dirs | - QDir::NoDotAndDotDot); + + const QFileInfoList fileInfoList = QDir(baseDir.toString()).entryInfoList(QDir::Files | + QDir::Dirs | + QDir::NoDotAndDotDot); bool allChecked = true; bool allUnchecked = true; foreach (const QFileInfo &fileInfo, fileInfoList) { + Utils::FileName fn = Utils::FileName(fileInfo); if (m_futureCount % 100) { - emit parsingProgress(fileInfo.absoluteFilePath()); + emit parsingProgress(fn); if (fi.isCanceled()) return; } @@ -144,9 +149,9 @@ void SelectableFilesModel::buildTree(const QString &baseDir, Tree *tree, QFuture Tree *t = new Tree; t->parent = tree; t->name = fileInfo.fileName(); - t->fullPath = fileInfo.filePath(); + t->fullPath = fn; t->isDir = true; - buildTree(fileInfo.filePath(), t, fi, symlinkDepth - fileInfo.isSymLink()); + buildTree(fn, t, fi, symlinkDepth - fileInfo.isSymLink()); allChecked &= t->checked == Qt::Checked; allUnchecked &= t->checked == Qt::Unchecked; tree->childDirectories.append(t); @@ -154,8 +159,8 @@ void SelectableFilesModel::buildTree(const QString &baseDir, Tree *tree, QFuture Tree *t = new Tree; t->parent = tree; t->name = fileInfo.fileName(); - t->checked = m_allFiles || m_files.contains(fileInfo.absoluteFilePath()) ? Qt::Checked : Qt::Unchecked; - t->fullPath = fileInfo.filePath(); + t->checked = m_allFiles || m_files.contains(fn) ? Qt::Checked : Qt::Unchecked; + t->fullPath = fn; t->isDir = false; allChecked &= t->checked == Qt::Checked; allUnchecked &= t->checked == Qt::Unchecked; @@ -178,18 +183,7 @@ SelectableFilesModel::~SelectableFilesModel() { m_watcher.cancel(); m_watcher.waitForFinished(); - deleteTree(m_root); -} - -void SelectableFilesModel::deleteTree(Tree *tree) -{ - if (!tree) - return; - foreach (Tree *t, tree->childDirectories) - deleteTree(t); - foreach (Tree *t, tree->files) - deleteTree(t); - delete tree; + delete m_root; } int SelectableFilesModel::columnCount(const QModelIndex &parent) const @@ -246,7 +240,7 @@ QVariant SelectableFilesModel::data(const QModelIndex &index, int role) const return t->checked; if (role == Qt::DecorationRole) { if (t->icon.isNull()) - t->icon = Core::FileIconProvider::icon(t->fullPath); + t->icon = Core::FileIconProvider::icon(t->fullPath.toFileInfo()); return t->icon; } return QVariant(); @@ -318,14 +312,14 @@ Qt::ItemFlags SelectableFilesModel::flags(const QModelIndex &index) const return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable; } -QStringList SelectableFilesModel::selectedPaths() const +Utils::FileNameList SelectableFilesModel::selectedPaths() const { - QStringList result; + Utils::FileNameList result; collectPaths(m_root, &result); return result; } -void SelectableFilesModel::collectPaths(Tree *root, QStringList *result) const +void SelectableFilesModel::collectPaths(Tree *root, Utils::FileNameList *result) const { if (root->checked == Qt::Unchecked) return; @@ -334,19 +328,19 @@ void SelectableFilesModel::collectPaths(Tree *root, QStringList *result) const collectPaths(t, result); } -QStringList SelectableFilesModel::selectedFiles() const +Utils::FileNameList SelectableFilesModel::selectedFiles() const { - QStringList result = m_outOfBaseDirFiles; + Utils::FileNameList result = m_outOfBaseDirFiles.toList(); collectFiles(m_root, &result); return result; } -QStringList SelectableFilesModel::preservedFiles() const +Utils::FileNameList SelectableFilesModel::preservedFiles() const { - return m_outOfBaseDirFiles; + return m_outOfBaseDirFiles.toList(); } -void SelectableFilesModel::collectFiles(Tree *root, QStringList *result) const +void SelectableFilesModel::collectFiles(Tree *root, Utils::FileNameList *result) const { if (root->checked == Qt::Unchecked) return; @@ -519,8 +513,8 @@ Qt::CheckState SelectableFilesModel::applyFilter(const QModelIndex &index) // SelectableFilesDialogs ////////// -SelectableFilesDialogEditFiles::SelectableFilesDialogEditFiles(const QString &path, - const QStringList &files, +SelectableFilesDialogEditFiles::SelectableFilesDialogEditFiles(const Utils::FileName &path, + const Utils::FileNameList &files, QWidget *parent) : QDialog(parent) { @@ -639,13 +633,10 @@ void SelectableFilesDialogEditFiles::parsingFinished() m_view->expand(QModelIndex()); smartExpand(m_selectableFilesModel->index(0,0, QModelIndex())); applyFilter(); - const QStringList &preservedFiles = m_selectableFilesModel->preservedFiles(); - if (preservedFiles.isEmpty()) { - m_preservedFiles->hide(); - } else { - m_preservedFiles->show(); - m_preservedFiles->setText(tr("Not showing %n files that are outside of the base directory.\nThese files are preserved.", 0, preservedFiles.count())); - } + + const Utils::FileNameList preservedFiles = m_selectableFilesModel->preservedFiles(); + m_preservedFiles->setText(tr("Not showing %n files that are outside of the base directory.\nThese files are preserved.", 0, preservedFiles.count())); + m_preservedFiles->setVisible(!preservedFiles.isEmpty()); } void SelectableFilesDialogEditFiles::smartExpand(const QModelIndex &index) @@ -658,11 +649,16 @@ void SelectableFilesDialogEditFiles::smartExpand(const QModelIndex &index) } } -QStringList SelectableFilesDialogEditFiles::selectedFiles() const +Utils::FileNameList SelectableFilesDialogEditFiles::selectedFiles() const { return m_selectableFilesModel->selectedFiles(); } +void SelectableFilesDialogEditFiles::setAddFileFilter(const QString &filter) +{ + m_showFilesfilterLineEdit->setText(filter); +} + void SelectableFilesDialogEditFiles::applyFilter() { const QString showFilesFilter = m_showFilesfilterLineEdit->text(); @@ -674,8 +670,9 @@ void SelectableFilesDialogEditFiles::applyFilter() m_selectableFilesModel->applyFilter(showFilesFilter, hideFilesFilter); } -SelectableFilesDialogAddDirectory::SelectableFilesDialogAddDirectory(const QString &path, - const QStringList &files, QWidget *parent) : +SelectableFilesDialogAddDirectory::SelectableFilesDialogAddDirectory(const Utils::FileName &path, + const Utils::FileNameList &files, + QWidget *parent) : SelectableFilesDialogEditFiles(path, files, parent) { setWindowTitle(tr("Add Existing Directory")); @@ -685,12 +682,12 @@ SelectableFilesDialogAddDirectory::SelectableFilesDialogAddDirectory(const QStri createPathChooser(static_cast<QVBoxLayout*>(layout()), path); } -void SelectableFilesDialogAddDirectory::createPathChooser(QVBoxLayout *layout, const QString &path) +void SelectableFilesDialogAddDirectory::createPathChooser(QVBoxLayout *layout, const Utils::FileName &path) { QHBoxLayout *hbox = new QHBoxLayout; m_pathChooser = new Utils::PathChooser; - m_pathChooser->setPath(path); + m_pathChooser->setFileName(path); m_pathChooser->setHistoryCompleter(QLatin1String("PE.AddToProjectDir.History")); m_sourceDirectoryLabel = new QLabel(tr("Source directory:")); hbox->addWidget(m_sourceDirectoryLabel); @@ -723,7 +720,7 @@ void SelectableFilesDialogAddDirectory::startParsing() { setWidgetsEnabled(false); - m_selectableFilesModel->startParsing(m_pathChooser->path()); + m_selectableFilesModel->startParsing(m_pathChooser->fileName()); } void SelectableFilesDialogAddDirectory::setWidgetsEnabled(bool enabled) diff --git a/src/plugins/projectexplorer/selectablefilesmodel.h b/src/plugins/projectexplorer/selectablefilesmodel.h index dad1d536d3..a201c4a623 100644 --- a/src/plugins/projectexplorer/selectablefilesmodel.h +++ b/src/plugins/projectexplorer/selectablefilesmodel.h @@ -40,6 +40,8 @@ #include <QLabel> #include "projectexplorer_export.h" +#include <utils/fileutils.h> + namespace Utils { class PathChooser; } QT_BEGIN_NAMESPACE @@ -48,8 +50,11 @@ QT_END_NAMESPACE namespace ProjectExplorer { -struct Tree +class Tree { +public: + ~Tree(); + QString name; Qt::CheckState checked; bool isDir; @@ -57,7 +62,7 @@ struct Tree QList<Tree *> files; QList<Tree *> visibleFiles; QIcon icon; - QString fullPath; + Utils::FileName fullPath; Tree *parent; }; @@ -92,7 +97,7 @@ public: SelectableFilesModel(QObject *parent); ~SelectableFilesModel(); - void setInitialMarkedFiles(const QStringList &files); + void setInitialMarkedFiles(const Utils::FileNameList &files); int columnCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &parent) const; @@ -103,11 +108,11 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex &index) const; - QStringList selectedFiles() const; - QStringList selectedPaths() const; - QStringList preservedFiles() const; + Utils::FileNameList selectedFiles() const; + Utils::FileNameList selectedPaths() const; + Utils::FileNameList preservedFiles() const; - void startParsing(const QString &baseDir); + void startParsing(const Utils::FileName &baseDir); void cancel(); void applyFilter(const QString &selectFilesfilter, const QString &hideFilesfilter); @@ -115,7 +120,7 @@ public: signals: void parsingFinished(); - void parsingProgress(const QString &filename); + void parsingProgress(const Utils::FileName &fileName); private slots: void buildTreeFinished(); @@ -125,22 +130,23 @@ private: Qt::CheckState applyFilter(const QModelIndex &index); bool filter(Tree *t); void run(QFutureInterface<void> &fi); - void collectFiles(Tree *root, QStringList *result) const; - void collectPaths(Tree *root, QStringList *result) const; - void buildTree(const QString &baseDir, Tree *tree, QFutureInterface<void> &fi, int symlinkDepth); - void deleteTree(Tree *tree); + void collectFiles(Tree *root, Utils::FileNameList *result) const; + void collectPaths(Tree *root, Utils::FileNameList *result) const; + void buildTree(const Utils::FileName &baseDir, Tree *tree, QFutureInterface<void> &fi, int symlinkDepth); void propagateUp(const QModelIndex &index); void propagateDown(const QModelIndex &index); void selectAllFiles(Tree *root); - Tree *m_root; + + Tree *m_root = 0; + // Used in the future thread need to all not used after calling startParsing - QString m_baseDir; - QSet<QString> m_files; - QStringList m_outOfBaseDirFiles; + Utils::FileName m_baseDir; + QSet<Utils::FileName> m_files; + QSet<Utils::FileName> m_outOfBaseDirFiles; QFutureWatcher<void> m_watcher; - Tree *m_rootForFuture; - int m_futureCount; - bool m_allFiles; + Tree *m_rootForFuture = 0; + int m_futureCount = 0; + bool m_allFiles = true; QList<Glob> m_hideFilesFilter; QList<Glob> m_showFilesFilter; @@ -151,9 +157,12 @@ class PROJECTEXPLORER_EXPORT SelectableFilesDialogEditFiles : public QDialog Q_OBJECT public: - SelectableFilesDialogEditFiles(const QString &path, const QStringList &files, QWidget *parent); + SelectableFilesDialogEditFiles(const Utils::FileName &path, const Utils::FileNameList &files, + QWidget *parent); ~SelectableFilesDialogEditFiles(); - QStringList selectedFiles() const; + Utils::FileNameList selectedFiles() const; + + void setAddFileFilter(const QString &filter); private slots: void applyFilter(); @@ -186,7 +195,8 @@ class SelectableFilesDialogAddDirectory : public SelectableFilesDialogEditFiles Q_OBJECT public: - SelectableFilesDialogAddDirectory(const QString &path, const QStringList &files, QWidget *parent); + SelectableFilesDialogAddDirectory(const Utils::FileName &path, const Utils::FileNameList &files, + QWidget *parent); private slots: void validityOfDirectoryChanged(bool validState); @@ -199,7 +209,7 @@ private: QPushButton *m_startParsingButton; void setWidgetsEnabled(bool enabled); - void createPathChooser(QVBoxLayout *layout, const QString &path); + void createPathChooser(QVBoxLayout *layout, const Utils::FileName &path); }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/settingsaccessor.cpp b/src/plugins/projectexplorer/settingsaccessor.cpp index 0e98b8e02d..d3d80a3853 100644 --- a/src/plugins/projectexplorer/settingsaccessor.cpp +++ b/src/plugins/projectexplorer/settingsaccessor.cpp @@ -514,7 +514,7 @@ public: return m_upgraders.at(pos); return 0; } - Settings bestSettings(const SettingsAccessor *accessor, const QList<FileName> &pathList); + Settings bestSettings(const SettingsAccessor *accessor, const FileNameList &pathList); QList<VersionUpgrader *> m_upgraders; PersistentSettingsWriter *m_writer; @@ -979,9 +979,9 @@ bool SettingsAccessor::addVersionUpgrader(VersionUpgrader *upgrader) } /* Will always return the default name first (if applicable) */ -QList<FileName> SettingsAccessor::settingsFiles(const QString &suffix) const +FileNameList SettingsAccessor::settingsFiles(const QString &suffix) const { - QList<FileName> result; + FileNameList result; QFileInfoList list; const QFileInfo pfi = project()->projectFilePath().toFileInfo(); @@ -1062,7 +1062,7 @@ void SettingsAccessor::backupUserFile() const QVariantMap SettingsAccessor::readUserSettings(QWidget *parent) const { SettingsAccessorPrivate::Settings result; - QList<FileName> fileList = settingsFiles(m_userSuffix); + FileNameList fileList = settingsFiles(m_userSuffix); if (fileList.isEmpty()) // No settings found at all. return result.map; @@ -1112,7 +1112,7 @@ QVariantMap SettingsAccessor::readSharedSettings(QWidget *parent) const } SettingsAccessorPrivate::Settings SettingsAccessorPrivate::bestSettings(const SettingsAccessor *accessor, - const QList<FileName> &pathList) + const FileNameList &pathList) { Settings bestMatch; foreach (const FileName &path, pathList) { diff --git a/src/plugins/projectexplorer/settingsaccessor.h b/src/plugins/projectexplorer/settingsaccessor.h index 1bf05fe798..db310806f6 100644 --- a/src/plugins/projectexplorer/settingsaccessor.h +++ b/src/plugins/projectexplorer/settingsaccessor.h @@ -120,7 +120,7 @@ protected: virtual IssueInfo findIssues(const QVariantMap &data, const Utils::FileName &path) const; private: - QList<Utils::FileName> settingsFiles(const QString &suffix) const; + Utils::FileNameList settingsFiles(const QString &suffix) const; static QByteArray creatorId(); QString defaultFileName(const QString &suffix) const; void backupUserFile() const; diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 3e669d3b0a..cf95b5bc86 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -80,21 +80,21 @@ namespace ProjectExplorer { class TargetPrivate { public: - TargetPrivate(); + TargetPrivate(Kit *k); QList<DeployConfigurationFactory *> deployFactories() const; - bool m_isEnabled; + bool m_isEnabled = true; QIcon m_icon; QIcon m_overlayIcon; QString m_toolTip; QList<BuildConfiguration *> m_buildConfigurations; - BuildConfiguration *m_activeBuildConfiguration; + BuildConfiguration *m_activeBuildConfiguration = 0; QList<DeployConfiguration *> m_deployConfigurations; - DeployConfiguration *m_activeDeployConfiguration; + DeployConfiguration *m_activeDeployConfiguration = 0; QList<RunConfiguration *> m_runConfigurations; - RunConfiguration* m_activeRunConfiguration; + RunConfiguration* m_activeRunConfiguration = 0; DeploymentData m_deploymentData; BuildTargetInfoList m_appTargets; QVariantMap m_pluginSettings; @@ -103,20 +103,15 @@ public: QPixmap m_readyToUsePixmap; QPixmap m_disconnectedPixmap; - Kit *m_kit; + Kit *const m_kit; }; -TargetPrivate::TargetPrivate() : - m_isEnabled(true), - m_activeBuildConfiguration(0), - m_activeDeployConfiguration(0), - m_activeRunConfiguration(0), +TargetPrivate::TargetPrivate(Kit *k) : m_connectedPixmap(QLatin1String(":/projectexplorer/images/DeviceConnected.png")), m_readyToUsePixmap(QLatin1String(":/projectexplorer/images/DeviceReadyToUse.png")), m_disconnectedPixmap(QLatin1String(":/projectexplorer/images/DeviceDisconnected.png")), - m_kit(0) -{ -} + m_kit(k) +{ } QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const { @@ -125,20 +120,17 @@ QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const Target::Target(Project *project, Kit *k) : ProjectConfiguration(project, k->id()), - d(new TargetPrivate) + d(new TargetPrivate(k)) { - connect(DeviceManager::instance(), SIGNAL(updated()), this, SLOT(updateDeviceState())); - - d->m_kit = k; + QTC_CHECK(d->m_kit); + connect(DeviceManager::instance(), &DeviceManager::updated, this, &Target::updateDeviceState); setDisplayName(d->m_kit->displayName()); setIcon(d->m_kit->icon()); - QObject *km = KitManager::instance(); - connect(km, SIGNAL(kitUpdated(ProjectExplorer::Kit*)), - this, SLOT(handleKitUpdates(ProjectExplorer::Kit*))); - connect(km, SIGNAL(kitRemoved(ProjectExplorer::Kit*)), - this, SLOT(handleKitRemoval(ProjectExplorer::Kit*))); + KitManager *km = KitManager::instance(); + connect(km, &KitManager::kitUpdated, this, &Target::handleKitUpdates); + connect(km, &KitManager::kitRemoved, this, &Target::handleKitRemoval); Utils::MacroExpander *expander = macroExpander(); expander->setDisplayName(tr("Target Settings")); @@ -216,7 +208,6 @@ void Target::handleKitRemoval(Kit *k) { if (k != d->m_kit) return; - d->m_kit = 0; project()->removeTarget(this); } @@ -251,12 +242,12 @@ void Target::addBuildConfiguration(BuildConfiguration *configuration) emit addedBuildConfiguration(configuration); - connect(configuration, SIGNAL(environmentChanged()), - SLOT(changeEnvironment())); - connect(configuration, SIGNAL(enabledChanged()), - this, SLOT(changeBuildConfigurationEnabled())); - connect(configuration, SIGNAL(buildDirectoryChanged()), - SLOT(onBuildDirectoryChanged())); + connect(configuration, &BuildConfiguration::environmentChanged, + this, &Target::changeEnvironment); + connect(configuration, &BuildConfiguration::enabledChanged, + this, &Target::changeBuildConfigurationEnabled); + connect(configuration, &BuildConfiguration::buildDirectoryChanged, + this, &Target::onBuildDirectoryChanged); if (!activeBuildConfiguration()) setActiveBuildConfiguration(configuration); @@ -326,7 +317,8 @@ void Target::addDeployConfiguration(DeployConfiguration *dc) // add it d->m_deployConfigurations.push_back(dc); - connect(dc, SIGNAL(enabledChanged()), this, SLOT(changeDeployConfigurationEnabled())); + connect(dc, &DeployConfiguration::enabledChanged, + this, &Target::changeDeployConfigurationEnabled); emit addedDeployConfiguration(dc); @@ -427,7 +419,8 @@ void Target::addRunConfiguration(RunConfiguration* runConfiguration) d->m_runConfigurations.push_back(runConfiguration); - connect(runConfiguration, SIGNAL(enabledChanged()), this, SLOT(changeRunConfigurationEnabled())); + connect(runConfiguration, &RunConfiguration::enabledChanged, + this, &Target::changeRunConfigurationEnabled); emit addedRunConfiguration(runConfiguration); @@ -794,9 +787,7 @@ bool Target::fromMap(const QVariantMap &map) if (!ProjectConfiguration::fromMap(map)) return false; - d->m_kit = KitManager::find(id()); - if (!d->m_kit) - return false; + QTC_ASSERT(d->m_kit == KitManager::find(id()), return false); setDisplayName(d->m_kit->displayName()); // Overwrite displayname read from file setDefaultDisplayName(d->m_kit->displayName()); diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index ecdf531312..0655c44564 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -59,8 +59,7 @@ class PROJECTEXPLORER_EXPORT Target : public ProjectConfiguration Q_OBJECT public: - Target(Project *parent, Kit *k); - ~Target(); + ~Target() override; Project *project() const; @@ -109,7 +108,7 @@ public: QString toolTip() const; void setToolTip(const QString &text); - QVariantMap toMap() const; + QVariantMap toMap() const override; void updateDefaultBuildConfigurations(); void updateDefaultDeployConfigurations(); @@ -157,27 +156,22 @@ signals: /// build configuration was changed. void buildDirectoryChanged(); -public slots: - void onBuildDirectoryChanged(); - -protected: +private: + Target(Project *parent, Kit *k); void setEnabled(bool); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; -protected slots: void updateDeviceState(); + void onBuildDirectoryChanged(); -private slots: void changeEnvironment(); void changeBuildConfigurationEnabled(); void changeDeployConfigurationEnabled(); void changeRunConfigurationEnabled(); - void handleKitUpdates(ProjectExplorer::Kit *k); void handleKitRemoval(ProjectExplorer::Kit *k); -private: void setActiveBuildConfiguration(BuildConfiguration *configuration); void setActiveDeployConfiguration(DeployConfiguration *configuration); TargetPrivate *d; diff --git a/src/plugins/projectexplorer/targetselector.cpp b/src/plugins/projectexplorer/targetselector.cpp index a4f8c4fc27..1935b91092 100644 --- a/src/plugins/projectexplorer/targetselector.cpp +++ b/src/plugins/projectexplorer/targetselector.cpp @@ -78,12 +78,12 @@ using namespace ProjectExplorer::Internal; TargetSelector::TargetSelector(QWidget *parent) : QWidget(parent), m_unselected(QLatin1String(":/projectexplorer/images/targetunselected.png")), - m_runselected(QLatin1String(":/projectexplorer/images/targetrunselected.png")), - m_buildselected(QLatin1String(":/projectexplorer/images/targetbuildselected.png")), - m_targetRightButton(QLatin1String(":/projectexplorer/images/targetrightbutton.png")), - m_targetLeftButton(QLatin1String(":/projectexplorer/images/targetleftbutton.png")), - m_targetChangePixmap(QLatin1String(":/projectexplorer/images/targetchangebutton.png")), - m_targetChangePixmap2(QLatin1String(":/projectexplorer/images/targetchangebutton2.png")), + m_runselected(Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(":/projectexplorer/images/targetrunselected.png"))), + m_buildselected(m_runselected.mirrored(true, false)), + m_targetRightButton(Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(":/projectexplorer/images/targetrightbutton.png"))), + m_targetLeftButton(QPixmap::fromImage(m_targetRightButton.toImage().mirrored(true, false))), + m_targetChangePixmap(Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(":/projectexplorer/images/targetchangebutton.png"))), + m_targetChangePixmap2(Utils::StyleHelper::dpiSpecificImageFile(QLatin1String(":/projectexplorer/images/targetchangebutton2.png"))), m_currentTargetIndex(-1), m_currentHoveredTargetIndex(-1), m_startIndex(0), @@ -386,7 +386,9 @@ void TargetSelector::updateButtons() } else { int tx = NAVBUTTON_WIDTH + 3 + (m_currentHoveredTargetIndex - m_startIndex) * (targetWidth() + 1); - QPoint buttonTopLeft(tx + targetWidth() - m_targetChangePixmap.width() - 1, 3); + const int pixmapWidth = + static_cast<int>(m_targetChangePixmap.width() / m_targetChangePixmap.devicePixelRatio()); + const QPoint buttonTopLeft(tx + targetWidth() - pixmapWidth - 1, 3); m_targetChangeButton->move(buttonTopLeft); m_targetChangeButton->setVisible(true); m_targetChangeButton->setFirst(m_currentHoveredTargetIndex == m_currentTargetIndex); @@ -425,10 +427,10 @@ void TargetSelector::paintEvent(QPaintEvent *event) //draw left button if (m_startIndex > 0) p.drawPixmap(x, 1, m_targetLeftButton); - x += m_targetLeftButton.width(); + x += static_cast<int>(m_targetLeftButton.width() / m_targetLeftButton.devicePixelRatio()); if (m_startIndex == 0) { p.setPen(borderColor); - p.drawLine(x, 1, x, TARGET_HEIGHT); + p.drawLine(QLineF(x + 0.5, 1.5, x + 0.5, TARGET_HEIGHT + 0.5)); } x += 1; // draw targets @@ -449,8 +451,8 @@ void TargetSelector::paintEvent(QPaintEvent *event) p.setPen(Qt::black); } - QRect buttonRect(x, 1, targetWidth() , image.height()); - Utils::StyleHelper::drawCornerImage(image, &p, buttonRect, 16, 0, 16, 0); + QRect buttonRect(x, 1, targetWidth(), static_cast<int>(image.height() / image.devicePixelRatio())); + Utils::StyleHelper::drawCornerImage(image, &p, buttonRect, 13, 0, 13, 0); const QString nameText = QFontMetrics(font()).elidedText(target.name, Qt::ElideRight, targetWidth() - KITNAME_MARGINS); p.drawText(x + (targetWidth()- fm.width(nameText))/2 + 1, 7 + fm.ascent(), @@ -478,14 +480,15 @@ void TargetSelector::paintEvent(QPaintEvent *event) x += targetWidth(); p.setPen(index == m_currentTargetIndex ? QColor(0x222222) : QColor(0xcccccc)); - p.drawLine(x, 1, x, TARGET_HEIGHT); + p.drawLine(QLineF(x + 0.5, 1.5, x + 0.5, TARGET_HEIGHT + 0.5)); ++x; } // draw right button and frame (left hand part already done) p.setPen(borderColor); - p.drawLine(2 + m_targetLeftButton.width(), 0, x - 1, 0); + p.drawLine(QLineF(2.5 + m_targetLeftButton.width() / m_targetLeftButton.devicePixelRatio(), + 0.5, x - 0.5, 0.5)); if (lastIndex < m_targets.size() - 1) p.drawPixmap(x, 1, m_targetRightButton); else - p.drawLine(x - 1, 1, x - 1, TARGET_HEIGHT); + p.drawLine(QLineF(x - 0.5, 1.5, x - 0.5, TARGET_HEIGHT + 0.5)); } diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 447ed76a9e..935d6b231d 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -51,8 +51,6 @@ #include <projectexplorer/kitmanager.h> #include <projectexplorer/buildmanager.h> #include <projectexplorer/buildconfiguration.h> -#include <projectexplorer/deployconfiguration.h> -#include <projectexplorer/runconfiguration.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> @@ -303,7 +301,7 @@ void TargetSettingsPanelWidget::changeActionTriggered(QAction *action) { Kit *k = KitManager::find(action->data().value<Id>()); Target *sourceTarget = m_targets.at(m_menuTargetIndex); - Target *newTarget = cloneTarget(sourceTarget, k); + Target *newTarget = m_project->cloneTarget(sourceTarget, k); if (newTarget) { m_project->addTarget(newTarget); @@ -315,7 +313,7 @@ void TargetSettingsPanelWidget::changeActionTriggered(QAction *action) void TargetSettingsPanelWidget::duplicateActionTriggered(QAction *action) { Kit *k = KitManager::find(action->data().value<Id>()); - Target *newTarget = cloneTarget(m_targets.at(m_menuTargetIndex), k); + Target *newTarget = m_project->cloneTarget(m_targets.at(m_menuTargetIndex), k); if (newTarget) { m_project->addTarget(newTarget); @@ -330,10 +328,7 @@ void TargetSettingsPanelWidget::addActionTriggered(QAction *action) Kit *k = KitManager::find(action->data().value<Id>()); QTC_ASSERT(!m_project->target(k), return); - Target *target = m_project->createTarget(k); - if (!target) - return; - m_project->addTarget(target); + m_project->addTarget(m_project->createTarget(k)); } else { QTC_ASSERT(data.canConvert<IPotentialKit *>(), return); IPotentialKit *potentialKit = data.value<IPotentialKit *>(); @@ -341,148 +336,10 @@ void TargetSettingsPanelWidget::addActionTriggered(QAction *action) } } -Target *TargetSettingsPanelWidget::cloneTarget(Target *sourceTarget, Kit *k) -{ - Target *newTarget = new Target(m_project, k); - - QStringList buildconfigurationError; - QStringList deployconfigurationError; - QStringList runconfigurationError; - - foreach (BuildConfiguration *sourceBc, sourceTarget->buildConfigurations()) { - IBuildConfigurationFactory *factory = IBuildConfigurationFactory::find(newTarget, sourceBc); - if (!factory) { - buildconfigurationError << sourceBc->displayName(); - continue; - } - BuildConfiguration *newBc = factory->clone(newTarget, sourceBc); - if (!newBc) { - buildconfigurationError << sourceBc->displayName(); - continue; - } - newBc->setDisplayName(sourceBc->displayName()); - newTarget->addBuildConfiguration(newBc); - if (sourceTarget->activeBuildConfiguration() == sourceBc) - SessionManager::setActiveBuildConfiguration(newTarget, newBc, SetActive::NoCascade); - } - if (!newTarget->activeBuildConfiguration()) { - QList<BuildConfiguration *> bcs = newTarget->buildConfigurations(); - if (!bcs.isEmpty()) - SessionManager::setActiveBuildConfiguration(newTarget, bcs.first(), SetActive::NoCascade); - } - - foreach (DeployConfiguration *sourceDc, sourceTarget->deployConfigurations()) { - DeployConfigurationFactory *factory = DeployConfigurationFactory::find(newTarget, sourceDc); - if (!factory) { - deployconfigurationError << sourceDc->displayName(); - continue; - } - DeployConfiguration *newDc = factory->clone(newTarget, sourceDc); - if (!newDc) { - deployconfigurationError << sourceDc->displayName(); - continue; - } - newDc->setDisplayName(sourceDc->displayName()); - newTarget->addDeployConfiguration(newDc); - if (sourceTarget->activeDeployConfiguration() == sourceDc) - SessionManager::setActiveDeployConfiguration(newTarget, newDc, SetActive::NoCascade); - } - if (!newTarget->activeBuildConfiguration()) { - QList<DeployConfiguration *> dcs = newTarget->deployConfigurations(); - if (!dcs.isEmpty()) - SessionManager::setActiveDeployConfiguration(newTarget, dcs.first(), SetActive::NoCascade); - } - - foreach (RunConfiguration *sourceRc, sourceTarget->runConfigurations()) { - IRunConfigurationFactory *factory = IRunConfigurationFactory::find(newTarget, sourceRc); - if (!factory) { - runconfigurationError << sourceRc->displayName(); - continue; - } - RunConfiguration *newRc = factory->clone(newTarget, sourceRc); - if (!newRc) { - runconfigurationError << sourceRc->displayName(); - continue; - } - newRc->setDisplayName(sourceRc->displayName()); - newTarget->addRunConfiguration(newRc); - if (sourceTarget->activeRunConfiguration() == sourceRc) - newTarget->setActiveRunConfiguration(newRc); - } - if (!newTarget->activeRunConfiguration()) { - QList<RunConfiguration *> rcs = newTarget->runConfigurations(); - if (!rcs.isEmpty()) - newTarget->setActiveRunConfiguration(rcs.first()); - } - - bool fatalError = false; - if (buildconfigurationError.count() == sourceTarget->buildConfigurations().count()) - fatalError = true; - - if (deployconfigurationError.count() == sourceTarget->deployConfigurations().count()) - fatalError = true; - - if (runconfigurationError.count() == sourceTarget->runConfigurations().count()) - fatalError = true; - - if (fatalError) { - // That could be a more granular error message - QMessageBox::critical(ICore::mainWindow(), - tr("Incompatible Kit"), - tr("Kit %1 is incompatible with kit %2.") - .arg(sourceTarget->kit()->displayName()) - .arg(k->displayName())); - - delete newTarget; - newTarget = 0; - } else if (!buildconfigurationError.isEmpty() - || !deployconfigurationError.isEmpty() - || ! runconfigurationError.isEmpty()) { - - QString error; - if (!buildconfigurationError.isEmpty()) - error += tr("Build configurations:") - + QLatin1Char('\n') - + buildconfigurationError.join(QLatin1Char('\n')); - - if (!deployconfigurationError.isEmpty()) { - if (!error.isEmpty()) - error.append(QLatin1Char('\n')); - error += tr("Deploy configurations:") - + QLatin1Char('\n') - + deployconfigurationError.join(QLatin1Char('\n')); - } - - if (!runconfigurationError.isEmpty()) { - if (!error.isEmpty()) - error.append(QLatin1Char('\n')); - error += tr("Run configurations") + QLatin1Char(' ') - + runconfigurationError.join(QLatin1Char('\n')); - } - - QMessageBox msgBox(ICore::mainWindow()); - msgBox.setIcon(QMessageBox::Warning); - msgBox.setWindowTitle(tr("Partially Incompatible Kit")); - msgBox.setText(tr("Some configurations could not be copied.")); - msgBox.setDetailedText(error); - msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - if (msgBox.exec() != QDialog::Accepted) { - delete newTarget; - newTarget = 0; - } - } - - return newTarget; -} - void TargetSettingsPanelWidget::removeTarget() { Target *t = m_targets.at(m_menuTargetIndex); - removeTarget(t); -} -void TargetSettingsPanelWidget::removeTarget(Target *t) -{ if (BuildManager::isBuilding(t)) { QMessageBox box; QPushButton *closeAnyway = box.addButton(tr("Cancel Build && Remove Kit"), QMessageBox::AcceptRole); @@ -507,7 +364,6 @@ void TargetSettingsPanelWidget::removeTarget(Target *t) } m_project->removeTarget(t); - } void TargetSettingsPanelWidget::showTargetToolTip(const QPoint &globalPos, int targetIndex) @@ -605,11 +461,11 @@ void TargetSettingsPanelWidget::updateTargetButtons() if (m_project->targets().size() < 2) removeAction->setEnabled(false); - connect(m_changeMenu, SIGNAL(triggered(QAction*)), - this, SLOT(changeActionTriggered(QAction*))); - connect(m_duplicateMenu, SIGNAL(triggered(QAction*)), - this, SLOT(duplicateActionTriggered(QAction*))); - connect(removeAction, SIGNAL(triggered()), this, SLOT(removeTarget())); + connect(m_changeMenu, &QMenu::triggered, + this, &TargetSettingsPanelWidget::changeActionTriggered); + connect(m_duplicateMenu, &QMenu::triggered, + this, &TargetSettingsPanelWidget::duplicateActionTriggered); + connect(removeAction, &QAction::triggered, this, &TargetSettingsPanelWidget::removeTarget); foreach (Kit *k, KitManager::sortKits(KitManager::kits())) { if (m_project->target(k)) @@ -664,7 +520,7 @@ void TargetSettingsPanelWidget::importTarget(const Utils::FileName &path) foreach (BuildInfo *info, toImport) { target = m_project->target(info->kitId); if (!target) { - target = new Target(m_project, KitManager::find(info->kitId)); + target = m_project->createTarget(KitManager::find(info->kitId)); m_project->addTarget(target); } bc = info->factory()->create(target, info); diff --git a/src/plugins/projectexplorer/targetsettingspanel.h b/src/plugins/projectexplorer/targetsettingspanel.h index 6eec82ed65..2b8e2bb62f 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.h +++ b/src/plugins/projectexplorer/targetsettingspanel.h @@ -84,8 +84,6 @@ private slots: void changeActionTriggered(QAction *action); void duplicateActionTriggered(QAction *action); private: - Target *cloneTarget(Target *sourceTarget, Kit *k); - void removeTarget(Target *t); void importTarget(const Utils::FileName &path); void createAction(Kit *k, QMenu *menu); diff --git a/src/plugins/projectexplorer/task.cpp b/src/plugins/projectexplorer/task.cpp index 2f83d14e51..2f9c2ba92e 100644 --- a/src/plugins/projectexplorer/task.cpp +++ b/src/plugins/projectexplorer/task.cpp @@ -32,6 +32,7 @@ #include <coreplugin/coreconstants.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include "projectexplorerconstants.h" @@ -41,8 +42,8 @@ namespace ProjectExplorer static QIcon taskTypeIcon(Task::TaskType t) { static QIcon icons[3] = { QIcon(), - QIcon(QLatin1String(Core::Constants::ICON_ERROR)), - QIcon(QLatin1String(Core::Constants::ICON_WARNING)) }; + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_ERROR)), + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))}; if (t < 0 || t > 2) t = Task::Unknown; diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index 62a6515171..5f2650a005 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -35,6 +35,7 @@ #include <coreplugin/ioutputpane.h> #include <utils/qtcassert.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> using namespace ProjectExplorer; @@ -101,8 +102,8 @@ void TaskMark::clicked() } TaskHub::TaskHub() - : m_errorIcon(QLatin1String(Core::Constants::ICON_ERROR)), - m_warningIcon(QLatin1String(Core::Constants::ICON_WARNING)) + : m_errorIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_ERROR))), + m_warningIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))) { m_instance = this; qRegisterMetaType<ProjectExplorer::Task>("ProjectExplorer::Task"); @@ -126,7 +127,7 @@ void TaskHub::addCategory(Core::Id categoryId, const QString &displayName, bool emit m_instance->categoryAdded(categoryId, displayName, visible); } -QObject *TaskHub::instance() +TaskHub *TaskHub::instance() { return m_instance; } diff --git a/src/plugins/projectexplorer/taskhub.h b/src/plugins/projectexplorer/taskhub.h index 006a1d49c8..82b138f49a 100644 --- a/src/plugins/projectexplorer/taskhub.h +++ b/src/plugins/projectexplorer/taskhub.h @@ -44,7 +44,7 @@ class PROJECTEXPLORER_EXPORT TaskHub : public QObject { Q_OBJECT public: - static QObject *instance(); + static TaskHub *instance(); // Convenience overload static void addTask(Task::TaskType type, const QString &description, diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp index d069a50f6d..55c03c2e48 100644 --- a/src/plugins/projectexplorer/taskwindow.cpp +++ b/src/plugins/projectexplorer/taskwindow.cpp @@ -46,6 +46,7 @@ #include <utils/algorithm.h> #include <utils/qtcassert.h> #include <utils/itemviews.h> +#include <utils/themehelper.h> #include <QDir> #include <QPainter> @@ -216,7 +217,7 @@ public: }; static QToolButton *createFilterButton(QIcon icon, const QString &toolTip, - QObject *receiver, const char *slot) + QObject *receiver, std::function<void(bool)> lambda) { QToolButton *button = new QToolButton; button->setIcon(icon); @@ -225,7 +226,7 @@ static QToolButton *createFilterButton(QIcon icon, const QString &toolTip, button->setChecked(true); button->setAutoRaise(true); button->setEnabled(true); - QObject::connect(button, SIGNAL(toggled(bool)), receiver, slot); + QObject::connect(button, &QToolButton::toggled, receiver, lambda); return button; } @@ -264,42 +265,33 @@ TaskWindow::TaskWindow() : d(new TaskWindowPrivate) d->m_listview->setContextMenuPolicy(Qt::ActionsContextMenu); d->m_filterWarningsButton = createFilterButton( - QIcon(QLatin1String(Core::Constants::ICON_WARNING)), - tr("Show Warnings"), this, SLOT(setShowWarnings(bool))); + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING)), + tr("Show Warnings"), this, [this](bool show) { setShowWarnings(show); }); d->m_categoriesButton = new QToolButton; - d->m_categoriesButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + d->m_categoriesButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); d->m_categoriesButton->setToolTip(tr("Filter by categories")); d->m_categoriesButton->setProperty("noArrow", true); d->m_categoriesButton->setAutoRaise(true); d->m_categoriesButton->setPopupMode(QToolButton::InstantPopup); d->m_categoriesMenu = new QMenu(d->m_categoriesButton); - connect(d->m_categoriesMenu, SIGNAL(aboutToShow()), this, SLOT(updateCategoriesMenu())); + connect(d->m_categoriesMenu, &QMenu::aboutToShow, this, &TaskWindow::updateCategoriesMenu); d->m_categoriesButton->setMenu(d->m_categoriesMenu); - QObject *hub = TaskHub::instance(); - connect(hub, SIGNAL(categoryAdded(Core::Id,QString,bool)), - this, SLOT(addCategory(Core::Id,QString,bool))); - connect(hub, SIGNAL(taskAdded(ProjectExplorer::Task)), - this, SLOT(addTask(ProjectExplorer::Task))); - connect(hub, SIGNAL(taskRemoved(ProjectExplorer::Task)), - this, SLOT(removeTask(ProjectExplorer::Task))); - connect(hub, SIGNAL(taskLineNumberUpdated(uint,int)), - this, SLOT(updatedTaskLineNumber(uint,int))); - connect(hub, SIGNAL(taskFileNameUpdated(uint,QString)), - this, SLOT(updatedTaskFileName(uint,QString))); - connect(hub, SIGNAL(tasksCleared(Core::Id)), - this, SLOT(clearTasks(Core::Id))); - connect(hub, SIGNAL(categoryVisibilityChanged(Core::Id,bool)), - this, SLOT(setCategoryVisibility(Core::Id,bool))); - connect(hub, SIGNAL(popupRequested(int)), - this, SLOT(popup(int))); - connect(hub, SIGNAL(showTask(uint)), - this, SLOT(showTask(uint))); - connect(hub, SIGNAL(openTask(uint)), - this, SLOT(openTask(uint))); + TaskHub *hub = TaskHub::instance(); + connect(hub, &TaskHub::categoryAdded, this, &TaskWindow::addCategory); + connect(hub, &TaskHub::taskAdded, this, &TaskWindow::addTask); + connect(hub, &TaskHub::taskRemoved, this, &TaskWindow::removeTask); + connect(hub, &TaskHub::taskLineNumberUpdated, this, &TaskWindow::updatedTaskLineNumber); + connect(hub, &TaskHub::taskFileNameUpdated, this, &TaskWindow::updatedTaskFileName); + connect(hub, &TaskHub::tasksCleared, this, &TaskWindow::clearTasks); + connect(hub, &TaskHub::categoryVisibilityChanged, this, &TaskWindow::setCategoryVisibility); + connect(hub, &TaskHub::popupRequested, this, &TaskWindow::popup); + connect(hub, &TaskHub::showTask, this, &TaskWindow::showTask); + connect(hub, &TaskHub::openTask, this, &TaskWindow::openTask); connect(d->m_filter, &TaskFilterModel::rowsRemoved, [this]() { emit setBadgeNumber(d->m_filter->rowCount()); }); @@ -347,7 +339,7 @@ void TaskWindow::delayedInitialization() QAction *action = h->createAction(this); QTC_ASSERT(action, continue); action->setProperty("ITaskHandler", qVariantFromValue(qobject_cast<QObject*>(h))); - connect(action, SIGNAL(triggered()), this, SLOT(actionTriggered())); + connect(action, &QAction::triggered, this, &TaskWindow::actionTriggered); d->m_actions << action; Core::Id id = h->actionManagerId(); diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index 13fe120300..c061d8069b 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -125,9 +125,9 @@ QByteArray ToolChain::id() const return d->m_id; } -QList<Utils::FileName> ToolChain::suggestedMkspecList() const +Utils::FileNameList ToolChain::suggestedMkspecList() const { - return QList<Utils::FileName>(); + return Utils::FileNameList(); } Utils::FileName ToolChain::suggestedDebugger() const diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index d3b3dfa5d5..f54b93c98b 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -34,14 +34,13 @@ #include "projectexplorer_export.h" #include <coreplugin/id.h> +#include <utils/fileutils.h> + #include <QObject> #include <QString> #include <QVariantMap> -namespace Utils { -class Environment; -class FileName; -} +namespace Utils { class Environment; } namespace ProjectExplorer { @@ -79,7 +78,7 @@ public: QByteArray id() const; - virtual QList<Utils::FileName> suggestedMkspecList() const; + virtual Utils::FileNameList suggestedMkspecList() const; virtual Utils::FileName suggestedDebugger() const; Core::Id typeId() const; diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp index e581617f13..bb8502a373 100644 --- a/src/plugins/projectexplorer/toolchainmanager.cpp +++ b/src/plugins/projectexplorer/toolchainmanager.cpp @@ -46,6 +46,8 @@ #include <QDir> #include <QSettings> +#include <tuple> + static const char TOOLCHAIN_DATA_KEY[] = "ToolChain."; static const char TOOLCHAIN_COUNT_KEY[] = "ToolChain.Count"; static const char TOOLCHAIN_FILE_VERSION_KEY[] = "Version"; @@ -196,11 +198,9 @@ static QList<ToolChain *> subtractById(const QList<ToolChain *> &a, const QList< }); } -static QList<ToolChain *> intersectByEqual(const QList<ToolChain *> &a, const QList<ToolChain *> &b) +static bool containsByEqual(const QList<ToolChain *> &a, const ToolChain *atc) { - return Utils::filtered(a, [&b](ToolChain *atc) { - return Utils::anyOf(b, [atc](ToolChain *btc) { return *atc == *btc; }); - }); + return Utils::anyOf(a, [atc](ToolChain *btc) { return *atc == *btc; }); } static QList<ToolChain *> makeUnique(const QList<ToolChain *> &a) @@ -223,22 +223,20 @@ static ToolChainOperations mergeToolChainLists(const QList<ToolChain *> &systemF const QList<ToolChain *> &userFileTcs, const QList<ToolChain *> &autodetectedTcs) { - const QList<ToolChain *> manualUserTcs - = Utils::filtered(userFileTcs, [](ToolChain *t) { return !t->isAutoDetected(); }); - - // Remove systemFileTcs from autodetectedUserTcs based on id-matches: - const QList<ToolChain *> autodetectedUserFileTcs - = Utils::filtered(userFileTcs, &ToolChain::isAutoDetected); + // Remove systemFileTcs from autodetectedUserFileTcs based on id-matches: + QList<ToolChain *> manualUserFileTcs; + QList<ToolChain *> autodetectedUserFileTcs; + std::tie(autodetectedUserFileTcs, manualUserFileTcs) + = Utils::partition(userFileTcs, &ToolChain::isAutoDetected); const QList<ToolChain *> autodetectedUserTcs = subtractById(autodetectedUserFileTcs, systemFileTcs); // Calculate a set of Tcs that were detected before (and saved to userFile) and that // got re-detected again. Take the userTcs (to keep Ids) over the same in autodetectedTcs. - const QList<ToolChain *> redetectedUserTcs - = intersectByEqual(autodetectedUserTcs, autodetectedTcs); - - // Remove redetected tcs from autodetectedUserTcs: - const QList<ToolChain *> notRedetectedUserTcs - = subtractByPointerEqual(autodetectedUserTcs, redetectedUserTcs); + QList<ToolChain *> redetectedUserTcs; + QList<ToolChain *> notRedetectedUserTcs; + std::tie(redetectedUserTcs, notRedetectedUserTcs) + = Utils::partition(autodetectedUserTcs, + [&autodetectedTcs](ToolChain *tc) { return containsByEqual(autodetectedTcs, tc); }); // Remove redetected tcs from autodetectedTcs: const QList<ToolChain *> newlyAutodetectedTcs @@ -248,12 +246,12 @@ static ToolChainOperations mergeToolChainLists(const QList<ToolChain *> &systemF = Utils::filtered(notRedetectedUserTcs, &ToolChain::isValid); const QList<ToolChain *> validManualUserTcs - = Utils::filtered(manualUserTcs, &ToolChain::isValid); + = Utils::filtered(manualUserFileTcs, &ToolChain::isValid); ToolChainOperations result; result.toDemote = notRedetectedButValidUserTcs; - result.toRegister = result.toDemote + systemFileTcs + redetectedUserTcs + newlyAutodetectedTcs - + validManualUserTcs; + result.toRegister = systemFileTcs + validManualUserTcs + result.toDemote // manual TCs + + redetectedUserTcs + newlyAutodetectedTcs; // auto TCs result.toDelete = makeUnique(subtractByPointerEqual(systemFileTcs + userFileTcs + autodetectedTcs, result.toRegister)); diff --git a/src/plugins/projectexplorer/wincetoolchain.cpp b/src/plugins/projectexplorer/wincetoolchain.cpp index 5b6a73301f..5e8217746b 100644 --- a/src/plugins/projectexplorer/wincetoolchain.cpp +++ b/src/plugins/projectexplorer/wincetoolchain.cpp @@ -277,7 +277,7 @@ QString WinCEToolChain::typeDisplayName() const return WinCEToolChainFactory::tr("WinCE"); } -QList<Utils::FileName> WinCEToolChain::suggestedMkspecList() const +Utils::FileNameList WinCEToolChain::suggestedMkspecList() const { const QChar specSeperator(QLatin1Char('-')); @@ -289,7 +289,7 @@ QList<Utils::FileName> WinCEToolChain::suggestedMkspecList() const specString += specSeperator; specString += m_msvcVer; - return QList<Utils::FileName>() << Utils::FileName::fromString(specString); + return Utils::FileNameList() << Utils::FileName::fromString(specString); } diff --git a/src/plugins/projectexplorer/wincetoolchain.h b/src/plugins/projectexplorer/wincetoolchain.h index 44c0e3f3c6..f87278f64a 100644 --- a/src/plugins/projectexplorer/wincetoolchain.h +++ b/src/plugins/projectexplorer/wincetoolchain.h @@ -51,7 +51,7 @@ public: const QString &libPath, Detection d = ManualDetection); - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; static WinCEToolChain *readFromMap(const QVariantMap &data); diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index b4daa03614..b9afaa69c4 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -331,15 +331,14 @@ private: class PythonProjectNode : public ProjectNode { public: - PythonProjectNode(PythonProject *project, Core::IDocument *projectFile); - - Core::IDocument *projectFile() const; - QString projectFilePath() const; + PythonProjectNode(PythonProject *project); bool showInSimpleTree() const override; QList<ProjectAction> supportedActions(Node *node) const override; + QString addFileFilter() const override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; void refresh(QSet<QString> oldFileList = QSet<QString>()); @@ -351,7 +350,6 @@ private: private: PythonProject *m_project; - Core::IDocument *m_projectFile; }; class PythonRunConfigurationWidget : public QWidget @@ -637,7 +635,7 @@ PythonProject::PythonProject(PythonProjectManager *manager, const QString &fileN DocumentManager::addDocument(m_document); - m_rootNode = new PythonProjectNode(this, m_document); + m_rootNode = new PythonProjectNode(this); m_manager->registerProject(this); } @@ -778,7 +776,7 @@ public: , m_displayName(nodeDisplayName) {} - QString displayName() const { return m_displayName; } + QString displayName() const override { return m_displayName; } private: QString m_displayName; }; @@ -865,7 +863,7 @@ Project::RestoreResult PythonProject::fromMap(const QVariantMap &map, QString *e if (res == RestoreResult::Ok) { Kit *defaultKit = KitManager::defaultKit(); if (!activeTarget() && defaultKit) - addTarget(new Target(this, defaultKit)); + addTarget(createTarget(defaultKit)); refresh(); @@ -893,22 +891,11 @@ Project::RestoreResult PythonProject::fromMap(const QVariantMap &map, QString *e return res; } -PythonProjectNode::PythonProjectNode(PythonProject *project, Core::IDocument *projectFile) - : ProjectNode(projectFile->filePath()) +PythonProjectNode::PythonProjectNode(PythonProject *project) + : ProjectNode(project->projectFilePath()) , m_project(project) - , m_projectFile(projectFile) -{ - setDisplayName(projectFile->filePath().toFileInfo().completeBaseName()); -} - -Core::IDocument *PythonProjectNode::projectFile() const { - return m_projectFile; -} - -QString PythonProjectNode::projectFilePath() const -{ - return m_projectFile->filePath().toString(); + setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); } QHash<QString, QStringList> sortFilesIntoPaths(const QString &base, const QSet<QString> &files) @@ -951,7 +938,7 @@ void PythonProjectNode::refresh(QSet<QString> oldFileList) QSet<QString> added = newFileList; added.subtract(oldFileList); - QString baseDir = path().toFileInfo().absolutePath(); + QString baseDir = filePath().toFileInfo().absolutePath(); FilesInPathHash filesInPaths = sortFilesIntoPaths(baseDir, added); FilesInPathHashConstIt cend = filesInPaths.constEnd(); @@ -989,7 +976,7 @@ void PythonProjectNode::refresh(QSet<QString> oldFileList) QList<FileNode *> fileNodes; foreach (const QString &file, it.value()) { foreach (FileNode *fn, folder->fileNodes()) { - if (fn->path().toString() == file) + if (fn->filePath().toString() == file) fileNodes.append(fn); } } @@ -1024,7 +1011,7 @@ FolderNode *PythonProjectNode::createFolderByName(const QStringList &components, const QString component = components.at(end - 1); - const FileName folderPath = path().parentDir().appendPath(folderName); + const FileName folderPath = filePath().parentDir().appendPath(folderName); FolderNode *folder = new FolderNode(folderPath); folder->setDisplayName(component); @@ -1052,9 +1039,9 @@ FolderNode *PythonProjectNode::findFolderByName(const QStringList &components, i if (!parent) return 0; - const QString baseDir = path().toFileInfo().path(); + const QString baseDir = filePath().toFileInfo().path(); foreach (FolderNode *fn, parent->subFolderNodes()) { - if (fn->path().toString() == baseDir + QLatin1Char('/') + folderName) + if (fn->filePath().toString() == baseDir + QLatin1Char('/') + folderName) return fn; } return 0; @@ -1072,6 +1059,11 @@ QList<ProjectAction> PythonProjectNode::supportedActions(Node *node) const return {}; } +QString PythonProjectNode::addFileFilter() const +{ + return QLatin1String("*.py"); +} + bool PythonProjectNode::renameFile(const QString &filePath, const QString &newFilePath) { return m_project->renameFile(filePath, newFilePath); diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp index 111264fb85..16273afac2 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp @@ -38,6 +38,7 @@ #include "ui_qbsbuildstepconfigwidget.h" #include <coreplugin/icore.h> +#include <coreplugin/coreconstants.h> #include <projectexplorer/buildsteplist.h> #include <projectexplorer/kit.h> #include <projectexplorer/projectexplorerconstants.h> @@ -46,6 +47,7 @@ #include <qtsupport/qtversionmanager.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> +#include <utils/themehelper.h> #include <qbs.h> @@ -93,8 +95,9 @@ QbsBuildStep::~QbsBuildStep() delete m_parser; } -bool QbsBuildStep::init() +bool QbsBuildStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); if (static_cast<QbsProject *>(project())->isParsing() || m_job) return false; @@ -482,6 +485,8 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step) : QString *errorMessage) { return validateProperties(edit, errorMessage); }); + m_ui->qmlDebuggingWarningText->setPixmap( + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING))); connect(m_ui->buildVariantComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changeBuildVariant(int))); diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h index debf9c2ef6..e795b6e57c 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstep.h +++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h @@ -51,18 +51,18 @@ class QbsBuildStep : public ProjectExplorer::BuildStep Q_OBJECT public: - QbsBuildStep(ProjectExplorer::BuildStepList *bsl); + explicit QbsBuildStep(ProjectExplorer::BuildStepList *bsl); QbsBuildStep(ProjectExplorer::BuildStepList *bsl, const QbsBuildStep *other); - ~QbsBuildStep(); + ~QbsBuildStep() override; - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; - bool runInGuiThread() const; - void cancel(); + bool runInGuiThread() const override; + void cancel() override; QVariantMap qbsConfiguration() const; void setQbsConfiguration(const QVariantMap &config); @@ -77,8 +77,8 @@ public: bool isQmlDebuggingEnabled() const; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; signals: void qbsConfigurationChanged(); diff --git a/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui b/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui index 235d475793..b6469bc539 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui +++ b/src/plugins/qbsprojectmanager/qbsbuildstepconfigwidget.ui @@ -103,14 +103,7 @@ </widget> </item> <item> - <widget class="QLabel" name="qmlDebuggingWarningIcon"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> - </widget> + <widget class="QLabel" name="qmlDebuggingWarningIcon"/> </item> <item> <widget class="QLabel" name="qmlDebuggingWarningText"> @@ -259,8 +252,6 @@ <header location="global">utils/fancylineedit.h</header> </customwidget> </customwidgets> - <resources> - <include location="../coreplugin/core.qrc"/> - </resources> + <resources/> <connections/> </ui> diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.cpp b/src/plugins/qbsprojectmanager/qbscleanstep.cpp index 0d4a46d479..3a86fccbc6 100644 --- a/src/plugins/qbsprojectmanager/qbscleanstep.cpp +++ b/src/plugins/qbsprojectmanager/qbscleanstep.cpp @@ -80,8 +80,9 @@ QbsCleanStep::~QbsCleanStep() } } -bool QbsCleanStep::init() +bool QbsCleanStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); if (static_cast<QbsProject *>(project())->isParsing() || m_job) return false; diff --git a/src/plugins/qbsprojectmanager/qbscleanstep.h b/src/plugins/qbsprojectmanager/qbscleanstep.h index da48a47e83..e2f385978e 100644 --- a/src/plugins/qbsprojectmanager/qbscleanstep.h +++ b/src/plugins/qbsprojectmanager/qbscleanstep.h @@ -48,21 +48,21 @@ class QbsCleanStep : public ProjectExplorer::BuildStep Q_OBJECT public: - QbsCleanStep(ProjectExplorer::BuildStepList *bsl); + explicit QbsCleanStep(ProjectExplorer::BuildStepList *bsl); QbsCleanStep(ProjectExplorer::BuildStepList *bsl, const QbsCleanStep *other); - ~QbsCleanStep(); + ~QbsCleanStep() override; - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; - bool runInGuiThread() const; - void cancel(); + bool runInGuiThread() const override; + void cancel() override; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; bool dryRun() const; bool keepGoing() const; diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp index af75f03e57..51252e3ecc 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.cpp +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.cpp @@ -83,8 +83,9 @@ QbsInstallStep::~QbsInstallStep() m_job = 0; } -bool QbsInstallStep::init() +bool QbsInstallStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); QTC_ASSERT(!static_cast<QbsProject *>(project())->isParsing() && !m_job, return false); return true; } diff --git a/src/plugins/qbsprojectmanager/qbsinstallstep.h b/src/plugins/qbsprojectmanager/qbsinstallstep.h index 762c8add78..a7ede3339c 100644 --- a/src/plugins/qbsprojectmanager/qbsinstallstep.h +++ b/src/plugins/qbsprojectmanager/qbsinstallstep.h @@ -48,21 +48,21 @@ class QbsInstallStep : public ProjectExplorer::BuildStep Q_OBJECT public: - QbsInstallStep(ProjectExplorer::BuildStepList *bsl); + explicit QbsInstallStep(ProjectExplorer::BuildStepList *bsl); QbsInstallStep(ProjectExplorer::BuildStepList *bsl, const QbsInstallStep *other); - ~QbsInstallStep(); + ~QbsInstallStep() override; - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; - bool runInGuiThread() const; - void cancel(); + bool runInGuiThread() const override; + void cancel() override; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; qbs::InstallOptions installOptions() const; QString installRoot() const; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index dad76423b7..154bd70da9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -258,7 +258,7 @@ static QList<ProjectExplorer::ProjectAction> supportedNodeActions(ProjectExplore if (managesFiles) actions << ProjectExplorer::AddNewFile << ProjectExplorer::AddExistingFile; if (node->nodeType() == ProjectExplorer::FileNodeType - && !project->qbsProject().buildSystemFiles().contains(node->path().toString())) { + && !project->qbsProject().buildSystemFiles().contains(node->filePath().toString())) { actions << ProjectExplorer::RemoveFile << ProjectExplorer::Rename; } return actions; @@ -420,7 +420,7 @@ void QbsGroupNode::updateQbsGroupData(const qbs::GroupData &grp, const QString & m_productPath = productPath; m_qbsGroupData = grp; - setPath(Utils::FileName::fromString(grp.location().filePath())); + setAbsoluteFilePathAndLine(Utils::FileName::fromString(grp.location().filePath()), line()); setDisplayName(grp.name()); QbsFileNode *idx = 0; @@ -430,7 +430,7 @@ void QbsGroupNode::updateQbsGroupData(const qbs::GroupData &grp, const QString & break; } QTC_ASSERT(idx, return); - idx->setPathAndLine(Utils::FileName::fromString(grp.location().filePath()), + idx->setAbsoluteFilePathAndLine(Utils::FileName::fromString(grp.location().filePath()), grp.location().line()); setupFiles(this, grp, grp.allFilePaths(), productPath, updateExisting); @@ -494,7 +494,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro ProjectExplorer::FileNode *fn = 0; foreach (ProjectExplorer::FileNode *f, root->fileNodes()) { // There can be one match only here! - if (f->path() != path || f->fileType() != newFileType) + if (f->filePath() != path || f->fileType() != newFileType) continue; fn = f; break; @@ -512,7 +512,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro ProjectExplorer::FolderNode *fn = 0; foreach (ProjectExplorer::FolderNode *f, root->subFolderNodes()) { // There can be one match only here! - if (f->path() != path) + if (f->filePath() != path) continue; fn = f; break; @@ -671,7 +671,7 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P bool updateExisting = productWasEnabled != productIsEnabled; setDisplayName(QbsProject::productDisplayName(project, prd)); - setPath(Utils::FileName::fromString(prd.location().filePath())); + setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()), line()); const QString &productPath = QFileInfo(prd.location().filePath()).absolutePath(); // Find the QbsFileNode we added earlier: @@ -682,7 +682,7 @@ void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::P break; } QTC_ASSERT(idx, return); - idx->setPathAndLine(Utils::FileName::fromString(prd.location().filePath()), + idx->setAbsoluteFilePathAndLine(Utils::FileName::fromString(prd.location().filePath()), prd.location().line()); QList<ProjectExplorer::ProjectNode *> toAdd; @@ -817,7 +817,7 @@ void QbsProjectNode::ctor() setIcon(m_projectIcon); addFileNodes(QList<ProjectExplorer::FileNode *>() - << new ProjectExplorer::FileNode(path(), ProjectExplorer::ProjectFileType, false)); + << new ProjectExplorer::FileNode(filePath(), ProjectExplorer::ProjectFileType, false)); } QbsProductNode *QbsProjectNode::findProductNode(const QString &uniqueName) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index ace0007756..835945a7d9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -54,7 +54,7 @@ public: QbsFileNode(const Utils::FileName &filePath, const ProjectExplorer::FileType fileType, bool generated, int line); - QString displayName() const; + QString displayName() const override; }; class QbsFolderNode : public ProjectExplorer::FolderNode @@ -64,7 +64,7 @@ public: const QString &displayName); private: - QList<ProjectExplorer::ProjectAction> supportedActions(ProjectExplorer::Node *node) const; + QList<ProjectExplorer::ProjectAction> supportedActions(ProjectExplorer::Node *node) const override; }; // --------------------------------------------------------------------------- @@ -76,11 +76,11 @@ class QbsGroupNode; class QbsBaseProjectNode : public ProjectExplorer::ProjectNode { public: - explicit QbsBaseProjectNode(const Utils::FileName &path); + explicit QbsBaseProjectNode(const Utils::FileName &absoluteFilePath); - bool showInSimpleTree() const; + bool showInSimpleTree() const override; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; private: friend class QbsGroupNode; }; @@ -94,11 +94,11 @@ class QbsGroupNode : public QbsBaseProjectNode public: QbsGroupNode(const qbs::GroupData &grp, const QString &productPath); - bool isEnabled() const; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); - bool renameFile(const QString &filePath, const QString &newFilePath); + bool isEnabled() const override; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; void updateQbsGroupData(const qbs::GroupData &grp, const QString &productPath, bool productWasEnabled, bool productIsEnabled); @@ -131,17 +131,17 @@ class QbsProductNode : public QbsBaseProjectNode public: explicit QbsProductNode(const qbs::Project &project, const qbs::ProductData &prd); - bool isEnabled() const; - bool showInSimpleTree() const; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); - bool renameFile(const QString &filePath, const QString &newFilePath); + bool isEnabled() const override; + bool showInSimpleTree() const override; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; void setQbsProductData(const qbs::Project &project, const qbs::ProductData prd); const qbs::ProductData qbsProductData() const { return m_qbsProductData; } - QList<ProjectExplorer::RunConfiguration *> runConfigurations() const; + QList<ProjectExplorer::RunConfiguration *> runConfigurations() const override; private: QbsGroupNode *findGroupNode(const QString &name); @@ -157,14 +157,14 @@ private: class QbsProjectNode : public QbsBaseProjectNode { public: - explicit QbsProjectNode(const Utils::FileName &path); - ~QbsProjectNode(); + explicit QbsProjectNode(const Utils::FileName &absoluteFilePath); + ~QbsProjectNode() override; virtual QbsProject *project() const; const qbs::Project qbsProject() const; const qbs::ProjectData qbsProjectData() const { return m_projectData; } - bool showInSimpleTree() const; + bool showInSimpleTree() const override; protected: void update(const qbs::Project &qbsProject, const qbs::ProjectData &prjData); @@ -191,12 +191,12 @@ public: using QbsProjectNode::update; void update(); - QbsProject *project() const { return m_project; } + QbsProject *project() const override { return m_project; } private: QStringList unreferencedBuildSystemFiles(const qbs::Project &p) const; - QbsProject * const m_project; + QbsProject *const m_project; ProjectExplorer::FolderNode *m_buildSystemFiles; }; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 78ee6de535..a619960821 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -606,13 +606,8 @@ Project::RestoreResult QbsProject::fromMap(const QVariantMap &map, QString *erro return result; Kit *defaultKit = KitManager::defaultKit(); - if (!activeTarget() && defaultKit) { - Target *t = new Target(this, defaultKit); - t->updateDefaultBuildConfigurations(); - t->updateDefaultDeployConfigurations(); - t->updateDefaultRunConfigurations(); - addTarget(t); - } + if (!activeTarget() && defaultKit) + addTarget(createTarget(defaultKit)); return RestoreResult::Ok; } diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index 8c68d5114a..b4d2d58d71 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -288,7 +288,7 @@ void QbsProjectManagerPlugin::updateBuildActions() && !BuildManager::isBuilding(m_editorProject) && !m_editorProject->isParsing(); - fileName = m_editorNode->path().fileName(); + fileName = m_editorNode->filePath().fileName(); fileVisible = m_editorProject && m_editorNode && dynamic_cast<QbsBaseProjectNode *>(m_editorNode->projectNode()); QbsProductNode *productNode @@ -361,7 +361,7 @@ void QbsProjectManagerPlugin::buildFileContextMenu() QTC_ASSERT(m_selectedNode, return); QTC_ASSERT(m_selectedProject, return); - buildSingleFile(m_selectedProject, m_selectedNode->path().toString()); + buildSingleFile(m_selectedProject, m_selectedNode->filePath().toString()); } void QbsProjectManagerPlugin::buildFile() @@ -369,7 +369,7 @@ void QbsProjectManagerPlugin::buildFile() if (!m_editorProject || !m_editorNode) return; - buildSingleFile(m_editorProject, m_editorNode->path().toString()); + buildSingleFile(m_editorProject, m_editorNode->filePath().toString()); } void QbsProjectManagerPlugin::buildProductContextMenu() diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 7b5112bdb2..eddbaf1dc0 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -49,6 +49,7 @@ #include <utils/detailswidget.h> #include <utils/stringutils.h> #include <utils/persistentsettings.h> +#include <utils/themehelper.h> #include <qtsupport/qtoutputformatter.h> #include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtkitinformation.h> @@ -341,7 +342,8 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc, QW QHBoxLayout *hl = new QHBoxLayout(); hl->addStretch(); m_disabledIcon = new QLabel(this); - m_disabledIcon->setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + m_disabledIcon->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); hl->addWidget(m_disabledIcon); m_disabledReason = new QLabel(this); m_disabledReason->setVisible(false); diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h index 5d04c9da35..b2a97162d5 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h @@ -73,20 +73,20 @@ class QbsRunConfiguration : public ProjectExplorer::LocalApplicationRunConfigura public: QbsRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - bool isEnabled() const; - QString disabledReason() const; - QWidget *createConfigurationWidget(); + bool isEnabled() const override; + QString disabledReason() const override; + QWidget *createConfigurationWidget() override; - QString executable() const; - ProjectExplorer::ApplicationLauncher::Mode runMode() const; - QString workingDirectory() const; - QString commandLineArguments() const; + QString executable() const override; + ProjectExplorer::ApplicationLauncher::Mode runMode() const override; + QString workingDirectory() const override; + QString commandLineArguments() const override; - Utils::OutputFormatter *createOutputFormatter() const; + Utils::OutputFormatter *createOutputFormatter() const override; void setRunMode(ProjectExplorer::ApplicationLauncher::Mode runMode); - void addToBaseEnvironment(Utils::Environment &env) const; + void addToBaseEnvironment(Utils::Environment &env) const override; QString uniqueProductName() const; bool isConsoleApplication() const; diff --git a/src/plugins/qmakeandroidsupport/androidextralibrarylistmodel.cpp b/src/plugins/qmakeandroidsupport/androidextralibrarylistmodel.cpp index b8f2caa6c5..1e94cf0b5b 100644 --- a/src/plugins/qmakeandroidsupport/androidextralibrarylistmodel.cpp +++ b/src/plugins/qmakeandroidsupport/androidextralibrarylistmodel.cpp @@ -155,7 +155,7 @@ void AndroidExtraLibraryListModel::addEntries(const QStringList &list) foreach (const QString &path, list) m_entries += QLatin1String("$$PWD/") - + node->path().toFileInfo().absoluteDir().relativeFilePath(path); + + node->filePath().toFileInfo().absoluteDir().relativeFilePath(path); node->setProVariable(QLatin1String("ANDROID_EXTRA_LIBS"), m_entries, m_scope, QmakeProjectManager::Internal::ProWriter::ReplaceValues diff --git a/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.cpp b/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.cpp index 04bdf30967..7b5018741a 100644 --- a/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.cpp +++ b/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.cpp @@ -60,7 +60,7 @@ AndroidPackageInstallationStep::AndroidPackageInstallationStep(ProjectExplorer:: : AbstractProcessStep(bc, other) { } -bool AndroidPackageInstallationStep::init() +bool AndroidPackageInstallationStep::init(QList<const BuildStep *> &earlierSteps) { ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); QString dirPath = bc->buildDirectory().appendPath(QLatin1String(Android::Constants::ANDROID_BUILDDIRECTORY)).toString(); @@ -100,7 +100,7 @@ bool AndroidPackageInstallationStep::init() m_androidDirsToClean << dirPath; } - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void AndroidPackageInstallationStep::run(QFutureInterface<bool> &fi) diff --git a/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.h b/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.h index 7b5904967e..019756a762 100644 --- a/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.h +++ b/src/plugins/qmakeandroidsupport/androidpackageinstallationstep.h @@ -44,15 +44,15 @@ class AndroidPackageInstallationStep : public ProjectExplorer::AbstractProcessSt public: explicit AndroidPackageInstallationStep(ProjectExplorer::BuildStepList *bsl); - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool immutable() const; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; - void run(QFutureInterface<bool> &fi); + void run(QFutureInterface<bool> &fi) override; private: AndroidPackageInstallationStep(ProjectExplorer::BuildStepList *bc, - AndroidPackageInstallationStep *other); + AndroidPackageInstallationStep *other); QStringList m_androidDirsToClean; static const Core::Id Id; }; diff --git a/src/plugins/qmakeandroidsupport/createandroidmanifestwizard.cpp b/src/plugins/qmakeandroidsupport/createandroidmanifestwizard.cpp index 4125e1b207..f41ae06c8e 100644 --- a/src/plugins/qmakeandroidsupport/createandroidmanifestwizard.cpp +++ b/src/plugins/qmakeandroidsupport/createandroidmanifestwizard.cpp @@ -156,7 +156,7 @@ ChooseDirectoryPage::ChooseDirectoryPage(CreateAndroidManifestWizard *wizard) void ChooseDirectoryPage::checkPackageSourceDir() { - QString projectDir = m_wizard->node()->path().toFileInfo().absolutePath(); + QString projectDir = m_wizard->node()->filePath().toFileInfo().absolutePath(); QString newDir = m_androidPackageSourceDir->path(); bool isComplete = QFileInfo(projectDir) != QFileInfo(newDir); @@ -182,7 +182,7 @@ void ChooseDirectoryPage::initializePage() "The files in the Android package source directory are copied to the build directory's " "Android directory and the default files are overwritten.")); - m_androidPackageSourceDir->setPath(m_wizard->node()->path().toFileInfo().absolutePath().append(QLatin1String("/android"))); + m_androidPackageSourceDir->setPath(m_wizard->node()->filePath().toFileInfo().absolutePath().append(QLatin1String("/android"))); connect(m_androidPackageSourceDir, SIGNAL(rawPathChanged(QString)), this, SLOT(checkPackageSourceDir())); } else { @@ -343,14 +343,14 @@ void CreateAndroidManifestWizard::createAndroidTemplateFiles() if (m_node->singleVariableValue(QmakeProjectManager::AndroidPackageSourceDir).isEmpty()) { // and now time for some magic QString value = QLatin1String("$$PWD/") - + m_node->path().toFileInfo().absoluteDir().relativeFilePath(m_directory); + + m_node->filePath().toFileInfo().absoluteDir().relativeFilePath(m_directory); bool result = m_node->setProVariable(QLatin1String("ANDROID_PACKAGE_SOURCE_DIR"), QStringList(value)); if (!result) { QMessageBox::warning(this, tr("Project File not Updated"), tr("Could not update the .pro file %1.") - .arg(m_node->path().toUserOutput())); + .arg(m_node->filePath().toUserOutput())); } } Core::EditorManager::openEditor(m_directory + QLatin1String("/AndroidManifest.xml")); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index 96d16bc5a3..7c18c4d235 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -168,12 +168,12 @@ void QmakeAndroidBuildApkStep::ctor() { } -bool QmakeAndroidBuildApkStep::init() +bool QmakeAndroidBuildApkStep::init(QList<const BuildStep *> &earlierSteps) { if (AndroidManager::checkForQt51Files(project()->projectDirectory())) emit addOutput(tr("Found old folder \"android\" in source directory. Qt 5.2 does not use that folder by default."), ErrorOutput); - if (!AndroidBuildApkStep::init()) + if (!AndroidBuildApkStep::init(earlierSteps)) return false; QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target()->kit()); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h index fc4d7ac263..553e894a50 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.h @@ -69,22 +69,20 @@ public: Utils::FileName proFilePathForInputFile() const; void setProFilePathForInputFile(const QString &path); - protected: friend class QmakeAndroidBuildApkStepFactory; - QmakeAndroidBuildApkStep(ProjectExplorer::BuildStepList *bc, - QmakeAndroidBuildApkStep *other); + QmakeAndroidBuildApkStep(ProjectExplorer::BuildStepList *bc, QmakeAndroidBuildApkStep *other); - Utils::FileName androidPackageSourceDir() const; + Utils::FileName androidPackageSourceDir() const override; protected: void ctor(); - bool init(); - void run(QFutureInterface<bool> &fi); - void processStarted(); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; + void processStarted() override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; private: void setupProcessParameters(ProjectExplorer::ProcessParameters *pp, diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkwidget.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkwidget.cpp index 518f801c9a..9ff70cfda4 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkwidget.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkwidget.cpp @@ -35,8 +35,10 @@ #include <android/androidbuildapkwidget.h> #include <android/androidmanager.h> +#include <coreplugin/coreconstants.h> #include <qmakeprojectmanager/qmakenodes.h> #include <qmakeprojectmanager/qmakeproject.h> +#include <utils/themehelper.h> #include <QFileDialog> #include <QLabel> @@ -64,7 +66,8 @@ QmakeAndroidBuildApkWidget::QmakeAndroidBuildApkWidget(QmakeAndroidBuildApkStep sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(oldFilesWarningIcon->sizePolicy().hasHeightForWidth()); oldFilesWarningIcon->setSizePolicy(sizePolicy); - oldFilesWarningIcon->setPixmap(QPixmap(QLatin1String(":/core/images/warning.png"))); + oldFilesWarningIcon->setPixmap( + Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING))); oldFilesWarningIcon->setAlignment(Qt::Alignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop)); qt51WarningLayout->addWidget(oldFilesWarningIcon); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp index 4a5762eaa8..0eaaad3df5 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp @@ -100,7 +100,7 @@ QVariantMap QmakeAndroidRunConfiguration::toMap() const if (m_proFilePath.isEmpty()) { if (!target()->project()->rootProjectNode()) return QVariantMap(); - m_proFilePath = target()->project()->rootProjectNode()->path(); + m_proFilePath = target()->project()->rootProjectNode()->filePath(); } const QDir projectDir = QDir(target()->project()->projectDirectory().toString()); @@ -141,10 +141,10 @@ QString QmakeAndroidRunConfiguration::disabledReason() const void QmakeAndroidRunConfiguration::proFileUpdated(QmakeProjectManager::QmakeProFileNode *pro, bool success, bool parseInProgress) { if (m_proFilePath.isEmpty() && target()->project()->rootProjectNode()) { - m_proFilePath = target()->project()->rootProjectNode()->path(); + m_proFilePath = target()->project()->rootProjectNode()->filePath(); } - if (m_proFilePath != pro->path()) + if (m_proFilePath != pro->filePath()) return; bool enabled = isEnabled(); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h index 54dc0367a7..0345d9c18a 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h @@ -51,14 +51,14 @@ public: Utils::FileName proFilePath() const; - bool isEnabled() const; - QString disabledReason() const; + bool isEnabled() const override; + QString disabledReason() const override; protected: QmakeAndroidRunConfiguration(ProjectExplorer::Target *parent, QmakeAndroidRunConfiguration *source); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; QString defaultDisplayName(); private slots: diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp index 8de0fa3ed5..6a82dc4652 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp @@ -141,7 +141,7 @@ QList<RunConfiguration *> QmakeAndroidRunConfigurationFactory::runConfigurations QList<RunConfiguration *> result; foreach (RunConfiguration *rc, t->runConfigurations()) if (QmakeAndroidRunConfiguration *qt4c = qobject_cast<QmakeAndroidRunConfiguration *>(rc)) - if (qt4c->proFilePath() == n->path()) + if (qt4c->proFilePath() == n->filePath()) result << rc; return result; } diff --git a/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwidgetswizardpage.cpp b/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwidgetswizardpage.cpp index 34bcba4a34..8ef77ddd2f 100644 --- a/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwidgetswizardpage.cpp +++ b/src/plugins/qmakeprojectmanager/customwidgetwizard/customwidgetwidgetswizardpage.cpp @@ -35,6 +35,7 @@ #include <coreplugin/coreconstants.h> #include <utils/wizard.h> +#include <utils/themehelper.h> #include <QTimer> @@ -52,9 +53,11 @@ CustomWidgetWidgetsWizardPage::CustomWidgetWidgetsWizardPage(QWidget *parent) : { m_ui->setupUi(this); m_ui->tabStackWidget->setLayout(m_tabStackLayout); - m_ui->addButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PLUS))); + m_ui->addButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_PLUS))); connect(m_ui->addButton, SIGNAL(clicked()), m_ui->classList, SLOT(startEditingNewClassItem())); - m_ui->deleteButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_MINUS))); + m_ui->deleteButton->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_MINUS))); connect(m_ui->deleteButton, SIGNAL(clicked()), m_ui->classList, SLOT(removeCurrentClass())); m_ui->deleteButton->setEnabled(false); diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp index b1cf4495fe..774f0b51cb 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp @@ -49,6 +49,7 @@ #include <utils/persistentsettings.h> #include <utils/qtcprocess.h> #include <utils/stringutils.h> +#include <utils/themehelper.h> #include <QCheckBox> #include <QComboBox> @@ -109,10 +110,6 @@ DesktopQmakeRunConfiguration::DesktopQmakeRunConfiguration(Target *parent, Deskt ctor(); } -DesktopQmakeRunConfiguration::~DesktopQmakeRunConfiguration() -{ -} - bool DesktopQmakeRunConfiguration::isEnabled() const { return m_parseSuccess && !m_parseInProgress; @@ -131,7 +128,7 @@ QString DesktopQmakeRunConfiguration::disabledReason() const void DesktopQmakeRunConfiguration::proFileUpdated(QmakeProFileNode *pro, bool success, bool parseInProgress) { - if (m_proFilePath != pro->path()) + if (m_proFilePath != pro->filePath()) return; bool enabled = isEnabled(); QString reason = disabledReason(); @@ -183,7 +180,8 @@ DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQm QHBoxLayout *hl = new QHBoxLayout(); hl->addStretch(); m_disabledIcon = new QLabel(this); - m_disabledIcon->setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + m_disabledIcon->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); hl->addWidget(m_disabledIcon); m_disabledReason = new QLabel(this); m_disabledReason->setVisible(false); @@ -748,7 +746,7 @@ QList<RunConfiguration *> DesktopQmakeRunConfigurationFactory::runConfigurations QList<RunConfiguration *> result; foreach (RunConfiguration *rc, t->runConfigurations()) if (DesktopQmakeRunConfiguration *qt4c = qobject_cast<DesktopQmakeRunConfiguration *>(rc)) - if (qt4c->proFilePath() == n->path()) + if (qt4c->proFilePath() == n->filePath()) result << rc; return result; } diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h index 50ce8ca02b..658b3d30ba 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h @@ -55,10 +55,7 @@ class DetailsWidget; namespace QmakeProjectManager { -class QmakeProject; class QmakeProFileNode; -class QmakePriFileNode; -class TargetInformation; namespace Internal { class DesktopQmakeRunConfigurationFactory; @@ -72,16 +69,15 @@ class DesktopQmakeRunConfiguration : public ProjectExplorer::LocalApplicationRun public: DesktopQmakeRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - virtual ~DesktopQmakeRunConfiguration(); - virtual bool isEnabled() const; - virtual QString disabledReason() const; - virtual QWidget *createConfigurationWidget(); + bool isEnabled() const override; + QString disabledReason() const override; + QWidget *createConfigurationWidget() override; - virtual QString executable() const; - virtual ProjectExplorer::ApplicationLauncher::Mode runMode() const; - virtual QString workingDirectory() const; - virtual QString commandLineArguments() const; + QString executable() const override; + ProjectExplorer::ApplicationLauncher::Mode runMode() const override; + QString workingDirectory() const override; + QString commandLineArguments() const override; bool isUsingDyldImageSuffix() const; void setUsingDyldImageSuffix(bool state); @@ -91,13 +87,13 @@ public: Utils::FileName proFilePath() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; - Utils::OutputFormatter *createOutputFormatter() const; + Utils::OutputFormatter *createOutputFormatter() const override; void setRunMode(ProjectExplorer::ApplicationLauncher::Mode runMode); - void addToBaseEnvironment(Utils::Environment &env) const; + void addToBaseEnvironment(Utils::Environment &env) const override; signals: void commandLineArgumentsChanged(const QString&); void baseWorkingDirectoryChanged(const QString&); @@ -114,7 +110,7 @@ private slots: protected: DesktopQmakeRunConfiguration(ProjectExplorer::Target *parent, DesktopQmakeRunConfiguration *source); - virtual bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: QPair<QString, QString> extractWorkingDirAndExecutable(const QmakeProFileNode *node) const; diff --git a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp index 09a9cbabd1..060d168b86 100644 --- a/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qmakeprojectmanager/librarydetailscontroller.cpp @@ -1013,7 +1013,7 @@ QString InternalLibraryDetailsController::suggestedIncludePath() const const int currentIndex = libraryDetailsWidget()->libraryComboBox->currentIndex(); if (currentIndex >= 0) { QmakeProFileNode *proFileNode = m_proFileNodes.at(currentIndex); - return proFileNode->path().toFileInfo().absolutePath(); + return proFileNode->filePath().toFileInfo().absolutePath(); } return QString(); } @@ -1039,12 +1039,12 @@ void InternalLibraryDetailsController::updateProFile() setIgnoreGuiSignals(true); ProjectExplorer::ProjectNode *rootProject = project->rootProjectNode(); - m_rootProjectPath = rootProject->path().toFileInfo().absolutePath(); + m_rootProjectPath = rootProject->filePath().toFileInfo().absolutePath(); QDir rootDir(m_rootProjectPath); FindQmakeProFiles findQt4ProFiles; QList<QmakeProFileNode *> proFiles = findQt4ProFiles(rootProject); foreach (QmakeProFileNode *proFileNode, proFiles) { - const QString proFilePath = proFileNode->path().toString(); + const QString proFilePath = proFileNode->filePath().toString(); QmakeProjectManager::QmakeProjectType type = proFileNode->projectType(); if (type == SharedLibraryTemplate || type == StaticLibraryTemplate) { const QStringList configVar = proFileNode->variableValue(ConfigVar); diff --git a/src/plugins/qmakeprojectmanager/makestep.cpp b/src/plugins/qmakeprojectmanager/makestep.cpp index b5191f5cbd..f36d9d0bbf 100644 --- a/src/plugins/qmakeprojectmanager/makestep.cpp +++ b/src/plugins/qmakeprojectmanager/makestep.cpp @@ -93,10 +93,6 @@ void MakeStep::setMakeCommand(const QString &make) m_makeCmd = make; } -MakeStep::~MakeStep() -{ -} - QmakeBuildConfiguration *MakeStep::qmakeBuildConfiguration() const { return static_cast<QmakeBuildConfiguration *>(buildConfiguration()); @@ -151,7 +147,7 @@ bool MakeStep::fromMap(const QVariantMap &map) return AbstractProcessStep::fromMap(map); } -bool MakeStep::init() +bool MakeStep::init(QList<const BuildStep *> &earlierSteps) { QmakeBuildConfiguration *bc = qmakeBuildConfiguration(); if (!bc) @@ -237,7 +233,7 @@ bool MakeStep::init() if (!relObjectsDir.isEmpty()) relObjectsDir += QLatin1Char('/'); QString objectFile = relObjectsDir + - bc->fileNodeBuild()->path().toFileInfo().baseName() + + bc->fileNodeBuild()->filePath().toFileInfo().baseName() + subNode->objectExtension(); Utils::QtcProcess::addArg(&args, objectFile); } @@ -270,7 +266,7 @@ bool MakeStep::init() m_scriptTarget = (static_cast<QmakeProject *>(bc->target()->project())->rootQmakeProjectNode()->projectType() == ScriptTemplate); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void MakeStep::run(QFutureInterface<bool> & fi) diff --git a/src/plugins/qmakeprojectmanager/makestep.h b/src/plugins/qmakeprojectmanager/makestep.h index 7586d989f9..1f51860e75 100644 --- a/src/plugins/qmakeprojectmanager/makestep.h +++ b/src/plugins/qmakeprojectmanager/makestep.h @@ -80,22 +80,21 @@ class QMAKEPROJECTMANAGER_EXPORT MakeStep : public ProjectExplorer::AbstractProc public: explicit MakeStep(ProjectExplorer::BuildStepList *bsl); - virtual ~MakeStep(); QmakeBuildConfiguration *qmakeBuildConfiguration() const; - virtual bool init(); - virtual void run(QFutureInterface<bool> &); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &) override; - virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - virtual bool immutable() const; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; QString userArguments(); void setUserArguments(const QString &arguments); void setClean(bool clean); bool isClean() const; QString makeCommand() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; signals: void userArgumentsChanged(); @@ -103,7 +102,7 @@ signals: protected: MakeStep(ProjectExplorer::BuildStepList *bsl, MakeStep *bs); MakeStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); - virtual bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private: void ctor(); diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 92a3ac5b53..b2d344b367 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -569,6 +569,8 @@ QmakeBuildInfo *QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k, info->displayName = tr("Release"); //: Non-ASCII characters in directory suffix may cause build issues. suffix = tr("Release", "Shadow build directory suffix"); + if (version && version->isQtQuickCompilerSupported()) + info->config.useQtQuickCompiler = true; } else { if (type == BuildConfiguration::Debug) { //: The name of the debug build configuration created by default for a qmake project. @@ -581,8 +583,10 @@ QmakeBuildInfo *QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k, //: Non-ASCII characters in directory suffix may cause build issues. suffix = tr("Profile", "Shadow build directory suffix"); info->config.separateDebugInfo = true; + if (version && version->isQtQuickCompilerSupported()) + info->config.useQtQuickCompiler = true; } - if (version && version->qtVersion().majorVersion >= 5) + if (version && version->isQmlDebuggingSupported()) info->config.linkQmlDebuggingQQ2 = true; } info->typeName = info->displayName; diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 765387e2cf..daa03fe04d 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -88,35 +88,36 @@ using namespace Utils; struct FileTypeDataStorage { FileType type; + Theme::ImageFile themeImage; const char *typeName; const char *icon; - Theme::ImageFile themeImage; + const char *addFileFilter; }; static const FileTypeDataStorage fileTypeDataStorage[] = { - { HeaderType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Headers"), - ":/qmakeprojectmanager/images/headers.png", Theme::ProjectExplorerHeader }, - { SourceType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Sources"), - ":/qmakeprojectmanager/images/sources.png", Theme::ProjectExplorerSource }, - { FormType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Forms"), - ":/qtsupport/images/forms.png", Theme::ProjectExplorerForm }, - { ResourceType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Resources"), - ":/qtsupport/images/qt_qrc.png", Theme::ProjectExplorerResource }, - { QMLType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "QML"), - ":/qtsupport/images/qml.png", Theme::ProjectExplorerQML }, - { UnknownFileType, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Other files"), - ":/qmakeprojectmanager/images/unknown.png", Theme::ProjectExplorerOtherFiles } + { HeaderType, Theme::ProjectExplorerHeader, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Headers"), + ":/qmakeprojectmanager/images/headers.png", "*.h; *.hh; *.hpp; *.hxx;"}, + { SourceType, Theme::ProjectExplorerSource, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Sources"), + ":/qmakeprojectmanager/images/sources.png", "*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++;" }, + { FormType, Theme::ProjectExplorerForm, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Forms"), + ":/qtsupport/images/forms.png", "*.ui;" }, + { ResourceType, Theme::ProjectExplorerResource, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Resources"), + ":/qtsupport/images/qt_qrc.png", "*.qrc;" }, + { QMLType, Theme::ProjectExplorerQML, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "QML"), + ":/qtsupport/images/qml.png", "*.qml; *.qml.ui" }, + { UnknownFileType, Theme::ProjectExplorerOtherFiles, QT_TRANSLATE_NOOP("QmakeProjectManager::QmakePriFileNode", "Other files"), + ":/qmakeprojectmanager/images/unknown.png", "*;" } }; class SortByPath { public: bool operator()(Node *a, Node *b) - { return operator()(a->path(), b->path()); } + { return operator()(a->filePath(), b->filePath()); } bool operator()(Node *a, const FileName &b) - { return operator()(a->path(), b); } + { return operator()(a->filePath(), b); } bool operator()(const FileName &a, Node *b) - { return operator()(a, b->path()); } + { return operator()(a, b->filePath()); } // Compare as strings to correctly detect case-only file rename bool operator()(const FileName &a, const FileName &b) { return a.toString() < b.toString(); } @@ -128,11 +129,13 @@ public: public: FileTypeData(FileType t = UnknownFileType, const QString &tN = QString(), + const QString &aff = QString(), const QIcon &i = QIcon()) : - type(t), typeName(tN), icon(i) { } + type(t), typeName(tN), addFileFilter(aff), icon(i) { } FileType type; QString typeName; + QString addFileFilter; QIcon icon; }; @@ -164,8 +167,9 @@ QmakeNodeStaticData::QmakeNodeStaticData() QIcon folderIcon; folderIcon.addPixmap(folderPixmap); const QString desc = QCoreApplication::translate("QmakeProjectManager::QmakePriFileNode", fileTypeDataStorage[i].typeName); + const QString filter = QString::fromUtf8(fileTypeDataStorage[i].addFileFilter); fileTypeData.push_back(QmakeNodeStaticData::FileTypeData(fileTypeDataStorage[i].type, - desc, folderIcon)); + desc, filter, folderIcon)); } // Project icon const QString fileName = creatorTheme()->imageFile(Theme::ProjectFileIcon, @@ -246,15 +250,26 @@ public: bool isDeployable; QStringList errors; }; + +QString ProVirtualFolderNode::displayName() const +{ + return m_typeName; } + +QString ProVirtualFolderNode::addFileFilter() const +{ + return m_addFileFilter; } +} // namespace Internal +} // namespace QMakeProjectManager + QmakePriFile::QmakePriFile(QmakeProjectManager::QmakePriFileNode *qmakePriFile) : IDocument(0), m_priFile(qmakePriFile) { setId("Qmake.PriFile"); setMimeType(QLatin1String(QmakeProjectManager::Constants::PROFILE_MIMETYPE)); - setFilePath(m_priFile->path()); + setFilePath(m_priFile->filePath()); } bool QmakePriFile::save(QString *errorString, const QString &fileName, bool autoSave) @@ -347,6 +362,7 @@ struct InternalNode int priority = 0; QString displayName; QString typeName; + QString addFileFilter; QString fullPath; QIcon icon; @@ -446,8 +462,10 @@ struct InternalNode if (node->typeName.isEmpty()) { newNode = new FolderNode(FileName::fromString(node->fullPath)); } else { - newNode = new ProVirtualFolderNode(FileName::fromString(node->fullPath), - node->priority, node->typeName); + auto n = new ProVirtualFolderNode(FileName::fromString(node->fullPath), + node->priority, node->typeName); + n->setAddFileFilter(node->addFileFilter); + newNode = n; } newNode->setDisplayName(node->displayName); @@ -468,7 +486,7 @@ struct InternalNode QMultiMap<QString, FolderNode *> existingFolderNodes; foreach (FolderNode *node, folder->subFolderNodes()) if (node->nodeType() != ProjectNodeType && !dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(node)) - existingFolderNodes.insert(node->path().toString(), node); + existingFolderNodes.insert(node->filePath().toString(), node); QList<FolderNode *> foldersToRemove; QList<FolderNode *> foldersToAdd; @@ -770,6 +788,7 @@ void QmakePriFileNode::update(const Internal::PriFileEvalResult &result) subfolder->icon = fileTypes.at(i).icon; subfolder->fullPath = m_projectDir; subfolder->typeName = fileTypes.at(i).typeName; + subfolder->addFileFilter = fileTypes.at(i).addFileFilter; subfolder->priority = -i; subfolder->displayName = fileTypes.at(i).typeName; contents.virtualfolders.append(subfolder); @@ -929,7 +948,7 @@ QList<ProjectAction> QmakePriFileNode::supportedActions(Node *node) const // work on a subset of the file types according to project type. actions << AddNewFile; - if (m_recursiveEnumerateFiles.contains(node->path())) + if (m_recursiveEnumerateFiles.contains(node->filePath())) actions << EraseFile; else actions << RemoveFile; @@ -941,13 +960,13 @@ QList<ProjectAction> QmakePriFileNode::supportedActions(Node *node) const if (folder) { QStringList list; foreach (FolderNode *f, folder->subFolderNodes()) - list << f->path().toString() + QLatin1Char('/'); + list << f->filePath().toString() + QLatin1Char('/'); if (deploysFolder(Utils::commonPath(list))) addExistingFiles = false; } } - addExistingFiles = addExistingFiles && !deploysFolder(node->path().toString()); + addExistingFiles = addExistingFiles && !deploysFolder(node->filePath().toString()); if (addExistingFiles) actions << AddExistingFile << AddExistingDirectory; @@ -1139,7 +1158,7 @@ bool QmakePriFileNode::renameFile(const QString &filePath, const QString &newFil FolderNode::AddNewInformation QmakePriFileNode::addNewInformation(const QStringList &files, Node *context) const { Q_UNUSED(files) - return FolderNode::AddNewInformation(path().fileName(), context && context->projectNode() == this ? 120 : 90); + return FolderNode::AddNewInformation(filePath().fileName(), context && context->projectNode() == this ? 120 : 90); } bool QmakePriFileNode::priFileWritable(const QString &path) @@ -1586,7 +1605,7 @@ namespace { QmakeProFileNode *QmakeProFileNode::findProFileFor(const FileName &fileName) const { - if (fileName == path()) + if (fileName == filePath()) return const_cast<QmakeProFileNode *>(this); foreach (ProjectNode *pn, subProjectNodes()) if (QmakeProFileNode *qmakeProFileNode = dynamic_cast<QmakeProFileNode *>(pn)) @@ -1686,7 +1705,7 @@ bool QmakeProFileNode::showInSimpleTree() const FolderNode::AddNewInformation QmakeProFileNode::addNewInformation(const QStringList &files, Node *context) const { Q_UNUSED(files) - return AddNewInformation(path().fileName(), context && context->projectNode() == this ? 120 : 100); + return AddNewInformation(filePath().fileName(), context && context->projectNode() == this ? 120 : 100); } bool QmakeProFileNode::showInSimpleTree(QmakeProjectType projectType) const @@ -2087,7 +2106,7 @@ void QmakeProFileNode::applyAsyncEvaluate() bool sortByNodes(Node *a, Node *b) { - return a->path() < b->path(); + return a->filePath() < b->filePath(); } void QmakeProFileNode::applyEvaluate(EvalResult *evalResult) @@ -2191,12 +2210,12 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult) break; // we are done, hurray! if (! existingAtEnd - && (newAtEnd || (*existingIt)->path() < (*newIt)->name)) { + && (newAtEnd || (*existingIt)->filePath() < (*newIt)->name)) { // Remove case toRemove << *existingIt; ++existingIt; } else if (! newAtEnd - && (existingAtEnd || (*newIt)->name < (*existingIt)->path())) { + && (existingAtEnd || (*newIt)->name < (*existingIt)->filePath())) { // Adding a node IncludedPriFile *nodeToAdd = *newIt; ++newIt; @@ -2208,7 +2227,7 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult) bool loop = false; Node *n = pn; while ((n = n->parentFolderNode())) { - if (dynamic_cast<QmakePriFileNode *>(n) && n->path() == nodeToAdd->name) { + if (dynamic_cast<QmakePriFileNode *>(n) && n->filePath() == nodeToAdd->name) { loop = true; break; } @@ -2228,7 +2247,7 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult) QmakeProFileNode *qmakeProFileNode = new QmakeProFileNode(m_project, nodeToAdd->name); qmakeProFileNode->setParentFolderNode(pn); // Needed for loop detection qmakeProFileNode->setIncludedInExactParse( - result->exactSubdirs.contains(qmakeProFileNode->path()) + result->exactSubdirs.contains(qmakeProFileNode->filePath()) && pn->includedInExactParse()); qmakeProFileNode->asyncUpdate(); toAdd << qmakeProFileNode; @@ -2248,7 +2267,7 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult) // the .pro file is included in this .pro file // So to compare that later parse with the sync one QmakeProFileNode *proFileNode = static_cast<QmakeProFileNode *>(*existingIt); - proFileNode->setIncludedInExactParse(result->exactSubdirs.contains(proFileNode->path()) + proFileNode->setIncludedInExactParse(result->exactSubdirs.contains(proFileNode->filePath()) && pn->includedInExactParse()); proFileNode->asyncUpdate(); } @@ -2427,8 +2446,7 @@ FileNameList QmakeProFileNode::subDirsPaths(QtSupport::ProFileReader *reader, } } - subProjectPaths.removeDuplicates(); - return subProjectPaths; + return Utils::filteredUnique(subProjectPaths); } TargetInformation QmakeProFileNode::targetInformation(QtSupport::ProFileReader *reader, QtSupport::ProFileReader *readerBuildPass, const QString &buildDir, const QString &projectFilePath) @@ -2568,9 +2586,9 @@ void QmakeProFileNode::updateUiFiles(const QString &buildDir) const Utils::FileName uiDir = uiDirectory(Utils::FileName::fromString(buildDir)); const QString uiExtensions = singleVariableValue(UiHeaderExtensionVar); foreach (const FileNode *uiFile, uiFiles) { - QString headerFile = uiHeaderFile(uiDir, uiFile->path(), uiExtensions); + QString headerFile = uiHeaderFile(uiDir, uiFile->filePath(), uiExtensions); if (!headerFile.isEmpty()) - m_uiFiles.insert(uiFile->path().toString(), headerFile); + m_uiFiles.insert(uiFile->filePath().toString(), headerFile); } } } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 2f80f98ab2..96bc1110b3 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -138,27 +138,27 @@ class QMAKEPROJECTMANAGER_EXPORT QmakePriFileNode : public ProjectExplorer::Proj { public: QmakePriFileNode(QmakeProject *project, QmakeProFileNode *qmakeProFileNode, const Utils::FileName &filePath); - ~QmakePriFileNode(); + ~QmakePriFileNode() override; void update(const Internal::PriFileEvalResult &result); -// ProjectNode interface - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; + // ProjectNode interface + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; - bool showInSimpleTree() const { return false; } + bool showInSimpleTree() const override { return false; } - bool canAddSubProject(const QString &proFilePath) const; + bool canAddSubProject(const QString &proFilePath) const override; - bool addSubProjects(const QStringList &proFilePaths); - bool removeSubProjects(const QStringList &proFilePaths); + bool addSubProjects(const QStringList &proFilePaths) override; + bool removeSubProjects(const QStringList &proFilePaths) override; - bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0); - bool deleteFiles(const QStringList &filePaths); - bool canRenameFile(const QString &filePath, const QString &newFilePath); - bool renameFile(const QString &filePath, const QString &newFilePath); - AddNewInformation addNewInformation(const QStringList &files, Node *context) const; + bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; + bool deleteFiles(const QStringList &filePaths) override; + bool canRenameFile(const QString &filePath, const QString &newFilePath) override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; + AddNewInformation addNewInformation(const QStringList &files, Node *context) const override; bool setProVariable(const QString &var, const QStringList &values, const QString &scope = QString(), @@ -166,8 +166,8 @@ public: bool folderChanged(const QString &changedFolder, const QSet<Utils::FileName> &newFiles); - bool deploysFolder(const QString &folder) const; - QList<ProjectExplorer::RunConfiguration *> runConfigurations() const; + bool deploysFolder(const QString &folder) const override; + QList<ProjectExplorer::RunConfiguration *> runConfigurations() const override; QmakeProFileNode *proFileNode() const; QList<QmakePriFileNode*> subProjectNodesExact() const; @@ -210,7 +210,7 @@ private: static QPair<ProFile *, QStringList> readProFile(const QString &file); static QPair<ProFile *, QStringList> readProFileFromContents(const QString &contents); void save(const QStringList &lines); - bool priFileWritable(const QString &path); + bool priFileWritable(const QString &absoluteFilePath); bool saveModifiedEditors(); QStringList formResources(const QString &formFile) const; static QStringList baseVPaths(QtSupport::ProFileReader *reader, const QString &projectDir, const QString &buildDir); @@ -265,22 +265,25 @@ class ProVirtualFolderNode : public ProjectExplorer::VirtualFolderNode public: explicit ProVirtualFolderNode(const Utils::FileName &folderPath, int priority, const QString &typeName) : VirtualFolderNode(folderPath, priority), m_typeName(typeName) - { + { } - } + QString displayName() const override; + + QString addFileFilter() const override; - QString displayName() const + void setAddFileFilter(const QString &filter) { - return m_typeName; + m_addFileFilter = filter; } - QString tooltip() const + QString tooltip() const override { return QString(); } private: QString m_typeName; + QString m_addFileFilter; }; } // namespace Internal @@ -328,13 +331,13 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeProFileNode : public QmakePriFileNode { public: QmakeProFileNode(QmakeProject *project, const Utils::FileName &filePath); - ~QmakeProFileNode(); + ~QmakeProFileNode() override; bool isParent(QmakeProFileNode *node); - bool showInSimpleTree() const; + bool showInSimpleTree() const override; - AddNewInformation addNewInformation(const QStringList &files, Node *context) const; + AddNewInformation addNewInformation(const QStringList &files, Node *context) const override; QmakeProjectType projectType() const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 561d5535db..c177d62b18 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -232,19 +232,19 @@ void ProjectFilesVisitor::findProjectFiles(QmakeProFileNode *rootNode, QmakeProj void ProjectFilesVisitor::visitProjectNode(ProjectNode *projectNode) { - m_files->proFiles.append(projectNode->path().toString()); + m_files->proFiles.append(projectNode->filePath().toString()); visitFolderNode(projectNode); } void ProjectFilesVisitor::visitFolderNode(FolderNode *folderNode) { if (dynamic_cast<ResourceEditor::ResourceTopLevelNode *>(folderNode)) - m_files->files[ResourceType].push_back(folderNode->path().toString()); + m_files->files[ResourceType].push_back(folderNode->filePath().toString()); foreach (FileNode *fileNode, folderNode->fileNodes()) { const int type = fileNode->fileType(); QStringList &targetList = fileNode->isGenerated() ? m_files->generatedFiles[type] : m_files->files[type]; - targetList.push_back(fileNode->path().toString()); + targetList.push_back(fileNode->filePath().toString()); } } @@ -463,7 +463,7 @@ void QmakeProject::updateCppCodeModel() ProjectPart::Ptr templatePart(new ProjectPart); templatePart->project = this; templatePart->displayName = pro->displayName(); - templatePart->projectFile = pro->path().toString(); + templatePart->projectFile = pro->filePath().toString(); templatePart->selectedForBuilding = pro->includedInExactParse(); if (pro->variableValue(ConfigVar).contains(QLatin1String("qt"))) @@ -619,7 +619,7 @@ void QmakeProject::scheduleAsyncUpdate(QmakeProFileNode *node, QmakeProFileNode: return; if (debug) - qDebug()<<"schduleAsyncUpdate (node)"<<node->path(); + qDebug()<<"schduleAsyncUpdate (node)"<<node->filePath(); if (m_cancelEvaluate) { if (debug) @@ -873,7 +873,7 @@ QStringList QmakeProject::files(FilesMode fileMode) const static FolderNode *folderOf(FolderNode *in, FileType fileType, const FileName &fileName) { foreach (FileNode *fn, in->fileNodes()) - if (fn->fileType() == fileType && fn->path() == fileName) + if (fn->fileType() == fileType && fn->filePath() == fileName) return in; foreach (FolderNode *folder, in->subFolderNodes()) if (FolderNode *pn = folderOf(folder, fileType, fileName)) @@ -1058,7 +1058,7 @@ bool QmakeProject::hasApplicationProFile(const FileName &path) const QList<QmakeProFileNode *> list = applicationProFiles(); foreach (QmakeProFileNode * node, list) - if (node->path() == path) + if (node->filePath() == path) return true; return false; } @@ -1077,7 +1077,7 @@ QList<QmakeProFileNode *> QmakeProject::nodesWithQtcRunnable(QList<QmakeProFileN QList<Core::Id> QmakeProject::idsForNodes(Core::Id base, const QList<QmakeProFileNode *> &nodes) { return Utils::transform(nodes, [&base](QmakeProFileNode *node) { - return base.withSuffix(node->path().toString()); + return base.withSuffix(node->filePath().toString()); }); } @@ -1101,7 +1101,7 @@ void QmakeProject::activeTargetWasChanged() bool QmakeProject::hasSubNode(QmakePriFileNode *root, const FileName &path) { - if (root->path() == path) + if (root->filePath() == path) return true; foreach (FolderNode *fn, root->subFolderNodes()) { if (dynamic_cast<QmakeProFileNode *>(fn)) { @@ -1193,7 +1193,7 @@ QSet<QString> CentralizedFolderWatcher::recursiveDirs(const QString &folder) void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, QmakePriFileNode *node) { if (debugCFW) - qDebug()<<"CFW::watchFolders()"<<folders<<"for node"<<node->path(); + qDebug()<<"CFW::watchFolders()"<<folders<<"for node"<<node->filePath(); m_watcher.addPaths(folders); const QChar slash = QLatin1Char('/'); @@ -1218,7 +1218,7 @@ void CentralizedFolderWatcher::watchFolders(const QList<QString> &folders, Qmake void CentralizedFolderWatcher::unwatchFolders(const QList<QString> &folders, QmakePriFileNode *node) { if (debugCFW) - qDebug()<<"CFW::unwatchFolders()"<<folders<<"for node"<<node->path(); + qDebug()<<"CFW::unwatchFolders()"<<folders<<"for node"<<node->filePath(); const QChar slash = QLatin1Char('/'); foreach (const QString &f, folders) { QString folder = f; @@ -1411,14 +1411,14 @@ void QmakeProject::updateBuildSystemData() foreach (const QmakeProFileNode * const node, applicationProFiles()) { appTargetList.list << BuildTargetInfo(node->targetInformation().target, FileName::fromString(executableFor(node)), - node->path()); + node->filePath()); } target->setApplicationTargets(appTargetList); } void QmakeProject::collectData(const QmakeProFileNode *node, DeploymentData &deploymentData) { - if (!node->isSubProjectDeployable(node->path().toString())) + if (!node->isSubProjectDeployable(node->filePath().toString())) return; const InstallsList &installsList = node->installsList(); diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp index 22f5661be2..cd28781d40 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp @@ -35,11 +35,13 @@ #include "qmakenodes.h" #include "ui_qmakeprojectconfigwidget.h" +#include <coreplugin/coreconstants.h> #include <projectexplorer/target.h> #include <qtsupport/qtkitinformation.h> #include <utils/algorithm.h> #include <utils/detailswidget.h> +#include <utils/themehelper.h> using namespace QmakeProjectManager; using namespace QmakeProjectManager::Internal; @@ -67,6 +69,8 @@ QmakeProjectConfigWidget::QmakeProjectConfigWidget(QmakeBuildConfiguration *bc) m_browseButton = m_ui->shadowBuildDirEdit->buttonAtIndex(0); + m_ui->warningLabel->setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); m_ui->shadowBuildDirEdit->setPromptDialogTitle(tr("Shadow Build Directory")); m_ui->shadowBuildDirEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory); m_ui->shadowBuildDirEdit->setHistoryCompleter(QLatin1String("Qmake.BuildDir.History")); diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.ui b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.ui index 33b53f8925..75740d0990 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.ui +++ b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.ui @@ -58,11 +58,7 @@ <item row="2" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> - <widget class="QLabel" name="warningLabel"> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> - </widget> + <widget class="QLabel" name="warningLabel"/> </item> <item> <widget class="QLabel" name="problemLabel"> @@ -92,8 +88,6 @@ <container>1</container> </customwidget> </customwidgets> - <resources> - <include location="../projectexplorer/projectexplorer.qrc"/> - </resources> + <resources/> <connections/> </ui> diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp index c6a2cee5b7..ce92fcce49 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanager.cpp @@ -135,7 +135,7 @@ void QmakeManager::addLibraryContextMenu() { Node *node = ProjectTree::currentNode(); if (dynamic_cast<QmakeProFileNode *>(node)) - addLibrary(node->path().toString()); + addLibrary(node->filePath().toString()); } void QmakeManager::addLibrary(const QString &fileName, BaseTextEditor *editor) diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp index 318eb172f6..388f5da453 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectmanagerplugin.cpp @@ -339,7 +339,7 @@ void QmakeProjectManagerPlugin::updateContextActions(ProjectExplorer::Node *node m_rebuildSubProjectAction->setParameter(subProjectName); m_cleanSubProjectAction->setParameter(subProjectName); m_buildSubProjectContextMenu->setParameter(subProjectName); - m_buildFileAction->setParameter(buildFilePossible ? fileNode->path().fileName() : QString()); + m_buildFileAction->setParameter(buildFilePossible ? fileNode->filePath().fileName() : QString()); QmakeBuildConfiguration *buildConfiguration = (qmakeProject && qmakeProject->activeTarget()) ? static_cast<QmakeBuildConfiguration *>(qmakeProject->activeTarget()->activeBuildConfiguration()) : 0; diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 89d41094ac..a11657c92f 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -44,6 +44,7 @@ #include <projectexplorer/target.h> #include <projectexplorer/toolchain.h> +#include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <coreplugin/icontext.h> #include <qtsupport/debugginghelperbuildtask.h> @@ -53,6 +54,7 @@ #include <utils/algorithm.h> #include <utils/hostosinfo.h> #include <utils/qtcprocess.h> +#include <utils/themehelper.h> #include <QDir> #include <QMessageBox> @@ -103,10 +105,6 @@ void QMakeStep::ctor() setDefaultDisplayName(tr("qmake")); } -QMakeStep::~QMakeStep() -{ -} - QmakeBuildConfiguration *QMakeStep::qmakeBuildConfiguration() const { return static_cast<QmakeBuildConfiguration *>(buildConfiguration()); @@ -124,7 +122,7 @@ QString QMakeStep::allArguments(bool shorted) QmakeBuildConfiguration *bc = qmakeBuildConfiguration(); QStringList arguments; if (bc->subNodeBuild()) - arguments << bc->subNodeBuild()->path().toUserOutput(); + arguments << bc->subNodeBuild()->filePath().toUserOutput(); else if (shorted) arguments << project()->projectFilePath().fileName(); else @@ -182,7 +180,7 @@ QMakeStepConfig QMakeStep::deducedArguments() } -bool QMakeStep::init() +bool QMakeStep::init(QList<const BuildStep *> &earlierSteps) { QmakeBuildConfiguration *qt4bc = qmakeBuildConfiguration(); const QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(target()->kit()); @@ -233,7 +231,7 @@ bool QMakeStep::init() QmakeProFileNode *node = static_cast<QmakeProject *>(qt4bc->target()->project())->rootQmakeProjectNode(); if (qt4bc->subNodeBuild()) node = qt4bc->subNodeBuild(); - QString proFile = node->path().toString(); + QString proFile = node->filePath().toString(); QList<ProjectExplorer::Task> tasks = qtVersion->reportIssues(proFile, workingDirectory); Utils::sort(tasks); @@ -253,7 +251,7 @@ bool QMakeStep::init() m_scriptTemplate = node->projectType() == ScriptTemplate; - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void QMakeStep::run(QFutureInterface<bool> &fi) @@ -446,6 +444,9 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step) m_ui->qmlDebuggingLibraryCheckBox->setChecked(m_step->linkQmlDebuggingLibrary()); m_ui->qtQuickCompilerCheckBox->setChecked(m_step->useQtQuickCompiler()); m_ui->separateDebugInfoCheckBox->setChecked(m_step->separateDebugInfo()); + const QPixmap warning = Utils::ThemeHelper::themedIconPixmap(QLatin1String(Core::Constants::ICON_WARNING)); + m_ui->qmlDebuggingWarningIcon->setPixmap(warning); + m_ui->qtQuickCompilerWarningIcon->setPixmap(warning); qmakeBuildConfigChanged(); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index 2c20b95260..cf0753056b 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -129,13 +129,12 @@ class QMAKEPROJECTMANAGER_EXPORT QMakeStep : public ProjectExplorer::AbstractPro public: explicit QMakeStep(ProjectExplorer::BuildStepList *parent); - virtual ~QMakeStep(); QmakeBuildConfiguration *qmakeBuildConfiguration() const; - virtual bool init(); - virtual void run(QFutureInterface<bool> &); - virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - virtual bool immutable() const; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool immutable() const override; void setForced(bool b); bool forced(); @@ -155,7 +154,7 @@ public: bool separateDebugInfo() const; void setSeparateDebugInfo(bool enable); - QVariantMap toMap() const; + QVariantMap toMap() const override; signals: void userArgumentsChanged(); @@ -166,10 +165,10 @@ signals: protected: QMakeStep(ProjectExplorer::BuildStepList *parent, QMakeStep *source); QMakeStep(ProjectExplorer::BuildStepList *parent, Core::Id id); - virtual bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; - virtual void processStartupFailed(); - virtual bool processSucceeded(int exitCode, QProcess::ExitStatus status); + void processStartupFailed() override; + bool processSucceeded(int exitCode, QProcess::ExitStatus status) override; private: void ctor(); diff --git a/src/plugins/qmakeprojectmanager/qmakestep.ui b/src/plugins/qmakeprojectmanager/qmakestep.ui index 7165a81b0b..40e2fd877a 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.ui +++ b/src/plugins/qmakeprojectmanager/qmakestep.ui @@ -169,11 +169,7 @@ </widget> </item> <item> - <widget class="QLabel" name="qmlDebuggingWarningIcon"> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> - </widget> + <widget class="QLabel" name="qmlDebuggingWarningIcon"/> </item> <item> <widget class="QLabel" name="qmlDebuggingWarningText"> @@ -228,11 +224,7 @@ </widget> </item> <item> - <widget class="QLabel" name="qtQuickCompilerWarningIcon"> - <property name="pixmap"> - <pixmap resource="../coreplugin/core.qrc">:/core/images/warning.png</pixmap> - </property> - </widget> + <widget class="QLabel" name="qtQuickCompilerWarningIcon"/> </item> <item> <widget class="QLabel" name="qtQuickCompilerWarningText"> @@ -285,9 +277,6 @@ </item> </layout> </widget> - <resources> - <include location="../projectexplorer/projectexplorer.qrc"/> - <include location="../coreplugin/core.qrc"/> - </resources> + <resources/> <connections/> </ui> diff --git a/src/plugins/qmldesigner/components/formeditor/boundingrect.png b/src/plugins/qmldesigner/components/formeditor/boundingrect.png Binary files differindex e8b6b96857..0a91478d6d 100644 --- a/src/plugins/qmldesigner/components/formeditor/boundingrect.png +++ b/src/plugins/qmldesigner/components/formeditor/boundingrect.png diff --git a/src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png b/src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png Binary files differnew file mode 100644 index 0000000000..43ea7993fb --- /dev/null +++ b/src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc index 9c67a2c5b5..4b949ad92c 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc +++ b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc @@ -1,20 +1,16 @@ <RCC> - <qresource prefix="/icon/handle"> - <file>resize_handle.png</file> - </qresource> - <qresource prefix="/icon/tool"> - <file>transform.png</file> - </qresource> <qresource prefix="/icon/layout"> <file>snapping.png</file> + <file>snapping@2x.png</file> <file>no_snapping.png</file> + <file>no_snapping@2x.png</file> <file>snapping_and_anchoring.png</file> + <file>snapping_and_anchoring@2x.png</file> <file>boundingrect.png</file> - </qresource> - <qresource prefix="/icon/selection"> - <file>selectonlycontentitems.png</file> + <file>boundingrect@2x.png</file> </qresource> <qresource prefix="/icon"> <file>reset.png</file> + <file>reset@2x.png</file> </qresource> </RCC> diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp index 563a942222..8bebd76d9f 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp @@ -39,6 +39,7 @@ #include <backgroundaction.h> #include <utils/fileutils.h> +#include <utils/themehelper.h> namespace QmlDesigner { @@ -65,21 +66,21 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) m_noSnappingAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); m_noSnappingAction->setCheckable(true); m_noSnappingAction->setChecked(true); - m_noSnappingAction->setIcon(QPixmap(QLatin1String(":/icon/layout/no_snapping.png"))); + m_noSnappingAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/icon/layout/no_snapping.png"))); m_snappingAndAnchoringAction = layoutActionGroup->addAction(tr("Snap to parent or sibling items and generate anchors (W).")); m_snappingAndAnchoringAction->setShortcut(Qt::Key_W); m_snappingAndAnchoringAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); m_snappingAndAnchoringAction->setCheckable(true); m_snappingAndAnchoringAction->setChecked(true); - m_snappingAndAnchoringAction->setIcon(QPixmap(QLatin1String(":/icon/layout/snapping_and_anchoring.png"))); + m_snappingAndAnchoringAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/icon/layout/snapping_and_anchoring.png"))); m_snappingAction = layoutActionGroup->addAction(tr("Snap to parent or sibling items but do not generate anchors (E).")); m_snappingAction->setShortcut(Qt::Key_E); m_snappingAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); m_snappingAction->setCheckable(true); m_snappingAction->setChecked(true); - m_snappingAction->setIcon(QPixmap(QLatin1String(":/icon/layout/snapping.png"))); + m_snappingAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/icon/layout/snapping.png"))); addActions(layoutActionGroup->actions()); @@ -95,7 +96,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) m_showBoundingRectAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); m_showBoundingRectAction->setCheckable(true); m_showBoundingRectAction->setChecked(true); - m_showBoundingRectAction->setIcon(QPixmap(QLatin1String(":/icon/layout/boundingrect.png"))); + m_showBoundingRectAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/icon/layout/boundingrect.png"))); addAction(m_showBoundingRectAction.data()); upperActions.append(m_showBoundingRectAction.data()); @@ -134,7 +135,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view) m_resetAction = new QAction(tr("Reset view (R)."), this); m_resetAction->setShortcut(Qt::Key_R); m_resetAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); - m_resetAction->setIcon(QPixmap(QLatin1String(":/icon/reset.png"))); + m_resetAction->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/icon/reset.png"))); connect(m_resetAction.data(), SIGNAL(triggered(bool)), this, SLOT(resetNodeInstanceView())); addAction(m_resetAction.data()); upperActions.append(m_resetAction.data()); diff --git a/src/plugins/qmldesigner/components/formeditor/no_snapping.png b/src/plugins/qmldesigner/components/formeditor/no_snapping.png Binary files differindex 49393dbd80..8120c85739 100644 --- a/src/plugins/qmldesigner/components/formeditor/no_snapping.png +++ b/src/plugins/qmldesigner/components/formeditor/no_snapping.png diff --git a/src/plugins/qmldesigner/components/formeditor/no_snapping@2x.png b/src/plugins/qmldesigner/components/formeditor/no_snapping@2x.png Binary files differnew file mode 100644 index 0000000000..c6f41dd827 --- /dev/null +++ b/src/plugins/qmldesigner/components/formeditor/no_snapping@2x.png diff --git a/src/plugins/qmldesigner/components/formeditor/reset.png b/src/plugins/qmldesigner/components/formeditor/reset.png Binary files differindex 6e8d0911a6..b3308cf5c1 100644 --- a/src/plugins/qmldesigner/components/formeditor/reset.png +++ b/src/plugins/qmldesigner/components/formeditor/reset.png diff --git a/src/plugins/qmldesigner/components/formeditor/reset@2x.png b/src/plugins/qmldesigner/components/formeditor/reset@2x.png Binary files differnew file mode 100644 index 0000000000..60abc11e26 --- /dev/null +++ b/src/plugins/qmldesigner/components/formeditor/reset@2x.png diff --git a/src/plugins/qmldesigner/components/formeditor/resize_handle.png b/src/plugins/qmldesigner/components/formeditor/resize_handle.png Binary files differdeleted file mode 100644 index 02bebcdd0c..0000000000 --- a/src/plugins/qmldesigner/components/formeditor/resize_handle.png +++ /dev/null diff --git a/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png b/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png Binary files differdeleted file mode 100644 index 229141fac0..0000000000 --- a/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png +++ /dev/null diff --git a/src/plugins/qmldesigner/components/formeditor/snapping.png b/src/plugins/qmldesigner/components/formeditor/snapping.png Binary files differindex 6c916f10bd..fbe4a14d93 100644 --- a/src/plugins/qmldesigner/components/formeditor/snapping.png +++ b/src/plugins/qmldesigner/components/formeditor/snapping.png diff --git a/src/plugins/qmldesigner/components/formeditor/snapping@2x.png b/src/plugins/qmldesigner/components/formeditor/snapping@2x.png Binary files differnew file mode 100644 index 0000000000..2c7305b624 --- /dev/null +++ b/src/plugins/qmldesigner/components/formeditor/snapping@2x.png diff --git a/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring.png b/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring.png Binary files differindex 9e2a68d98d..e0e92e3a5b 100644 --- a/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring.png +++ b/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring.png diff --git a/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring@2x.png b/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring@2x.png Binary files differnew file mode 100644 index 0000000000..70ddd4edae --- /dev/null +++ b/src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring@2x.png diff --git a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp index 0ea0c2caa3..73f4ebcc6d 100644 --- a/src/plugins/qmldesigner/components/formeditor/toolbox.cpp +++ b/src/plugins/qmldesigner/components/formeditor/toolbox.cpp @@ -37,11 +37,9 @@ ToolBox::ToolBox(QWidget *parentWidget) m_leftToolBar(new QToolBar(QLatin1String("LeftSidebar"), this)), m_rightToolBar(new QToolBar(QLatin1String("RightSidebar"), this)) { - setMaximumHeight(22); m_leftToolBar->setFloatable(true); m_leftToolBar->setMovable(true); m_leftToolBar->setOrientation(Qt::Horizontal); - m_leftToolBar->setIconSize(QSize(24, 24)); QHBoxLayout *horizontalLayout = new QHBoxLayout(this); horizontalLayout->setMargin(0); @@ -61,7 +59,6 @@ ToolBox::ToolBox(QWidget *parentWidget) stretchToolbar->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); m_rightToolBar->setOrientation(Qt::Horizontal); - m_rightToolBar->setIconSize(QSize(24, 24)); horizontalLayout->addWidget(m_leftToolBar); horizontalLayout->addWidget(stretchToolbar); horizontalLayout->addWidget(m_rightToolBar); diff --git a/src/plugins/qmldesigner/components/formeditor/transform.png b/src/plugins/qmldesigner/components/formeditor/transform.png Binary files differdeleted file mode 100644 index 6548392177..0000000000 --- a/src/plugins/qmldesigner/components/formeditor/transform.png +++ /dev/null diff --git a/src/plugins/qmldesigner/components/navigator/arrowdown.png b/src/plugins/qmldesigner/components/navigator/arrowdown.png Binary files differindex 1373966176..ff55e005cd 100644 --- a/src/plugins/qmldesigner/components/navigator/arrowdown.png +++ b/src/plugins/qmldesigner/components/navigator/arrowdown.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowdown@2x.png b/src/plugins/qmldesigner/components/navigator/arrowdown@2x.png Binary files differnew file mode 100644 index 0000000000..a60b7275f3 --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/arrowdown@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowleft.png b/src/plugins/qmldesigner/components/navigator/arrowleft.png Binary files differindex 4a34318b3a..cdf5b0cc7c 100644 --- a/src/plugins/qmldesigner/components/navigator/arrowleft.png +++ b/src/plugins/qmldesigner/components/navigator/arrowleft.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowleft@2x.png b/src/plugins/qmldesigner/components/navigator/arrowleft@2x.png Binary files differnew file mode 100644 index 0000000000..23acf1c688 --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/arrowleft@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowright.png b/src/plugins/qmldesigner/components/navigator/arrowright.png Binary files differindex b2f8bfde8b..627b2eccf9 100644 --- a/src/plugins/qmldesigner/components/navigator/arrowright.png +++ b/src/plugins/qmldesigner/components/navigator/arrowright.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowright@2x.png b/src/plugins/qmldesigner/components/navigator/arrowright@2x.png Binary files differnew file mode 100644 index 0000000000..3a322e740c --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/arrowright@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowup.png b/src/plugins/qmldesigner/components/navigator/arrowup.png Binary files differindex f9ef97a25c..a9498573cf 100644 --- a/src/plugins/qmldesigner/components/navigator/arrowup.png +++ b/src/plugins/qmldesigner/components/navigator/arrowup.png diff --git a/src/plugins/qmldesigner/components/navigator/arrowup@2x.png b/src/plugins/qmldesigner/components/navigator/arrowup@2x.png Binary files differnew file mode 100644 index 0000000000..4c995ceb9c --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/arrowup@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/export_checked.png b/src/plugins/qmldesigner/components/navigator/export_checked.png Binary files differindex 9021b7b086..f0c3b230c0 100644 --- a/src/plugins/qmldesigner/components/navigator/export_checked.png +++ b/src/plugins/qmldesigner/components/navigator/export_checked.png diff --git a/src/plugins/qmldesigner/components/navigator/export_checked@2x.png b/src/plugins/qmldesigner/components/navigator/export_checked@2x.png Binary files differnew file mode 100644 index 0000000000..07f49a8f26 --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/export_checked@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/export_unchecked.png b/src/plugins/qmldesigner/components/navigator/export_unchecked.png Binary files differindex 36bb3d2bbc..8f981200da 100644 --- a/src/plugins/qmldesigner/components/navigator/export_unchecked.png +++ b/src/plugins/qmldesigner/components/navigator/export_unchecked.png diff --git a/src/plugins/qmldesigner/components/navigator/export_unchecked@2x.png b/src/plugins/qmldesigner/components/navigator/export_unchecked@2x.png Binary files differnew file mode 100644 index 0000000000..cbfb9d512a --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/export_unchecked@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/eye_closed.png b/src/plugins/qmldesigner/components/navigator/eye_closed.png Binary files differindex 5ba632573a..e5a5dead1c 100644 --- a/src/plugins/qmldesigner/components/navigator/eye_closed.png +++ b/src/plugins/qmldesigner/components/navigator/eye_closed.png diff --git a/src/plugins/qmldesigner/components/navigator/eye_closed@2x.png b/src/plugins/qmldesigner/components/navigator/eye_closed@2x.png Binary files differnew file mode 100644 index 0000000000..327e70a138 --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/eye_closed@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/eye_open.png b/src/plugins/qmldesigner/components/navigator/eye_open.png Binary files differindex 3acdc9982a..7cb34bf982 100644 --- a/src/plugins/qmldesigner/components/navigator/eye_open.png +++ b/src/plugins/qmldesigner/components/navigator/eye_open.png diff --git a/src/plugins/qmldesigner/components/navigator/eye_open@2x.png b/src/plugins/qmldesigner/components/navigator/eye_open@2x.png Binary files differnew file mode 100644 index 0000000000..1974307141 --- /dev/null +++ b/src/plugins/qmldesigner/components/navigator/eye_open@2x.png diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp index f0fccc21bf..07034fc73b 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp @@ -42,12 +42,12 @@ namespace QmlDesigner { IconCheckboxItemDelegate::IconCheckboxItemDelegate(QObject *parent, - QString checkedPixmapURL, - QString uncheckedPixmapURL, + const QPixmap &checkedPixmap, + const QPixmap &uncheckedPixmap, NavigatorTreeModel *treeModel) : QStyledItemDelegate(parent), - offPixmap(uncheckedPixmapURL), - onPixmap(checkedPixmapURL), + m_checkedPixmap(checkedPixmap), + m_uncheckedPixmap(uncheckedPixmap), m_navigatorTreeModel(treeModel) {} @@ -74,7 +74,8 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &styleOption, const QModelIndex &modelIndex) const { - const int yOffset = (styleOption.rect.height() - onPixmap.height()) / 2; + const int yOffset = (styleOption.rect.height() + - (m_checkedPixmap.height() / painter->device()->devicePixelRatio())) / 2; const int xOffset = 2; if (indexIsHolingModelNode(modelIndex)) { painter->save(); @@ -86,10 +87,9 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, if (m_navigatorTreeModel->isNodeInvisible(modelIndex)) painter->setOpacity(0.5); - if (isChecked(m_navigatorTreeModel, modelIndex)) - painter->drawPixmap(styleOption.rect.x() + xOffset, styleOption.rect.y() + yOffset, onPixmap); - else - painter->drawPixmap(styleOption.rect.x() + xOffset, styleOption.rect.y() + yOffset, offPixmap); + const bool checked = isChecked(m_navigatorTreeModel, modelIndex); + painter->drawPixmap(styleOption.rect.x() + xOffset, styleOption.rect.y() + yOffset, + checked ? m_checkedPixmap : m_uncheckedPixmap); } painter->restore(); diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h index 6b617834f0..d908bd9e8e 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.h @@ -36,8 +36,8 @@ class IconCheckboxItemDelegate : public QStyledItemDelegate { public: explicit IconCheckboxItemDelegate(QObject *parent, - QString checkedPixmapURL, - QString uncheckedPixmapURL, + const QPixmap &checkedPixmap, + const QPixmap &uncheckedPixmap, NavigatorTreeModel *treeModel); QSize sizeHint(const QStyleOptionViewItem &option, @@ -48,8 +48,8 @@ public: const QModelIndex &index) const; private: - QPixmap offPixmap; - QPixmap onPixmap; + const QPixmap m_checkedPixmap; + const QPixmap m_uncheckedPixmap; NavigatorTreeModel *m_navigatorTreeModel; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/navigator/navigator.qrc b/src/plugins/qmldesigner/components/navigator/navigator.qrc index e0ae5883bf..f2451d00e8 100644 --- a/src/plugins/qmldesigner/components/navigator/navigator.qrc +++ b/src/plugins/qmldesigner/components/navigator/navigator.qrc @@ -1,13 +1,21 @@ <RCC> <qresource prefix="/navigator/icon"> <file>arrowdown.png</file> + <file>arrowdown@2x.png</file> <file>arrowleft.png</file> + <file>arrowleft@2x.png</file> <file>arrowright.png</file> + <file>arrowright@2x.png</file> <file>arrowup.png</file> + <file>arrowup@2x.png</file> <file>export_checked.png</file> + <file>export_checked@2x.png</file> <file>export_unchecked.png</file> + <file>export_unchecked@2x.png</file> <file>eye_open.png</file> + <file>eye_open@2x.png</file> <file>eye_closed.png</file> + <file>eye_closed@2x.png</file> <file>warning.png</file> </qresource> </RCC> diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 1e345f306f..134893481c 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -39,6 +39,8 @@ #include <qmlitemnode.h> #include <coreplugin/icore.h> +#include <coreplugin/coreconstants.h> +#include <utils/themehelper.h> #include <QMimeData> #include <QMessageBox> @@ -379,7 +381,8 @@ void NavigatorTreeModel::updateItemRow(const ModelNode &modelNode, ItemRow items if (currentQmlObjectNode.hasError()) { items.idItem->setData(true, ErrorRole); items.idItem->setToolTip(currentQmlObjectNode.error()); - items.idItem->setIcon(QIcon(":/navigator/icon/warning.png")); + items.idItem->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_WARNING))); } else { items.idItem->setData(false, ErrorRole); if (modelNode.metaInfo().isValid()) diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp index 54eb217927..11ad039003 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp @@ -32,6 +32,8 @@ #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/icore.h> +#include <utils/themehelper.h> + #include <bindingproperty.h> #include <designmodecontext.h> #include <nodeproperty.h> @@ -80,15 +82,17 @@ NavigatorView::NavigatorView(QObject* parent) : NameItemDelegate *idDelegate = new NameItemDelegate(this, m_treeModel.data()); - IconCheckboxItemDelegate *showDelegate = new IconCheckboxItemDelegate(this, - QLatin1String(":/navigator/icon/eye_open.png"), - QLatin1String(":/navigator/icon/eye_closed.png"), - m_treeModel.data()); - - IconCheckboxItemDelegate *exportDelegate = new IconCheckboxItemDelegate(this, - QLatin1String(":/navigator/icon/export_checked.png"), - QLatin1String(":/navigator/icon/export_unchecked.png"), - m_treeModel.data()); + IconCheckboxItemDelegate *showDelegate = + new IconCheckboxItemDelegate(this, + Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/eye_open.png")), + Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/eye_closed.png")), + m_treeModel.data()); + + IconCheckboxItemDelegate *exportDelegate = + new IconCheckboxItemDelegate(this, + Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/export_checked.png")), + Utils::ThemeHelper::themedIconPixmap(QLatin1String(":/navigator/icon/export_unchecked.png")), + m_treeModel.data()); #ifdef _LOCK_ITEMS_ IconCheckboxItemDelegate *lockDelegate = new IconCheckboxItemDelegate(this,":/qmldesigner/images/lock.png", diff --git a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp index 058dc0be44..7c6bca74eb 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp @@ -32,7 +32,7 @@ #include <QHeaderView> #include <QtDebug> #include <utils/fileutils.h> - +#include <utils/themehelper.h> namespace QmlDesigner { @@ -77,24 +77,25 @@ QList<QToolButton *> NavigatorWidget::createToolBarWidgets() QList<QToolButton *> buttons; buttons.append(new QToolButton()); - buttons.last()->setIcon(QIcon(QLatin1String(":/navigator/icon/arrowleft.png"))); + buttons.last()->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/navigator/icon/arrowleft.png"))); buttons.last()->setToolTip(tr("Become last sibling of parent (CTRL + Left).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Left | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(leftButtonClicked())); + buttons.append(new QToolButton()); - buttons.last()->setIcon(QIcon(QLatin1String(":/navigator/icon/arrowright.png"))); + buttons.last()->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/navigator/icon/arrowright.png"))); buttons.last()->setToolTip(tr("Become child of last sibling (CTRL + Right).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Right | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(rightButtonClicked())); buttons.append(new QToolButton()); - buttons.last()->setIcon(QIcon(QLatin1String(":/navigator/icon/arrowdown.png"))); + buttons.last()->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/navigator/icon/arrowdown.png"))); buttons.last()->setToolTip(tr("Move down (CTRL + Down).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Down | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(downButtonClicked())); buttons.append(new QToolButton()); - buttons.last()->setIcon(QIcon(QLatin1String(":/navigator/icon/arrowup.png"))); + buttons.last()->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(":/navigator/icon/arrowup.png"))); buttons.last()->setToolTip(tr("Move up (CTRL + Up).")); buttons.last()->setShortcut(QKeySequence(Qt::Key_Up | Qt::CTRL)); connect(buttons.last(), SIGNAL(clicked()), this, SIGNAL(upButtonClicked())); diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp index 40b55f0481..ba598bd090 100644 --- a/src/plugins/qmldesigner/documentmanager.cpp +++ b/src/plugins/qmldesigner/documentmanager.cpp @@ -421,10 +421,10 @@ void DocumentManager::findPathToIsoProFile(bool *iconResourceFileAlreadyExists, if (subFolderNode->nodeType() == ProjectExplorer::FolderNodeType && subFolderNode->displayName() == isoIconsQrcFile) { - qCDebug(documentManagerLog) << "Found" << isoIconsQrcFile << "in" << virtualFolderNode->path(); + qCDebug(documentManagerLog) << "Found" << isoIconsQrcFile << "in" << virtualFolderNode->filePath(); iconQrcFileNode = subFolderNode; - *resourceFileProPath = iconQrcFileNode->projectNode()->path().toString(); + *resourceFileProPath = iconQrcFileNode->projectNode()->filePath().toString(); } } } @@ -442,7 +442,7 @@ void DocumentManager::findPathToIsoProFile(bool *iconResourceFileAlreadyExists, // We assume that the .pro containing the QML file is an acceptable place to add the .qrc file. ProjectExplorer::ProjectNode *projectNode = ProjectExplorer::SessionManager::nodeForFile(qmlFileName)->projectNode(); - *resourceFileProPath = projectNode->path().toString(); + *resourceFileProPath = projectNode->filePath().toString(); } else { // We found the QRC file that we want. QString projectDirectory = ProjectExplorer::SessionManager::projectForNode(iconQrcFileNode)->projectDirectory().toString(); diff --git a/src/plugins/qmljstools/qmlconsoleedit.cpp b/src/plugins/qmljstools/qmlconsoleedit.cpp index 948957878a..cb22912621 100644 --- a/src/plugins/qmljstools/qmlconsoleedit.cpp +++ b/src/plugins/qmljstools/qmlconsoleedit.cpp @@ -51,23 +51,11 @@ namespace Internal { QmlConsoleEdit::QmlConsoleEdit(const QModelIndex &index, QWidget *parent) : QTextEdit(parent), - m_historyIndex(index), - m_prompt(QLatin1String(":/qmljstools/images/prompt.png")), - m_startOfEditableArea(0) + m_historyIndex(index) { setFrameStyle(QFrame::NoFrame); setUndoRedoEnabled(false); - setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - document()->addResource(QTextDocument::ImageResource, QUrl(QLatin1String("prompt")), m_prompt); - QTextImageFormat format; - format.setName(QLatin1String("prompt")); - format.setHeight(9); - format.setWidth(9); - textCursor().insertText(QLatin1String(" ")); - textCursor().insertImage(format); - textCursor().insertText(QLatin1String(" ")); - m_startOfEditableArea = textCursor().position(); - + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ensureCursorVisible(); setTextInteractionFlags(Qt::TextEditorInteraction); } @@ -79,34 +67,11 @@ void QmlConsoleEdit::keyPressEvent(QKeyEvent *e) switch (e->key()) { case Qt::Key_Return: case Qt::Key_Enter: { - m_interpreter.clearText(); QString currentScript = getCurrentScript(); - m_interpreter.appendText(currentScript); - if (currentScript.isEmpty()) { - emit editingFinished(); - } else if (m_interpreter.canEvaluate()) { + if (m_interpreter.canEvaluate(currentScript)) { QmlConsoleModel::evaluate(currentScript); emit editingFinished(); } - break; - } - - case Qt::Key_Backspace: - if (textCursor().selectionStart() <= m_startOfEditableArea) - keyConsumed = true; - break; - - case Qt::Key_Delete: - if (textCursor().selectionStart() < m_startOfEditableArea) - keyConsumed = true; - break; - - case Qt::Key_Home: { - QTextCursor c(textCursor()); - bool select = e->modifiers() & Qt::ShiftModifier; - c.setPosition(m_startOfEditableArea, - select ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); - setTextCursor(c); keyConsumed = true; break; } @@ -121,44 +86,7 @@ void QmlConsoleEdit::keyPressEvent(QKeyEvent *e) keyConsumed = true; break; - // Ctrl+Left: Moves the cursor one word to the left. - // Left: Moves the cursor one character to the left. - case Qt::Key_Left: - if (textCursor().position() <= m_startOfEditableArea - || e->modifiers() & Qt::ControlModifier) { - QTextCursor c(textCursor()); - bool select = e->modifiers() & Qt::ShiftModifier; - c.setPosition(m_startOfEditableArea, - select ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); - setTextCursor(c); - keyConsumed = true; - } - break; - - // Ctrl+Right: Moves the cursor one word to the right. - // Right: Moves the cursor one character to the right. - case Qt::Key_Right: - if ( !(e->modifiers() & Qt::ControlModifier) - && textCursor().position() < m_startOfEditableArea) { - QTextCursor c(textCursor()); - c.setPosition(m_startOfEditableArea); - setTextCursor(c); - keyConsumed = true; - } - break; - - // Ctrl+C, Ctrl+Insert: Allow to Copy the selected text to the clipboard. - case Qt::Key_C: - case Qt::Key_Insert: - if (textCursor().selectionStart() < m_startOfEditableArea && - !(e->modifiers() & Qt::ControlModifier)) - keyConsumed = true; - break; - default: - // Disallow any other keys in the prompt area - if (textCursor().selectionStart() < m_startOfEditableArea) - keyConsumed = true; break; } @@ -166,37 +94,6 @@ void QmlConsoleEdit::keyPressEvent(QKeyEvent *e) QTextEdit::keyPressEvent(e); } -void QmlConsoleEdit::contextMenuEvent(QContextMenuEvent *event) -{ - // TODO:: on right click the editor closes - return QTextEdit::contextMenuEvent(event); - - QTextCursor cursor = textCursor(); - bool editable = cursor.position() > m_startOfEditableArea; - QMenu *menu = new QMenu(); - QAction *a; - - a = menu->addAction(tr("Cu&t"), this, SLOT(cut())); - a->setEnabled(cursor.hasSelection() && editable); - - a = menu->addAction(tr("&Copy"), this, SLOT(copy())); - a->setEnabled(cursor.hasSelection()); - - a = menu->addAction(tr("&Paste"), this, SLOT(paste())); - a->setEnabled(canPaste() && editable); - - menu->addSeparator(); - a = menu->addAction(tr("Select &All"), this, SLOT(selectAll())); - a->setEnabled(!document()->isEmpty()); - - menu->addSeparator(); - menu->addAction(tr("C&lear"), this, SLOT(clear())); - - menu->exec(event->globalPos()); - - delete menu; -} - void QmlConsoleEdit::focusOutEvent(QFocusEvent * /*e*/) { emit editingFinished(); @@ -252,16 +149,15 @@ void QmlConsoleEdit::handleDownKey() QString QmlConsoleEdit::getCurrentScript() const { QTextCursor cursor = textCursor(); - cursor.setPosition(m_startOfEditableArea); + cursor.setPosition(0); cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); - QString script = cursor.selectedText(); - return script.trimmed(); + return cursor.selectedText(); } void QmlConsoleEdit::replaceCurrentScript(const QString &script) { QTextCursor cursor = textCursor(); - cursor.setPosition(m_startOfEditableArea); + cursor.setPosition(0); cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); cursor.removeSelectedText(); cursor.insertText(script); diff --git a/src/plugins/qmljstools/qmlconsoleedit.h b/src/plugins/qmljstools/qmlconsoleedit.h index 43ae8ba21c..8bc8b80dd0 100644 --- a/src/plugins/qmljstools/qmlconsoleedit.h +++ b/src/plugins/qmljstools/qmlconsoleedit.h @@ -49,7 +49,6 @@ public: protected: void keyPressEvent(QKeyEvent *e); - void contextMenuEvent(QContextMenuEvent *event); void focusOutEvent(QFocusEvent *e); signals: @@ -64,8 +63,6 @@ protected: private: QModelIndex m_historyIndex; QString m_cachedScript; - QImage m_prompt; - int m_startOfEditableArea; QmlJSInterpreter m_interpreter; }; diff --git a/src/plugins/qmljstools/qmlconsoleitemdelegate.cpp b/src/plugins/qmljstools/qmlconsoleitemdelegate.cpp index 208be88e7a..1caae45e3d 100644 --- a/src/plugins/qmljstools/qmlconsoleitemdelegate.cpp +++ b/src/plugins/qmljstools/qmlconsoleitemdelegate.cpp @@ -32,6 +32,7 @@ #include "qmlconsoleedit.h" #include <coreplugin/coreconstants.h> +#include <utils/themehelper.h> #include <QPainter> #include <QTreeView> @@ -71,9 +72,9 @@ namespace Internal { QmlConsoleItemDelegate::QmlConsoleItemDelegate(QObject *parent) : QStyledItemDelegate(parent), - m_logIcon(QLatin1String(Core::Constants::ICON_INFO)), - m_warningIcon(QLatin1String(Core::Constants::ICON_WARNING)), - m_errorIcon(QLatin1String(Core::Constants::ICON_ERROR)), + m_logIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_INFO))), + m_warningIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))), + m_errorIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_ERROR))), m_expandIcon(QLatin1String(":/qmljstools/images/expand.png")), m_collapseIcon(QLatin1String(":/qmljstools/images/collapse.png")), m_prompt(QLatin1String(":/qmljstools/images/prompt.png")), @@ -311,6 +312,18 @@ QWidget *QmlConsoleItemDelegate::createEditor(QWidget *parent, { QmlConsoleEdit *editor = new QmlConsoleEdit(index, parent); + // Fiddle the prompt into the margin so that we don't have to put it into the text. + // Apparently you can have both background-image and background-color, which conveniently + // prevents the painted text from shining through. + editor->setStyleSheet(QLatin1String("QTextEdit {" + "margin-left: 24px;" + "margin-top: 4px;" + "background-color: white;" + "background-image: url(:/qmljstools/images/prompt.png);" + "background-position: baseline left;" + "background-origin: margin;" + "background-repeat: none;" + "}")); connect(editor, &QmlConsoleEdit::editingFinished, this, &QmlConsoleItemDelegate::commitAndCloseEditor); return editor; diff --git a/src/plugins/qmljstools/qmlconsolepane.cpp b/src/plugins/qmljstools/qmlconsolepane.cpp index 7111eb6a93..a8a61dcd73 100644 --- a/src/plugins/qmljstools/qmlconsolepane.cpp +++ b/src/plugins/qmljstools/qmlconsolepane.cpp @@ -37,6 +37,7 @@ #include <coreplugin/icore.h> #include <coreplugin/findplaceholder.h> #include <utils/savedaction.h> +#include <utils/themehelper.h> #include <aggregation/aggregate.h> #include <coreplugin/find/itemviewfind.h> @@ -112,7 +113,8 @@ QmlConsolePane::QmlConsolePane(QObject *parent) m_showDebugButtonAction->setToolTip(tr("Show debug, log, and info messages.")); m_showDebugButtonAction->setCheckable(true); m_showDebugButtonAction->setChecked(true); - m_showDebugButtonAction->setIcon(QIcon(QLatin1String(Core::Constants::ICON_INFO))); + m_showDebugButtonAction->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_INFO))); connect(m_showDebugButtonAction, &Utils::SavedAction::toggled, m_proxyModel, &QmlConsoleProxyModel::setShowLogs); m_showDebugButton->setDefaultAction(m_showDebugButtonAction); @@ -126,7 +128,8 @@ QmlConsolePane::QmlConsolePane(QObject *parent) m_showWarningButtonAction->setToolTip(tr("Show warning messages.")); m_showWarningButtonAction->setCheckable(true); m_showWarningButtonAction->setChecked(true); - m_showWarningButtonAction->setIcon(QIcon(QLatin1String(Core::Constants::ICON_WARNING))); + m_showWarningButtonAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_WARNING))); connect(m_showWarningButtonAction, &Utils::SavedAction::toggled, m_proxyModel, &QmlConsoleProxyModel::setShowWarnings); m_showWarningButton->setDefaultAction(m_showWarningButtonAction); @@ -140,7 +143,8 @@ QmlConsolePane::QmlConsolePane(QObject *parent) m_showErrorButtonAction->setToolTip(tr("Show error messages.")); m_showErrorButtonAction->setCheckable(true); m_showErrorButtonAction->setChecked(true); - m_showErrorButtonAction->setIcon(QIcon(QLatin1String(Core::Constants::ICON_ERROR))); + m_showErrorButtonAction->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_ERROR))); connect(m_showErrorButtonAction, &Utils::SavedAction::toggled, m_proxyModel, &QmlConsoleProxyModel::setShowErrors); m_showErrorButton->setDefaultAction(m_showErrorButtonAction); @@ -191,12 +195,17 @@ bool QmlConsolePane::canFocus() const bool QmlConsolePane::hasFocus() const { - return m_consoleWidget->window()->focusWidget() == m_consoleWidget; + for (QWidget *widget = m_consoleWidget->window()->focusWidget(); widget != 0; + widget = widget->parentWidget()) { + if (widget == m_consoleWidget) + return true; + } + return false; } void QmlConsolePane::setFocus() { - m_consoleWidget->setFocus(); + m_consoleView->setFocus(); } bool QmlConsolePane::canNext() const diff --git a/src/plugins/qmljstools/qmlconsoleview.cpp b/src/plugins/qmljstools/qmlconsoleview.cpp index 5c0f054a42..31c058d9fb 100644 --- a/src/plugins/qmljstools/qmlconsoleview.cpp +++ b/src/plugins/qmljstools/qmlconsoleview.cpp @@ -164,9 +164,6 @@ void QmlConsoleView::mousePressEvent(QMouseEvent *event) } if (!handled) Utils::TreeView::mousePressEvent(event); - } else { - selectionModel()->setCurrentIndex(model()->index(model()->rowCount() - 1, 0), - QItemSelectionModel::ClearAndSelect); } } @@ -216,6 +213,13 @@ void QmlConsoleView::contextMenuEvent(QContextMenuEvent *event) } } +void QmlConsoleView::focusInEvent(QFocusEvent *event) +{ + Q_UNUSED(event); + selectionModel()->setCurrentIndex(model()->index(model()->rowCount() - 1, 0), + QItemSelectionModel::ClearAndSelect); +} + void QmlConsoleView::onRowActivated(const QModelIndex &index) { if (!index.isValid()) diff --git a/src/plugins/qmljstools/qmlconsoleview.h b/src/plugins/qmljstools/qmlconsoleview.h index 8b42283b91..0fa85a4b51 100644 --- a/src/plugins/qmljstools/qmlconsoleview.h +++ b/src/plugins/qmljstools/qmlconsoleview.h @@ -51,6 +51,7 @@ protected: void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const; void contextMenuEvent(QContextMenuEvent *event); + void focusInEvent(QFocusEvent *event); private slots: void onRowActivated(const QModelIndex &index); diff --git a/src/plugins/qmljstools/qmljsinterpreter.cpp b/src/plugins/qmljstools/qmljsinterpreter.cpp index 31a766e492..d94d48e38f 100644 --- a/src/plugins/qmljstools/qmljsinterpreter.cpp +++ b/src/plugins/qmljstools/qmljsinterpreter.cpp @@ -33,13 +33,13 @@ namespace QmlJSTools { namespace Internal { -bool QmlJSInterpreter::canEvaluate() +bool QmlJSInterpreter::canEvaluate(QString code) { int yyaction = 0; int yytoken = -1; int yytos = -1; - setCode(m_code, 1); + setCode(code, 1); m_tokens.append(T_FEED_JS_PROGRAM); do { diff --git a/src/plugins/qmljstools/qmljsinterpreter.h b/src/plugins/qmljstools/qmljsinterpreter.h index 70471ab637..9b2063be39 100644 --- a/src/plugins/qmljstools/qmljsinterpreter.h +++ b/src/plugins/qmljstools/qmljsinterpreter.h @@ -48,20 +48,14 @@ public: : Lexer(&m_engine), m_stateStack(128) { - } - void clearText() { m_code.clear(); } - void appendText(const QString &text) { m_code += text; } - - QString code() const { return m_code; } - bool canEvaluate(); + bool canEvaluate(QString code); private: QmlJS::Engine m_engine; QVector<int> m_stateStack; QList<int> m_tokens; - QString m_code; }; } // namespace Internal diff --git a/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp b/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp index 86454d38f4..9d49420f27 100644 --- a/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp +++ b/src/plugins/qmlprofiler/localqmlprofilerrunner.cpp @@ -44,6 +44,7 @@ #include <qmldebug/qmldebugcommandlinearguments.h> #include <QTcpServer> +#include <QTemporaryFile> using namespace QmlProfiler; using namespace ProjectExplorer; @@ -71,7 +72,7 @@ Analyzer::AnalyzerRunControl *LocalQmlProfilerRunner::createLocalRunControl( conf.executableArguments = sp.debuggeeArgs; conf.workingDirectory = sp.workingDirectory; conf.environment = sp.environment; - + conf.socket = sp.analyzerSocket; conf.port = sp.analyzerPort; if (conf.executable.isEmpty()) { @@ -82,15 +83,27 @@ Analyzer::AnalyzerRunControl *LocalQmlProfilerRunner::createLocalRunControl( LocalQmlProfilerRunner *runner = new LocalQmlProfilerRunner(conf, engine); - QObject::connect(runner, SIGNAL(stopped()), engine, SLOT(notifyRemoteFinished())); - QObject::connect(runner, SIGNAL(appendMessage(QString,Utils::OutputFormat)), - engine, SLOT(logApplicationMessage(QString,Utils::OutputFormat))); - QObject::connect(engine, SIGNAL(starting(const Analyzer::AnalyzerRunControl*)), runner, - SLOT(start())); - QObject::connect(rc, SIGNAL(finished()), runner, SLOT(stop())); + QObject::connect(runner, &LocalQmlProfilerRunner::stopped, + engine, &QmlProfilerRunControl::notifyRemoteFinished); + QObject::connect(runner, &LocalQmlProfilerRunner::appendMessage, + engine, &QmlProfilerRunControl::logApplicationMessage); + QObject::connect(engine, &Analyzer::AnalyzerRunControl::starting, + runner, &LocalQmlProfilerRunner::start); + QObject::connect(rc, &RunControl::finished, runner, &LocalQmlProfilerRunner::stop); return rc; } +QString LocalQmlProfilerRunner::findFreeSocket() +{ + QTemporaryFile file; + if (file.open()) { + return file.fileName(); + } else { + qWarning() << "Could not open a temporary file to find a debug socket."; + return QString(); + } +} + quint16 LocalQmlProfilerRunner::findFreePort(QString &host) { QTcpServer server; @@ -109,8 +122,8 @@ LocalQmlProfilerRunner::LocalQmlProfilerRunner(const Configuration &configuratio m_configuration(configuration), m_engine(engine) { - connect(&m_launcher, SIGNAL(appendMessage(QString,Utils::OutputFormat)), - this, SIGNAL(appendMessage(QString,Utils::OutputFormat))); + connect(&m_launcher, &ApplicationLauncher::appendMessage, + this, &LocalQmlProfilerRunner::appendMessage); } LocalQmlProfilerRunner::~LocalQmlProfilerRunner() @@ -120,20 +133,26 @@ LocalQmlProfilerRunner::~LocalQmlProfilerRunner() void LocalQmlProfilerRunner::start() { - QString arguments = QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlProfilerServices, - m_configuration.port); + QString arguments = m_configuration.socket.isEmpty() ? + QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, + m_configuration.port) : + QmlDebug::qmlDebugLocalArguments(QmlDebug::QmlProfilerServices, + m_configuration.socket); + if (!m_configuration.executableArguments.isEmpty()) arguments += QLatin1Char(' ') + m_configuration.executableArguments; - if (QmlProfilerPlugin::debugOutput) - qWarning("QmlProfiler: Launching %s:%d", qPrintable(m_configuration.executable), - m_configuration.port); + if (QmlProfilerPlugin::debugOutput) { + qWarning("QmlProfiler: Launching %s:%s", qPrintable(m_configuration.executable), + qPrintable(m_configuration.socket.isEmpty() ? + QString::number(m_configuration.port) : m_configuration.socket)); + } m_launcher.setWorkingDirectory(m_configuration.workingDirectory); m_launcher.setEnvironment(m_configuration.environment); - connect(&m_launcher, SIGNAL(processExited(int,QProcess::ExitStatus)), - this, SLOT(spontaneousStop(int,QProcess::ExitStatus))); + connect(&m_launcher, &ApplicationLauncher::processExited, + this, &LocalQmlProfilerRunner::spontaneousStop); m_launcher.start(ApplicationLauncher::Gui, m_configuration.executable, arguments); emit started(); @@ -148,8 +167,8 @@ void LocalQmlProfilerRunner::spontaneousStop(int exitCode, QProcess::ExitStatus qWarning("QmlProfiler: Application exited (exit code %d).", exitCode); } - disconnect(&m_launcher, SIGNAL(processExited(int,QProcess::ExitStatus)), - this, SLOT(spontaneousStop(int,QProcess::ExitStatus))); + disconnect(&m_launcher, &ApplicationLauncher::processExited, + this, &LocalQmlProfilerRunner::spontaneousStop); emit stopped(); } diff --git a/src/plugins/qmlprofiler/localqmlprofilerrunner.h b/src/plugins/qmlprofiler/localqmlprofilerrunner.h index 57063e7b4f..1094ad482b 100644 --- a/src/plugins/qmlprofiler/localqmlprofilerrunner.h +++ b/src/plugins/qmlprofiler/localqmlprofilerrunner.h @@ -53,6 +53,7 @@ public: QString executable; QString executableArguments; quint16 port; + QString socket; QString workingDirectory; Utils::Environment environment; }; @@ -63,6 +64,7 @@ public: QString *errorMessage); static quint16 findFreePort(QString &host); + static QString findFreeSocket(); ~LocalQmlProfilerRunner(); diff --git a/src/plugins/qmlprofiler/qml/clean_pane_small.png b/src/plugins/qmlprofiler/qml/clean_pane_small.png Binary files differdeleted file mode 100644 index 22efdbab5d..0000000000 --- a/src/plugins/qmlprofiler/qml/clean_pane_small.png +++ /dev/null diff --git a/src/plugins/qmlprofiler/qml/qmlprofiler.qrc b/src/plugins/qmlprofiler/qml/qmlprofiler.qrc index 9bf2978507..ffef45e6a8 100644 --- a/src/plugins/qmlprofiler/qml/qmlprofiler.qrc +++ b/src/plugins/qmlprofiler/qml/qmlprofiler.qrc @@ -1,6 +1,5 @@ <RCC> <qresource prefix="/qmlprofiler"> - <file>clean_pane_small.png</file> <file>recordOff.png</file> <file>recordOn.png</file> <file>bindingloops.vert</file> diff --git a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp index 0a938b1d72..6ae0280b16 100644 --- a/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofileranimationsmodel.cpp @@ -81,20 +81,21 @@ void QmlProfilerAnimationsModel::loadData() qint64 minNextStartTimes[] = {0, 0}; foreach (const QmlProfilerDataModel::QmlEventData &event, referenceList) { - const QmlProfilerDataModel::QmlEventTypeData &type = typeList[event.typeIndex]; + const QmlProfilerDataModel::QmlEventTypeData &type = typeList[event.typeIndex()]; if (!accepted(type)) continue; - lastThread = (QmlDebug::AnimationThread)event.numericData3; + lastThread = (QmlDebug::AnimationThread)event.numericData(2); // initial estimation of the event duration: 1/framerate - qint64 estimatedDuration = event.numericData1 > 0 ? 1e9/event.numericData1 : 1; + qint64 estimatedDuration = event.numericData(0) > 0 ? 1e9/event.numericData(0) : 1; // the profiler registers the animation events at the end of them - qint64 realEndTime = event.startTime; + qint64 realEndTime = event.startTime(); // ranges should not overlap. If they do, our estimate wasn't accurate enough - qint64 realStartTime = qMax(event.startTime - estimatedDuration, minNextStartTimes[lastThread]); + qint64 realStartTime = qMax(event.startTime() - estimatedDuration, + minNextStartTimes[lastThread]); // Sometimes our estimate is far off or the server has miscalculated the frame rate if (realStartTime >= realEndTime) @@ -102,9 +103,9 @@ void QmlProfilerAnimationsModel::loadData() // Don't "fix" the framerate even if we've fixed the duration. // The server should know better after all and if it doesn't we want to see that. - lastEvent.typeId = event.typeIndex; - lastEvent.framerate = (int)event.numericData1; - lastEvent.animationcount = (int)event.numericData2; + lastEvent.typeId = event.typeIndex(); + lastEvent.framerate = (int)event.numericData(0); + lastEvent.animationcount = (int)event.numericData(1); QTC_ASSERT(lastEvent.animationcount > 0, continue); m_data.insert(insert(realStartTime, realEndTime - realStartTime, lastThread), lastEvent); @@ -112,9 +113,10 @@ void QmlProfilerAnimationsModel::loadData() if (lastThread == QmlDebug::GuiThread) m_maxGuiThreadAnimations = qMax(lastEvent.animationcount, m_maxGuiThreadAnimations); else - m_maxRenderThreadAnimations = qMax(lastEvent.animationcount, m_maxRenderThreadAnimations); + m_maxRenderThreadAnimations = qMax(lastEvent.animationcount, + m_maxRenderThreadAnimations); - minNextStartTimes[lastThread] = event.startTime + 1; + minNextStartTimes[lastThread] = event.startTime() + 1; updateProgress(count(), referenceList.count()); } diff --git a/src/plugins/qmlprofiler/qmlprofilerattachdialog.cpp b/src/plugins/qmlprofiler/qmlprofilerattachdialog.cpp index d65ebe7bf0..a3e04a104b 100644 --- a/src/plugins/qmlprofiler/qmlprofilerattachdialog.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerattachdialog.cpp @@ -77,8 +77,8 @@ QmlProfilerAttachDialog::QmlProfilerAttachDialog(QWidget *parent) : verticalLayout->addLayout(formLayout); verticalLayout->addWidget(buttonBox); - connect(buttonBox, SIGNAL(accepted()), SLOT(accept())); - connect(buttonBox, SIGNAL(rejected()), SLOT(reject())); + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } QmlProfilerAttachDialog::~QmlProfilerAttachDialog() diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp index 04f2ac0eb6..c031a8d317 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.cpp @@ -32,7 +32,6 @@ #include "qmlprofilertool.h" #include "qmlprofilerplugin.h" -#include <qmldebug/qmldebugclient.h> #include <qmldebug/qmlprofilertraceclient.h> #include <utils/qtcassert.h> @@ -59,10 +58,12 @@ public: QTimer connectionTimer; int connectionAttempts; + QString localSocket; QString tcpHost; quint64 tcpPort; QString sysroot; quint32 flushInterval; + bool aggregateTraces; QmlProfilerModelManager *modelManager; }; @@ -77,11 +78,12 @@ QmlProfilerClientManager::QmlProfilerClientManager(QObject *parent) : d->connection = 0; d->connectionAttempts = 0; d->flushInterval = 0; + d->aggregateTraces = true; d->modelManager = 0; d->connectionTimer.setInterval(200); - connect(&d->connectionTimer, SIGNAL(timeout()), SLOT(tryToConnect())); + connect(&d->connectionTimer, &QTimer::timeout, this, &QmlProfilerClientManager::tryToConnect); } QmlProfilerClientManager::~QmlProfilerClientManager() @@ -101,6 +103,16 @@ void QmlProfilerClientManager::setFlushInterval(quint32 flushInterval) d->flushInterval = flushInterval; } +bool QmlProfilerClientManager::aggregateTraces() const +{ + return d->aggregateTraces; +} + +void QmlProfilerClientManager::setAggregateTraces(bool aggregateTraces) +{ + d->aggregateTraces = aggregateTraces; +} + void QmlProfilerClientManager::setTcpConnection(QString host, quint64 port) { d->tcpHost = host; @@ -108,6 +120,13 @@ void QmlProfilerClientManager::setTcpConnection(QString host, quint64 port) disconnectClient(); } +void QmlProfilerClientManager::setLocalSocket(QString file) +{ + d->localSocket = file; + d->tcpPort = 0; + connectLocalClient(file); +} + void QmlProfilerClientManager::clearBufferedData() { if (d->qmlclientplugin) @@ -119,7 +138,7 @@ void QmlProfilerClientManager::discardPendingData() clearBufferedData(); } -void QmlProfilerClientManager::connectClient(quint16 port) +void QmlProfilerClientManager::connectTcpClient(quint16 port) { if (d->connection) { if (port == d->tcpPort) { @@ -130,20 +149,28 @@ void QmlProfilerClientManager::connectClient(quint16 port) } } - d->connection = new QmlDebugConnection; - enableServices(); - connect(d->connection, SIGNAL(stateMessage(QString)), this, SLOT(logState(QString))); - connect(d->connection, SIGNAL(errorMessage(QString)), this, SLOT(logState(QString))); - connect(d->connection, SIGNAL(opened()), this, SLOT(qmlDebugConnectionOpened())); - connect(d->connection, SIGNAL(closed()), this, SLOT(qmlDebugConnectionClosed())); - connect(d->connection, &QmlDebugConnection::error, - this, &QmlProfilerClientManager::qmlDebugConnectionError); + createConnection(); d->connectionTimer.start(); d->tcpPort = port; } -void QmlProfilerClientManager::enableServices() +void QmlProfilerClientManager::connectLocalClient(const QString &file) +{ + if (d->connection) { + if (file == d->localSocket) + return; + else + delete d->connection; + } + + createConnection(); + d->localSocket = file; + d->connection->startLocalServer(file); +} + +void QmlProfilerClientManager::createConnection() { + d->connection = new QmlDebugConnection; QTC_ASSERT(d->profilerState, return); disconnectClientSignals(); @@ -154,30 +181,34 @@ void QmlProfilerClientManager::enableServices() d->profilerState->requestedFeatures()); d->qmlclientplugin->setFlushInterval(d->flushInterval); connectClientSignals(); + connect(d->connection, &QmlDebugConnection::connected, + this, &QmlProfilerClientManager::qmlDebugConnectionOpened); + connect(d->connection, &QmlDebugConnection::disconnected, + this, &QmlProfilerClientManager::qmlDebugConnectionClosed); + connect(d->connection, &QmlDebugConnection::socketError, + this, &QmlProfilerClientManager::qmlDebugConnectionError); + connect(d->connection, &QmlDebugConnection::socketStateChanged, + this, &QmlProfilerClientManager::qmlDebugConnectionStateChanged); } void QmlProfilerClientManager::connectClientSignals() { QTC_ASSERT(d->profilerState, return); if (d->qmlclientplugin) { - connect(d->qmlclientplugin.data(), SIGNAL(complete(qint64)), - this, SLOT(qmlComplete(qint64))); - connect(d->qmlclientplugin.data(), - SIGNAL(rangedEvent(QmlDebug::Message,QmlDebug::RangeType,int,qint64,qint64, - QString,QmlDebug::QmlEventLocation,qint64,qint64,qint64, - qint64,qint64)), - d->modelManager, - SLOT(addQmlEvent(QmlDebug::Message,QmlDebug::RangeType,int,qint64,qint64, - QString,QmlDebug::QmlEventLocation,qint64,qint64,qint64,qint64, - qint64))); - connect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64,QList<int>)), - d->modelManager->traceTime(), SLOT(increaseEndTime(qint64))); - connect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64,QList<int>)), - d->modelManager->traceTime(), SLOT(decreaseStartTime(qint64))); - connect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()), - d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); - connect(d->qmlclientplugin.data(), SIGNAL(recordingChanged(bool)), - d->profilerState, SLOT(setServerRecording(bool))); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::complete, + this, &QmlProfilerClientManager::qmlComplete); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::newEngine, + this, &QmlProfilerClientManager::qmlNewEngine); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::rangedEvent, + d->modelManager, &QmlProfilerModelManager::addQmlEvent); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::debugMessage, + d->modelManager, &QmlProfilerModelManager::addDebugMessage); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::traceFinished, + d->modelManager->traceTime(), &QmlProfilerTraceTime::increaseEndTime); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::traceStarted, + d->modelManager->traceTime(), &QmlProfilerTraceTime::decreaseStartTime); + connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::recordingChanged, + d->profilerState, &QmlProfilerStateManager::setServerRecording); connect(d->profilerState, &QmlProfilerStateManager::requestedFeaturesChanged, d->qmlclientplugin.data(), &QmlProfilerTraceClient::setRequestedFeatures); connect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::recordedFeaturesChanged, @@ -188,23 +219,20 @@ void QmlProfilerClientManager::connectClientSignals() void QmlProfilerClientManager::disconnectClientSignals() { if (d->qmlclientplugin) { - disconnect(d->qmlclientplugin.data(), SIGNAL(complete(qint64)), - this, SLOT(qmlComplete(qint64))); - disconnect(d->qmlclientplugin.data(), - SIGNAL(rangedEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation, - qint64,qint64,qint64,qint64,qint64)), - d->modelManager, - SLOT(addQmlEvent(int,int,qint64,qint64,QStringList,QmlDebug::QmlEventLocation, - qint64,qint64,qint64,qint64,qint64))); - disconnect(d->qmlclientplugin.data(), SIGNAL(traceFinished(qint64)), - d->modelManager->traceTime(), SLOT(increaseEndTime(qint64))); - disconnect(d->qmlclientplugin.data(), SIGNAL(traceStarted(qint64)), - d->modelManager->traceTime(), SLOT(decreaseStartTime(qint64))); - disconnect(d->qmlclientplugin.data(), SIGNAL(enabledChanged()), - d->qmlclientplugin.data(), SLOT(sendRecordingStatus())); - // fixme: this should be unified for both clients - disconnect(d->qmlclientplugin.data(), SIGNAL(recordingChanged(bool)), - d->profilerState, SLOT(setServerRecording(bool))); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::complete, + this, &QmlProfilerClientManager::qmlComplete); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::newEngine, + this, &QmlProfilerClientManager::qmlNewEngine); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::rangedEvent, + d->modelManager, &QmlProfilerModelManager::addQmlEvent); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::debugMessage, + d->modelManager, &QmlProfilerModelManager::addDebugMessage); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::traceFinished, + d->modelManager->traceTime(), &QmlProfilerTraceTime::increaseEndTime); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::traceStarted, + d->modelManager->traceTime(), &QmlProfilerTraceTime::decreaseStartTime); + disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::recordingChanged, + d->profilerState, &QmlProfilerStateManager::setServerRecording); disconnect(d->profilerState, &QmlProfilerStateManager::requestedFeaturesChanged, d->qmlclientplugin.data(), &QmlProfilerTraceClient::setRequestedFeatures); disconnect(d->qmlclientplugin.data(), &QmlProfilerTraceClient::recordedFeaturesChanged, @@ -214,7 +242,7 @@ void QmlProfilerClientManager::disconnectClientSignals() void QmlProfilerClientManager::connectToClient() { - if (!d->connection || d->connection->isOpen() || d->connection->isConnecting()) + if (!d->connection || d->connection->isConnected() || d->connection->isConnecting()) return; d->connection->connectToHost(d->tcpHost, d->tcpPort); @@ -222,7 +250,7 @@ void QmlProfilerClientManager::connectToClient() bool QmlProfilerClientManager::isConnected() const { - return d->connection && d->connection->isOpen(); + return d->connection && d->connection->isConnected(); } void QmlProfilerClientManager::disconnectClient() @@ -239,7 +267,7 @@ void QmlProfilerClientManager::tryToConnect() { ++d->connectionAttempts; - if (d->connection && d->connection->isOpen()) { + if (d->connection && d->connection->isConnected()) { d->connectionTimer.stop(); d->connectionAttempts = 0; } else if (d->connectionAttempts == 50) { @@ -257,8 +285,8 @@ void QmlProfilerClientManager::tryToConnect() infoBox->setDefaultButton(QMessageBox::Retry); infoBox->setModal(true); - connect(infoBox, SIGNAL(finished(int)), - this, SLOT(retryMessageBoxFinished(int))); + connect(infoBox, &QDialog::finished, + this, &QmlProfilerClientManager::retryMessageBoxFinished); infoBox->show(); } else { @@ -279,10 +307,10 @@ void QmlProfilerClientManager::qmlDebugConnectionClosed() emit connectionClosed(); } -void QmlProfilerClientManager::qmlDebugConnectionError(QDebugSupport::Error error) +void QmlProfilerClientManager::qmlDebugConnectionError(QAbstractSocket::SocketError error) { - logState(tr("Debug connection error %1").arg(error)); - if (d->connection->isOpen()) { + logState(QmlDebugConnection::socketErrorToString(error)); + if (d->connection->isConnected()) { disconnectClient(); emit connectionClosed(); } else { @@ -290,6 +318,11 @@ void QmlProfilerClientManager::qmlDebugConnectionError(QDebugSupport::Error erro } } +void QmlProfilerClientManager::qmlDebugConnectionStateChanged(QAbstractSocket::SocketState state) +{ + logState(QmlDebugConnection::socketStateToString(state)); +} + void QmlProfilerClientManager::logState(const QString &msg) { QString state = QLatin1String("QML Profiler: ") + msg; @@ -301,7 +334,7 @@ void QmlProfilerClientManager::logState(const QString &msg) void QmlProfilerClientManager::retryMessageBoxFinished(int result) { if (d->connection) { - QTC_ASSERT(!d->connection->isOpen(), return); + QTC_ASSERT(!d->connection->isConnected(), return); if (d->connection->isConnecting()) d->connection->disconnect(); } @@ -328,27 +361,35 @@ void QmlProfilerClientManager::retryMessageBoxFinished(int result) void QmlProfilerClientManager::qmlComplete(qint64 maximumTime) { d->modelManager->traceTime()->increaseEndTime(maximumTime); - if (d->modelManager) + if (d->modelManager && !d->aggregateTraces) d->modelManager->acquiringDone(); } +void QmlProfilerClientManager::qmlNewEngine(int engineId) +{ + if (d->qmlclientplugin->isRecording() != d->profilerState->clientRecording()) + d->qmlclientplugin->setRecording(d->profilerState->clientRecording()); + else + d->qmlclientplugin->sendRecordingStatus(engineId); +} + void QmlProfilerClientManager::registerProfilerStateManager( QmlProfilerStateManager *profilerState ) { if (d->profilerState) { - disconnect(d->profilerState, SIGNAL(stateChanged()), - this, SLOT(profilerStateChanged())); - disconnect(d->profilerState, SIGNAL(clientRecordingChanged()), - this, SLOT(clientRecordingChanged())); + disconnect(d->profilerState, &QmlProfilerStateManager::stateChanged, + this, &QmlProfilerClientManager::profilerStateChanged); + disconnect(d->profilerState, &QmlProfilerStateManager::clientRecordingChanged, + this, &QmlProfilerClientManager::clientRecordingChanged); } d->profilerState = profilerState; // connect if (d->profilerState) { - connect(d->profilerState, SIGNAL(stateChanged()), - this, SLOT(profilerStateChanged())); - connect(d->profilerState, SIGNAL(clientRecordingChanged()), - this, SLOT(clientRecordingChanged())); + connect(d->profilerState, &QmlProfilerStateManager::stateChanged, + this, &QmlProfilerClientManager::profilerStateChanged); + connect(d->profilerState, &QmlProfilerStateManager::clientRecordingChanged, + this, &QmlProfilerClientManager::clientRecordingChanged); } } diff --git a/src/plugins/qmlprofiler/qmlprofilerclientmanager.h b/src/plugins/qmlprofiler/qmlprofilerclientmanager.h index 0cbf88dc56..2d11ffdb9d 100644 --- a/src/plugins/qmlprofiler/qmlprofilerclientmanager.h +++ b/src/plugins/qmlprofiler/qmlprofilerclientmanager.h @@ -33,10 +33,10 @@ #include "qmlprofilerstatemanager.h" #include <qmldebug/qmlprofilereventlocation.h> -#include <qmldebug/qmldebugclient.h> #include <QObject> #include <QStringList> +#include <QAbstractSocket> namespace QmlProfiler { class QmlProfilerModelManager; @@ -52,6 +52,7 @@ public: void registerProfilerStateManager(QmlProfilerStateManager *profilerState); void setTcpConnection(QString host, quint64 port); + void setLocalSocket(QString file); void clearBufferedData(); void discardPendingData(); @@ -60,24 +61,30 @@ public: void setModelManager(QmlProfilerModelManager *m); void setFlushInterval(quint32 flushInterval); + bool aggregateTraces() const; + void setAggregateTraces(bool aggregateTraces); + signals: void connectionFailed(); void connectionClosed(); public slots: - void connectClient(quint16 port); + void connectTcpClient(quint16 port); + void connectLocalClient(const QString &file); void disconnectClient(); private slots: void tryToConnect(); void qmlDebugConnectionOpened(); void qmlDebugConnectionClosed(); - void qmlDebugConnectionError(QDebugSupport::Error error); + void qmlDebugConnectionError(QAbstractSocket::SocketError error); + void qmlDebugConnectionStateChanged(QAbstractSocket::SocketState state); void logState(const QString &); void retryMessageBoxFinished(int result); void qmlComplete(qint64 maximumTime); + void qmlNewEngine(int engineId); void profilerStateChanged(); void clientRecordingChanged(); @@ -88,7 +95,7 @@ private: void connectToClient(); - void enableServices(); + void createConnection(); void connectClientSignals(); void disconnectClientSignals(); diff --git a/src/plugins/qmlprofiler/qmlprofilerconfigwidget.cpp b/src/plugins/qmlprofiler/qmlprofilerconfigwidget.cpp index c7fd77db00..9c130a82d6 100644 --- a/src/plugins/qmlprofiler/qmlprofilerconfigwidget.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerconfigwidget.cpp @@ -46,6 +46,9 @@ QmlProfilerConfigWidget::QmlProfilerConfigWidget(QmlProfilerSettings *settings, connect(m_ui->flushInterval, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), m_settings, &QmlProfilerSettings::setFlushInterval); + connect(m_ui->aggregateTraces, &QCheckBox::toggled, + m_settings, &QmlProfilerSettings::setAggregateTraces); + connect(m_settings, &QmlProfilerSettings::changed, this, &QmlProfilerConfigWidget::updateUi); } @@ -59,6 +62,7 @@ void QmlProfilerConfigWidget::updateUi() m_ui->flushEnabled->setChecked(m_settings->flushEnabled()); m_ui->flushInterval->setEnabled(m_settings->flushEnabled()); m_ui->flushInterval->setValue(m_settings->flushInterval()); + m_ui->aggregateTraces->setChecked(m_settings->aggregateTraces()); } } // Internal diff --git a/src/plugins/qmlprofiler/qmlprofilerconfigwidget.ui b/src/plugins/qmlprofiler/qmlprofilerconfigwidget.ui index faa76b3b7b..28f8139d00 100644 --- a/src/plugins/qmlprofiler/qmlprofilerconfigwidget.ui +++ b/src/plugins/qmlprofiler/qmlprofilerconfigwidget.ui @@ -47,6 +47,23 @@ itself takes time. </string> </property> </widget> </item> + <item row="2" column="0"> + <widget class="QLabel" name="aggregateTracesLabel"> + <property name="text"> + <string>Process data only when process ends:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QCheckBox" name="aggregateTraces"> + <property name="toolTip"> + <string>Only process data when the process being profiled ends, not when the current recording +session ends. This way multiple recording sessions can be aggregated in a single trace, +for example if multiple QML engines start and stop sequentially during a single run of +the program.</string> + </property> + </widget> + </item> </layout> </widget> <resources/> diff --git a/src/plugins/qmlprofiler/qmlprofilerconstants.h b/src/plugins/qmlprofiler/qmlprofilerconstants.h index 528bddbd10..5b3e061188 100644 --- a/src/plugins/qmlprofiler/qmlprofilerconstants.h +++ b/src/plugins/qmlprofiler/qmlprofilerconstants.h @@ -41,6 +41,7 @@ const char TASK_SAVE[] = "QmlProfiler.TaskSave"; const char FLUSH_ENABLED[] = "Analyzer.QmlProfiler.FlushEnabled"; const char FLUSH_INTERVAL[] = "Analyzer.QmlProfiler.FlushInterval"; const char LAST_TRACE_FILE[] = "Analyzer.QmlProfiler.LastTraceFile"; +const char AGGREGATE_TRACES[] = "Analyzer.QmlProfiler.AggregateTraces"; const char SETTINGS[] = "Analyzer.QmlProfiler.Settings"; const char ANALYZER[] = "Analyzer"; diff --git a/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp b/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp index e29fd51548..4d5ef9c86f 100644 --- a/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerdatamodel.cpp @@ -194,7 +194,7 @@ bool QmlProfilerDataModel::isEmpty() const inline static bool operator<(const QmlProfilerDataModel::QmlEventData &t1, const QmlProfilerDataModel::QmlEventData &t2) { - return t1.startTime < t2.startTime; + return t1.startTime() < t2.startTime(); } inline static uint qHash(const QmlProfilerDataModel::QmlEventTypeData &type) @@ -266,23 +266,18 @@ void QmlProfilerDataModel::addQmlEvent(QmlDebug::Message message, QmlDebug::Rang Q_D(QmlProfilerDataModel); QString displayName; - QmlEventTypeData typeData = {displayName, location, message, rangeType, detailType, data}; - - // Special case for QtQuick 1 Compiling and Creating events: filename is in the "data" field. - if ((rangeType == QmlDebug::Compiling || rangeType == QmlDebug::Creating) && - location.filename.isEmpty()) { - typeData.location.filename = data; - typeData.location.line = typeData.location.column = 1; - } - - QmlEventData eventData = {-1, startTime, duration, ndata1, ndata2, ndata3, ndata4, ndata5}; + QmlEventTypeData typeData(displayName, location, message, rangeType, detailType, + message == QmlDebug::DebugMessage ? QString() : data); + QmlEventData eventData = (message == QmlDebug::DebugMessage) ? + QmlEventData(startTime, duration, -1, data) : + QmlEventData(startTime, duration, -1, ndata1, ndata2, ndata3, ndata4, ndata5); QHash<QmlEventTypeData, int>::Iterator it = d->eventTypeIds.find(typeData); if (it != d->eventTypeIds.end()) { - eventData.typeIndex = it.value(); + eventData.setTypeIndex(it.value()); } else { - eventData.typeIndex = d->eventTypes.size(); - d->eventTypeIds[typeData] = eventData.typeIndex; + eventData.setTypeIndex(d->eventTypes.size()); + d->eventTypeIds[typeData] = eventData.typeIndex(); d->eventTypes.append(typeData); } @@ -298,7 +293,7 @@ qint64 QmlProfilerDataModel::lastTimeMark() const if (d->eventList.isEmpty()) return 0; - return d->eventList.last().startTime + d->eventList.last().duration; + return d->eventList.last().startTime() + d->eventList.last().duration(); } void QmlProfilerDataModel::detailsChanged(int requestId, const QString &newString) diff --git a/src/plugins/qmlprofiler/qmlprofilerdatamodel.h b/src/plugins/qmlprofiler/qmlprofilerdatamodel.h index c86ca76f1c..23a3ad0dea 100644 --- a/src/plugins/qmlprofiler/qmlprofilerdatamodel.h +++ b/src/plugins/qmlprofiler/qmlprofilerdatamodel.h @@ -43,6 +43,15 @@ class QMLPROFILER_EXPORT QmlProfilerDataModel : public QObject Q_OBJECT public: struct QmlEventTypeData { + QmlEventTypeData(const QString &displayName = QString(), + const QmlDebug::QmlEventLocation &location = QmlDebug::QmlEventLocation(), + QmlDebug::Message message = QmlDebug::MaximumMessage, + QmlDebug::RangeType rangeType = QmlDebug::MaximumRangeType, + int detailType = -1, const QString &data = QString()) : + displayName(displayName), location(location), message(message), rangeType(rangeType), + detailType(detailType), data(data) + {} + QString displayName; QmlDebug::QmlEventLocation location; QmlDebug::Message message; @@ -52,17 +61,143 @@ public: }; struct QmlEventData { - int typeIndex; - qint64 startTime; - qint64 duration; - qint64 numericData1; - qint64 numericData2; - qint64 numericData3; - qint64 numericData4; - qint64 numericData5; + QmlEventData(qint64 startTime = -1, qint64 duration = -1, int typeIndex = -1, + qint64 num0 = 0, qint64 num1 = 0, qint64 num2 = 0, qint64 num3 = 0, + qint64 num4 = 0) : + m_startTime(startTime), m_duration(duration), m_dataType(NumericData), + m_typeIndex(typeIndex) + { + m_numericData[0] = num0; + m_numericData[1] = num1; + m_numericData[2] = num2; + m_numericData[3] = num3; + m_numericData[4] = num4; + } + + QmlEventData(qint64 startTime, qint64 duration, int typeIndex, const QString &data) + : m_startTime(startTime), m_duration(duration), m_typeIndex(typeIndex) + { + assignStringData(data); + } + + QmlEventData(const QmlEventData &other) : + m_startTime(other.m_startTime), m_duration(other.m_duration), + m_dataType(other.m_dataType), m_typeIndex(other.m_typeIndex) + { + assignData(other); + } + + QmlEventData &operator=(const QmlEventData &other) + { + if (this != &other) { + if (m_dataType == StringData) + delete m_stringData; + + m_startTime = other.m_startTime; + m_duration = other.m_duration; + m_typeIndex = other.m_typeIndex; + m_dataType = other.m_dataType; + assignData(other); + } + return *this; + } + + ~QmlEventData() + { + if (m_dataType == StringData) + delete m_stringData; + } + + qint64 startTime() const { return m_startTime; } + void setStartTime(qint64 startTime) { m_startTime = startTime; } + + qint64 duration() const { return m_duration; } + void setDuration(qint64 duration) { m_duration = duration; } + + int typeIndex() const { return m_typeIndex; } + void setTypeIndex(int typeIndex) { m_typeIndex = typeIndex; } + + qint64 numericData(int i) const { return m_dataType == NumericData ? m_numericData[i] : 0; } + void setNumericData(int i, qint64 data) + { + if (m_dataType == StringData) + delete m_stringData; + + m_dataType = NumericData; + m_numericData[i] = data; + } + + QString stringData() const + { + switch (m_dataType) { + case NumericData: return QString(); + case StringData: return *m_stringData; + default: return QString::fromUtf8(m_characterData, m_characterDataLength); + } + } + + void setStringData(const QString &data) + { + if (m_dataType == StringData) + delete m_stringData; + + assignStringData(data); + } + + private: + + static const quint8 StringData = 254; + static const quint8 NumericData = 255; + + qint64 m_startTime; + qint64 m_duration; + union { + qint64 m_numericData[5]; + QString *m_stringData; + char m_characterData[5 * sizeof(qint64) + 3]; + }; + + union { + quint8 m_dataType; + quint8 m_characterDataLength; + }; + qint32 m_typeIndex; + + void assignData(const QmlEventData &other) + { + switch (m_dataType) { + case StringData: + m_stringData = new QString(*other.m_stringData); + break; + case NumericData: + for (int i = 0; i < 5; ++i) + m_numericData[i] = other.m_numericData[i]; + break; + default: + memcpy(m_characterData, other.m_characterData, m_characterDataLength); + break; + } + } + + void assignStringData(const QString &data) + { + QByteArray cdata = data.toUtf8(); + if (cdata.length() <= (int)sizeof(m_characterData)) { + m_characterDataLength = cdata.length(); + memcpy(m_characterData, cdata.constData(), m_characterDataLength); + } else { + m_dataType = StringData; + m_stringData = new QString(data); + } + } }; struct QmlEventNoteData { + QmlEventNoteData(int typeIndex = -1, qint64 startTime = -1, qint64 duration = -1, + const QString &text = QString()) : + typeIndex(typeIndex), startTime(startTime), duration(duration), text(text) + {} + int typeIndex; qint64 startTime; qint64 duration; diff --git a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp index 15c722a5b7..e4fb002af8 100644 --- a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp @@ -143,9 +143,9 @@ void QmlProfilerDetailsRewriter::requestDetailsForLocation(int requestId, if (!d->m_pendingDocs.contains(localFile)) { if (d->m_pendingDocs.isEmpty()) connect(QmlJS::ModelManagerInterface::instance(), - SIGNAL(documentUpdated(QmlJS::Document::Ptr)), + &QmlJS::ModelManagerInterface::documentUpdated, this, - SLOT(documentReady(QmlJS::Document::Ptr))); + &QmlProfilerDetailsRewriter::documentReady); d->m_pendingDocs << localFile; } @@ -207,9 +207,9 @@ void QmlProfilerDetailsRewriter::documentReady(QmlJS::Document::Ptr doc) if (d->m_pendingDocs.isEmpty()) { disconnect(QmlJS::ModelManagerInterface::instance(), - SIGNAL(documentUpdated(QmlJS::Document::Ptr)), + &QmlJS::ModelManagerInterface::documentUpdated, this, - SLOT(documentReady(QmlJS::Document::Ptr))); + &QmlProfilerDetailsRewriter::documentReady); emit eventDetailsChanged(); d->m_filesCache.clear(); } diff --git a/src/plugins/qmlprofiler/qmlprofilereventsmodelproxy.cpp b/src/plugins/qmlprofiler/qmlprofilereventsmodelproxy.cpp index ba347f23f0..a527551969 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventsmodelproxy.cpp +++ b/src/plugins/qmlprofiler/qmlprofilereventsmodelproxy.cpp @@ -69,9 +69,10 @@ QmlProfilerEventsModelProxy::QmlProfilerEventsModelProxy(QmlProfilerModelManager : QObject(parent), d(new QmlProfilerEventsModelProxyPrivate(this)) { d->modelManager = modelManager; - connect(modelManager->qmlModel(), SIGNAL(changed()), this, SLOT(dataChanged())); - connect(modelManager->notesModel(), SIGNAL(changed(int,int,int)), - this, SLOT(notesChanged(int))); + connect(modelManager->qmlModel(), &QmlProfilerDataModel::changed, + this, &QmlProfilerEventsModelProxy::dataChanged); + connect(modelManager->notesModel(), &Timeline::TimelineNotesModel::changed, + this, &QmlProfilerEventsModelProxy::notesChanged); d->modelId = modelManager->registerModelProxy(); // We're iterating twice in loadData. @@ -195,34 +196,34 @@ void QmlProfilerEventsModelProxy::loadData(qint64 rangeStart, qint64 rangeEnd) for (int i = 0; i < eventList.size(); ++i) { const QmlProfilerDataModel::QmlEventData *event = &eventList[i]; - const QmlProfilerDataModel::QmlEventTypeData *type = &typesList[event->typeIndex]; + const QmlProfilerDataModel::QmlEventTypeData *type = &typesList[event->typeIndex()]; if (!d->acceptedTypes.contains(type->rangeType)) continue; if (checkRanges) { - if ((event->startTime + event->duration < rangeStart) - || (event->startTime > rangeEnd)) + if ((event->startTime() + event->duration() < rangeStart) + || (event->startTime() > rangeEnd)) continue; } // update stats - QmlEventStats *stats = &d->data[event->typeIndex]; + QmlEventStats *stats = &d->data[event->typeIndex()]; - stats->duration += event->duration; - if (event->duration < stats->minTime) - stats->minTime = event->duration; - if (event->duration > stats->maxTime) - stats->maxTime = event->duration; + stats->duration += event->duration(); + if (event->duration() < stats->minTime) + stats->minTime = event->duration(); + if (event->duration() > stats->maxTime) + stats->maxTime = event->duration(); stats->calls++; // for median computing - durations[event->typeIndex].append(event->duration); + durations[event->typeIndex()].append(event->duration()); // qml time computation - if (event->startTime > lastEndTime) { // assume parent event if starts before last end - qmlTime += event->duration; - lastEndTime = event->startTime + event->duration; + if (event->startTime() > lastEndTime) { // assume parent event if starts before last end + qmlTime += event->duration(); + lastEndTime = event->startTime() + event->duration(); } @@ -230,16 +231,16 @@ void QmlProfilerEventsModelProxy::loadData(qint64 rangeStart, qint64 rangeEnd) // binding loop detection // const QmlProfilerDataModel::QmlEventData *potentialParent = callStack.top(); - while (potentialParent - && !(potentialParent->startTime + potentialParent->duration > event->startTime)) { + while (potentialParent && !(potentialParent->startTime() + potentialParent->duration() > + event->startTime())) { callStack.pop(); potentialParent = callStack.top(); } // check whether event is already in stack for (int ii = 1; ii < callStack.size(); ++ii) { - if (callStack.at(ii)->typeIndex == event->typeIndex) { - d->eventsInBindingLoop.insert(event->typeIndex); + if (callStack.at(ii)->typeIndex() == event->typeIndex()) { + d->eventsInBindingLoop.insert(event->typeIndex()); break; } } @@ -303,7 +304,8 @@ QmlProfilerEventRelativesModelProxy::QmlProfilerEventRelativesModelProxy(QmlProf // Load the child models whenever the parent model is done to get the filtering for JS/QML // right. - connect(m_eventsModel, SIGNAL(dataAvailable()), this, SLOT(dataChanged())); + connect(m_eventsModel, &QmlProfilerEventsModelProxy::dataAvailable, + this, &QmlProfilerEventRelativesModelProxy::dataChanged); } QmlProfilerEventRelativesModelProxy::~QmlProfilerEventRelativesModelProxy() @@ -372,30 +374,31 @@ void QmlProfilerEventParentsModelProxy::loadData() const QVector<QmlProfilerDataModel::QmlEventTypeData> typesList = simpleModel->getEventTypes(); foreach (const QmlProfilerDataModel::QmlEventData &event, eventList) { // whitelist - if (!m_eventsModel->eventTypeAccepted(typesList[event.typeIndex].rangeType)) + if (!m_eventsModel->eventTypeAccepted(typesList[event.typeIndex()].rangeType)) continue; // level computation - if (endtimesPerLevel[level] > event.startTime) { + if (endtimesPerLevel[level] > event.startTime()) { level++; } else { - while (level > QmlDebug::Constants::QML_MIN_LEVEL && endtimesPerLevel[level-1] <= event.startTime) + while (level > QmlDebug::Constants::QML_MIN_LEVEL && + endtimesPerLevel[level-1] <= event.startTime()) level--; } - endtimesPerLevel[level] = event.startTime + event.duration; + endtimesPerLevel[level] = event.startTime() + event.duration(); int parentTypeIndex = -1; if (level > QmlDebug::Constants::QML_MIN_LEVEL && lastParent.contains(level-1)) parentTypeIndex = lastParent[level-1]; - QmlEventRelativesMap &relativesMap = m_data[event.typeIndex]; + QmlEventRelativesMap &relativesMap = m_data[event.typeIndex()]; QmlEventRelativesMap::Iterator it = relativesMap.find(parentTypeIndex); if (it != relativesMap.end()) { it.value().calls++; - it.value().duration += event.duration; + it.value().duration += event.duration(); } else { QmlEventRelativesData parent = { - event.duration, + event.duration(), 1, eventsInBindingLoop.contains(parentTypeIndex) }; @@ -403,7 +406,7 @@ void QmlProfilerEventParentsModelProxy::loadData() } // now lastparent is the new type - lastParent[level] = event.typeIndex; + lastParent[level] = event.typeIndex(); } } @@ -436,17 +439,18 @@ void QmlProfilerEventChildrenModelProxy::loadData() const QVector<QmlProfilerDataModel::QmlEventTypeData> &typesList = simpleModel->getEventTypes(); foreach (const QmlProfilerDataModel::QmlEventData &event, eventList) { // whitelist - if (!m_eventsModel->eventTypeAccepted(typesList[event.typeIndex].rangeType)) + if (!m_eventsModel->eventTypeAccepted(typesList[event.typeIndex()].rangeType)) continue; // level computation - if (endtimesPerLevel[level] > event.startTime) { + if (endtimesPerLevel[level] > event.startTime()) { level++; } else { - while (level > QmlDebug::Constants::QML_MIN_LEVEL && endtimesPerLevel[level-1] <= event.startTime) + while (level > QmlDebug::Constants::QML_MIN_LEVEL && + endtimesPerLevel[level-1] <= event.startTime()) level--; } - endtimesPerLevel[level] = event.startTime + event.duration; + endtimesPerLevel[level] = event.startTime() + event.duration(); int parentId = -1; @@ -454,21 +458,21 @@ void QmlProfilerEventChildrenModelProxy::loadData() parentId = lastParent[level-1]; QmlEventRelativesMap &relativesMap = m_data[parentId]; - QmlEventRelativesMap::Iterator it = relativesMap.find(event.typeIndex); + QmlEventRelativesMap::Iterator it = relativesMap.find(event.typeIndex()); if (it != relativesMap.end()) { it.value().calls++; - it.value().duration += event.duration; + it.value().duration += event.duration(); } else { QmlEventRelativesData child = { - event.duration, + event.duration(), 1, eventsInBindingLoop.contains(parentId) }; - relativesMap.insert(event.typeIndex, child); + relativesMap.insert(event.typeIndex(), child); } // now lastparent is the new type - lastParent[level] = event.typeIndex; + lastParent[level] = event.typeIndex(); } } diff --git a/src/plugins/qmlprofiler/qmlprofilereventview.cpp b/src/plugins/qmlprofiler/qmlprofilereventview.cpp index ee076ddc0c..7cc3d20586 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilereventview.cpp @@ -51,6 +51,7 @@ #include <QMenu> #include <utils/qtcassert.h> +#include <functional> using namespace QmlDebug; @@ -179,6 +180,16 @@ static QString displayHeader(Fields header) } } +static void getSourceLocation(QStandardItem *infoItem, + std::function<void (const QString &, int, int)> receiver) +{ + int line = infoItem->data(LineRole).toInt(); + int column = infoItem->data(ColumnRole).toInt(); + QString fileName = infoItem->data(FilenameRole).toString(); + if (line != -1 && !fileName.isEmpty()) + receiver(fileName, line, column); +} + QmlProfilerEventsWidget::QmlProfilerEventsWidget(QWidget *parent, QmlProfilerTool *profilerTool, QmlProfilerViewManager *container, @@ -191,8 +202,10 @@ QmlProfilerEventsWidget::QmlProfilerEventsWidget(QWidget *parent, d->modelProxy = new QmlProfilerEventsModelProxy(profilerModelManager, this); d->m_eventTree = new QmlProfilerEventsMainView(this, d->modelProxy); - connect(d->m_eventTree, SIGNAL(gotoSourceLocation(QString,int,int)), this, SIGNAL(gotoSourceLocation(QString,int,int))); - connect(d->m_eventTree, SIGNAL(typeSelected(int)), this, SIGNAL(typeSelected(int))); + connect(d->m_eventTree, &QmlProfilerEventsMainView::gotoSourceLocation, + this, &QmlProfilerEventsWidget::gotoSourceLocation); + connect(d->m_eventTree, &QmlProfilerEventsMainView::typeSelected, + this, &QmlProfilerEventsWidget::typeSelected); d->m_eventChildren = new QmlProfilerEventRelativesView( new QmlProfilerEventChildrenModelProxy(profilerModelManager, d->modelProxy, this), @@ -200,10 +213,18 @@ QmlProfilerEventsWidget::QmlProfilerEventsWidget(QWidget *parent, d->m_eventParents = new QmlProfilerEventRelativesView( new QmlProfilerEventParentsModelProxy(profilerModelManager, d->modelProxy, this), this); - connect(d->m_eventTree, SIGNAL(typeSelected(int)), d->m_eventChildren, SLOT(displayType(int))); - connect(d->m_eventTree, SIGNAL(typeSelected(int)), d->m_eventParents, SLOT(displayType(int))); - connect(d->m_eventChildren, SIGNAL(typeClicked(int)), d->m_eventTree, SLOT(selectType(int))); - connect(d->m_eventParents, SIGNAL(typeClicked(int)), d->m_eventTree, SLOT(selectType(int))); + connect(d->m_eventTree, &QmlProfilerEventsMainView::typeSelected, + d->m_eventChildren, &QmlProfilerEventRelativesView::displayType); + connect(d->m_eventTree, &QmlProfilerEventsMainView::typeSelected, + d->m_eventParents, &QmlProfilerEventRelativesView::displayType); + connect(d->m_eventChildren, &QmlProfilerEventRelativesView::typeClicked, + d->m_eventTree, &QmlProfilerEventsMainView::selectType); + connect(d->m_eventParents, &QmlProfilerEventRelativesView::typeClicked, + d->m_eventTree, &QmlProfilerEventsMainView::selectType); + connect(d->m_eventChildren, &QmlProfilerEventRelativesView::gotoSourceLocation, + this, &QmlProfilerEventsWidget::gotoSourceLocation); + connect(d->m_eventParents, &QmlProfilerEventRelativesView::gotoSourceLocation, + this, &QmlProfilerEventsWidget::gotoSourceLocation); // widget arrangement QVBoxLayout *groupLayout = new QVBoxLayout; @@ -339,11 +360,6 @@ void QmlProfilerEventsWidget::selectByTypeId(int typeIndex) const d->m_eventTree->selectType(typeIndex); } -void QmlProfilerEventsWidget::selectBySourceLocation(const QString &filename, int line, int column) -{ - d->m_eventTree->selectByLocation(filename, line, column); -} - void QmlProfilerEventsWidget::onVisibleFeaturesChanged(quint64 features) { for (int i = 0; i < MaximumRangeType; ++i) { @@ -388,7 +404,6 @@ public: QHash<int, int> m_columnIndex; // maps field enum to column index bool m_showExtendedStatistics; int m_firstNumericColumn; - bool m_preventSelectBounce; }; QmlProfilerEventsMainView::QmlProfilerEventsMainView(QWidget *parent, @@ -403,13 +418,14 @@ QmlProfilerEventsMainView::QmlProfilerEventsMainView(QWidget *parent, d->m_model = new QStandardItemModel(this); d->m_model->setSortRole(SortRole); setModel(d->m_model); - connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(jumpToItem(QModelIndex))); + connect(this, &QAbstractItemView::activated, this, &QmlProfilerEventsMainView::jumpToItem); d->modelProxy = modelProxy; - connect(d->modelProxy,SIGNAL(dataAvailable()), this, SLOT(buildModel())); - connect(d->modelProxy,SIGNAL(notesAvailable(int)), this, SLOT(updateNotes(int))); + connect(d->modelProxy, &QmlProfilerEventsModelProxy::dataAvailable, + this, &QmlProfilerEventsMainView::buildModel); + connect(d->modelProxy, &QmlProfilerEventsModelProxy::notesAvailable, + this, &QmlProfilerEventsMainView::updateNotes); d->m_firstNumericColumn = 0; - d->m_preventSelectBounce = false; d->m_showExtendedStatistics = false; setFieldViewable(Name, true); @@ -697,6 +713,16 @@ void QmlProfilerEventsMainView::parseModelProxy() } } +QStandardItem *QmlProfilerEventsMainView::itemFromIndex(const QModelIndex &index) const +{ + QStandardItem *indexItem = d->m_model->itemFromIndex(index); + if (indexItem->parent()) + return indexItem->parent()->child(indexItem->row(), 0); + else + return d->m_model->item(index.row(), 0); + +} + QString QmlProfilerEventsMainView::nameForType(RangeType typeNumber) { switch (typeNumber) { @@ -724,31 +750,17 @@ int QmlProfilerEventsMainView::selectedTypeId() const return item->data(TypeIdRole).toInt(); } - void QmlProfilerEventsMainView::jumpToItem(const QModelIndex &index) { - if (d->m_preventSelectBounce) - return; - - d->m_preventSelectBounce = true; - QStandardItem *clickedItem = d->m_model->itemFromIndex(index); - QStandardItem *infoItem; - if (clickedItem->parent()) - infoItem = clickedItem->parent()->child(clickedItem->row(), 0); - else - infoItem = d->m_model->item(index.row(), 0); + QStandardItem *infoItem = itemFromIndex(index); // show in editor - int line = infoItem->data(LineRole).toInt(); - int column = infoItem->data(ColumnRole).toInt(); - QString fileName = infoItem->data(FilenameRole).toString(); - if (line!=-1 && !fileName.isEmpty()) + getSourceLocation(infoItem, [this](const QString &fileName, int line, int column) { emit gotoSourceLocation(fileName, line, column); + }); // show in callers/callees subwindow emit typeSelected(infoItem->data(TypeIdRole).toInt()); - - d->m_preventSelectBounce = false; } void QmlProfilerEventsMainView::selectItem(const QStandardItem *item) @@ -757,7 +769,9 @@ void QmlProfilerEventsMainView::selectItem(const QStandardItem *item) QModelIndex index = d->m_model->indexFromItem(item); if (index != currentIndex()) { setCurrentIndex(index); - jumpToItem(index); + + // show in callers/callees subwindow + emit typeSelected(itemFromIndex(index)->data(TypeIdRole).toInt()); } } @@ -772,23 +786,6 @@ void QmlProfilerEventsMainView::selectType(int typeIndex) } } -void QmlProfilerEventsMainView::selectByLocation(const QString &filename, int line, int column) -{ - if (d->m_preventSelectBounce) - return; - - for (int i=0; i<d->m_model->rowCount(); i++) { - QStandardItem *infoItem = d->m_model->item(i, 0); - if (infoItem->data(FilenameRole).toString() == filename && - infoItem->data(LineRole).toInt() == line && - (column == -1 || - infoItem->data(ColumnRole).toInt() == column)) { - selectItem(infoItem); - return; - } - } -} - QModelIndex QmlProfilerEventsMainView::selectedModelIndex() const { QModelIndexList sel = selectedIndexes(); @@ -884,10 +881,11 @@ QmlProfilerEventRelativesView::QmlProfilerEventRelativesView( setRootIsDecorated(false); updateHeader(); - connect(this,SIGNAL(activated(QModelIndex)), this,SLOT(jumpToItem(QModelIndex))); + connect(this, &QAbstractItemView::activated, this, &QmlProfilerEventRelativesView::jumpToItem); // Clear when new data available as the selection may be invalid now. - connect(d->modelProxy, SIGNAL(dataAvailable()), this, SLOT(clear())); + connect(d->modelProxy, &QmlProfilerEventRelativesModelProxy::dataAvailable, + this, &QmlProfilerEventRelativesView::clear); } QmlProfilerEventRelativesView::~QmlProfilerEventRelativesView() @@ -1000,6 +998,11 @@ void QmlProfilerEventRelativesView::jumpToItem(const QModelIndex &index) { if (treeModel()) { QStandardItem *infoItem = treeModel()->item(index.row(), 0); + // show in editor + getSourceLocation(infoItem, [this](const QString &fileName, int line, int column) { + emit gotoSourceLocation(fileName, line, column); + }); + emit typeClicked(infoItem->data(TypeIdRole).toInt()); } } diff --git a/src/plugins/qmlprofiler/qmlprofilereventview.h b/src/plugins/qmlprofiler/qmlprofilereventview.h index 91ad6b57c5..b32079a694 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventview.h +++ b/src/plugins/qmlprofiler/qmlprofilereventview.h @@ -106,7 +106,6 @@ signals: public slots: void selectByTypeId(int typeIndex) const; - void selectBySourceLocation(const QString &filename, int line, int column); void onVisibleFeaturesChanged(quint64 features); protected: @@ -150,7 +149,6 @@ public slots: void clear(); void jumpToItem(const QModelIndex &index); void selectType(int typeIndex); - void selectByLocation(const QString &filename, int line, int column); void buildModel(); void updateNotes(int typeIndex); @@ -158,6 +156,7 @@ private: void selectItem(const QStandardItem *item); void setHeaderLabels(); void parseModelProxy(); + QStandardItem *itemFromIndex(const QModelIndex &index) const; private: class QmlProfilerEventsMainViewPrivate; @@ -175,6 +174,7 @@ public: signals: void typeClicked(int typeIndex); + void gotoSourceLocation(const QString &fileName, int lineNumber, int columnNumber); public slots: void displayType(int typeIndex); diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp index d064f16b5b..96b70100d7 100644 --- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp @@ -45,7 +45,7 @@ namespace QmlProfiler { namespace Internal { -static const char *ProfileFeatureNames[QmlDebug::MaximumProfileFeature] = { +static const char *ProfileFeatureNames[] = { QT_TRANSLATE_NOOP("MainView", "JavaScript"), QT_TRANSLATE_NOOP("MainView", "Memory Usage"), QT_TRANSLATE_NOOP("MainView", "Pixmap Cache"), @@ -56,9 +56,12 @@ static const char *ProfileFeatureNames[QmlDebug::MaximumProfileFeature] = { QT_TRANSLATE_NOOP("MainView", "Creating"), QT_TRANSLATE_NOOP("MainView", "Binding"), QT_TRANSLATE_NOOP("MainView", "Handling Signal"), - QT_TRANSLATE_NOOP("MainView", "Input Events") + QT_TRANSLATE_NOOP("MainView", "Input Events"), + QT_TRANSLATE_NOOP("MainView", "Debug Messages") }; +Q_STATIC_ASSERT(sizeof(ProfileFeatureNames) == sizeof(char *) * QmlDebug::MaximumProfileFeature); + ///////////////////////////////////////////////////////////////////// QmlProfilerTraceTime::QmlProfilerTraceTime(QObject *parent) : QObject(parent), m_startTime(-1), m_endTime(-1) @@ -303,6 +306,14 @@ void QmlProfilerModelManager::addQmlEvent(QmlDebug::Message message, ndata1, ndata2, ndata3, ndata4, ndata5); } +void QmlProfilerModelManager::addDebugMessage(QtMsgType type, qint64 timestamp, const QString &text, + const QmlDebug::QmlEventLocation &location) +{ + if (state() == AcquiringData) + d->model->addQmlEvent(QmlDebug::DebugMessage, QmlDebug::MaximumRangeType, type, timestamp, + 0, text, location, 0, 0, 0, 0, 0); +} + void QmlProfilerModelManager::acquiringDone() { QTC_ASSERT(state() == AcquiringData, /**/); diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.h b/src/plugins/qmlprofiler/qmlprofilermodelmanager.h index 19ab0e5f39..11e7763f27 100644 --- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.h +++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.h @@ -135,6 +135,8 @@ public slots: qint64 startTime, qint64 length, const QString &data, const QmlDebug::QmlEventLocation &location, qint64 ndata1, qint64 ndata2, qint64 ndata3, qint64 ndata4, qint64 ndata5); + void addDebugMessage(QtMsgType type, qint64 timestamp, const QString &text, + const QmlDebug::QmlEventLocation &location); void save(const QString &filename); void load(const QString &filename); diff --git a/src/plugins/qmlprofiler/qmlprofilerrangemodel.cpp b/src/plugins/qmlprofiler/qmlprofilerrangemodel.cpp index 700cdb7f05..580770b30b 100644 --- a/src/plugins/qmlprofiler/qmlprofilerrangemodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerrangemodel.cpp @@ -80,36 +80,36 @@ void QmlProfilerRangeModel::loadData() const QVector<QmlProfilerDataModel::QmlEventData> &eventList = simpleModel->getEvents(); const QVector<QmlProfilerDataModel::QmlEventTypeData> &typesList = simpleModel->getEventTypes(); foreach (const QmlProfilerDataModel::QmlEventData &event, eventList) { - const QmlProfilerDataModel::QmlEventTypeData &type = typesList[event.typeIndex]; + const QmlProfilerDataModel::QmlEventTypeData &type = typesList[event.typeIndex()]; if (!accepted(type)) continue; // store starttime-based instance - m_data.insert(insert(event.startTime, event.duration, event.typeIndex), + m_data.insert(insert(event.startTime(), event.duration(), event.typeIndex()), QmlRangeEventStartInstance()); - updateProgress(count(), eventList.count() * 6); + updateProgress(count(), eventList.count() * 5); } - updateProgress(2, 6); + updateProgress(1, 5); // compute range nesting computeNesting(); + updateProgress(2, 5); + // compute nestingLevel - nonexpanded computeNestingContracted(); - updateProgress(3, 6); + updateProgress(3, 5); // compute nestingLevel - expanded computeExpandedLevels(); - updateProgress(4, 6); + updateProgress(4, 5); if (supportsBindingLoops()) findBindingLoops(); - updateProgress(5, 6); - updateProgress(1, 1); } @@ -242,17 +242,7 @@ QVariantMap QmlProfilerRangeModel::details(int index) const QVariantMap QmlProfilerRangeModel::location(int index) const { - QVariantMap result; - int id = selectionId(index); - - const QmlDebug::QmlEventLocation &location - = modelManager()->qmlModel()->getEventTypes().at(id).location; - - result.insert(QStringLiteral("file"), location.filename); - result.insert(QStringLiteral("line"), location.line); - result.insert(QStringLiteral("column"), location.column); - - return result; + return locationFromTypeId(index); } int QmlProfilerRangeModel::typeId(int index) const diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp index 9a81a408c8..5b17751847 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.cpp @@ -88,15 +88,18 @@ QmlProfilerRunControl::QmlProfilerRunControl(const AnalyzerStartParameters &sp, // (application output might be redirected / blocked) d->m_noDebugOutputTimer.setSingleShot(true); d->m_noDebugOutputTimer.setInterval(4000); - connect(&d->m_noDebugOutputTimer, SIGNAL(timeout()), this, SLOT(processIsRunning())); + connect(&d->m_noDebugOutputTimer, &QTimer::timeout, + this, [this](){processIsRunning(0);}); d->m_outputParser.setNoOutputText(ApplicationLauncher::msgWinCannotRetrieveDebuggingOutput()); - connect(&d->m_outputParser, SIGNAL(waitingForConnectionOnPort(quint16)), - this, SLOT(processIsRunning(quint16))); - connect(&d->m_outputParser, SIGNAL(noOutputMessage()), - this, SLOT(processIsRunning())); - connect(&d->m_outputParser, SIGNAL(errorMessage(QString)), - this, SLOT(wrongSetupMessageBox(QString))); + connect(&d->m_outputParser, &QmlDebug::QmlOutputParser::waitingForConnectionOnPort, + this, &QmlProfilerRunControl::processIsRunning); + connect(&d->m_outputParser, &QmlDebug::QmlOutputParser::noOutputMessage, + this, [this](){processIsRunning(0);}); + connect(&d->m_outputParser, &QmlDebug::QmlOutputParser::connectingToSocketMessage, + this, [this](){processIsRunning(0);}); + connect(&d->m_outputParser, &QmlDebug::QmlOutputParser::errorMessage, + this, &QmlProfilerRunControl::wrongSetupMessageBox); } QmlProfilerRunControl::~QmlProfilerRunControl() @@ -112,7 +115,7 @@ bool QmlProfilerRunControl::startEngine() if (startParameters().analyzerPort != 0) emit processRunning(startParameters().analyzerPort); - else + else if (startParameters().analyzerSocket.isEmpty()) d->m_noDebugOutputTimer.start(); d->m_profilerState->setCurrentState(QmlProfilerStateManager::AppRunning); @@ -203,13 +206,14 @@ void QmlProfilerRunControl::wrongSetupMessageBox(const QString &errorMessage) infoBox->setDefaultButton(QMessageBox::Ok); infoBox->setModal(true); - connect(infoBox, SIGNAL(finished(int)), - this, SLOT(wrongSetupMessageBoxFinished(int))); + connect(infoBox, &QDialog::finished, + this, &QmlProfilerRunControl::wrongSetupMessageBoxFinished); infoBox->show(); // KILL d->m_profilerState->setCurrentState(QmlProfilerStateManager::AppDying); + d->m_noDebugOutputTimer.stop(); AnalyzerManager::stopTool(); emit finished(); } @@ -242,13 +246,15 @@ void QmlProfilerRunControl::registerProfilerStateManager( QmlProfilerStateManage { // disconnect old if (d->m_profilerState) - disconnect(d->m_profilerState, SIGNAL(stateChanged()), this, SLOT(profilerStateChanged())); + disconnect(d->m_profilerState, &QmlProfilerStateManager::stateChanged, + this, &QmlProfilerRunControl::profilerStateChanged); d->m_profilerState = profilerState; // connect if (d->m_profilerState) - connect(d->m_profilerState, SIGNAL(stateChanged()), this, SLOT(profilerStateChanged())); + connect(d->m_profilerState, &QmlProfilerStateManager::stateChanged, + this, &QmlProfilerRunControl::profilerStateChanged); } void QmlProfilerRunControl::profilerStateChanged() @@ -263,7 +269,7 @@ void QmlProfilerRunControl::profilerStateChanged() } } -RunControl::StopResult QmlProfiler::QmlProfilerRunControl::stop() +RunControl::StopResult QmlProfilerRunControl::stop() { StopResult result = Analyzer::AnalyzerRunControl::stop(); if (d->m_profilerState->currentState() != QmlProfilerStateManager::Idle) diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrol.h b/src/plugins/qmlprofiler/qmlprofilerruncontrol.h index 14fcccef19..108483b695 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrol.h +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrol.h @@ -54,22 +54,18 @@ public: signals: void processRunning(quint16 port); - void timeUpdate(); public slots: bool startEngine(); void stopEngine(); - -private slots: - void notifyRemoteFinished(); - void cancelProcess(); + void notifyRemoteFinished(); void logApplicationMessage(const QString &msg, Utils::OutputFormat format); - void wrongSetupMessageBox(const QString &errorMessage); - void wrongSetupMessageBoxFinished(int); - void processIsRunning(quint16 port = 0); private slots: + void wrongSetupMessageBox(const QString &errorMessage); + void wrongSetupMessageBoxFinished(int); + void processIsRunning(quint16 port); void profilerStateChanged(); private: diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp index a0bf9a6199..de4d0205ca 100644 --- a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp @@ -44,6 +44,8 @@ #include <projectexplorer/project.h> #include <projectexplorer/session.h> #include <projectexplorer/target.h> +#include <qtsupport/baseqtversion.h> +#include <qtsupport/qtkitinformation.h> #include <utils/qtcassert.h> @@ -79,7 +81,19 @@ static AnalyzerStartParameters createQmlProfilerStartParameters(RunConfiguration sp.debuggee = rc->executable(); sp.debuggeeArgs = rc->commandLineArguments(); sp.displayName = rc->displayName(); - sp.analyzerPort = LocalQmlProfilerRunner::findFreePort(sp.analyzerHost); + + const QtSupport::BaseQtVersion *version = + QtSupport::QtKitInformation::qtVersion(runConfiguration->target()->kit()); + if (version) { + QtSupport::QtVersionNumber versionNumber = version->qtVersion(); + if (versionNumber.majorVersion >= 5 && versionNumber.minorVersion >= 6) + sp.analyzerSocket = LocalQmlProfilerRunner::findFreeSocket(); + else + sp.analyzerPort = LocalQmlProfilerRunner::findFreePort(sp.analyzerHost); + } else { + qWarning() << "Running QML profiler on Kit without Qt version??"; + sp.analyzerPort = LocalQmlProfilerRunner::findFreePort(sp.analyzerHost); + } return sp; } diff --git a/src/plugins/qmlprofiler/qmlprofilersettings.cpp b/src/plugins/qmlprofiler/qmlprofilersettings.cpp index d1cb5ac122..be5493a85f 100644 --- a/src/plugins/qmlprofiler/qmlprofilersettings.cpp +++ b/src/plugins/qmlprofiler/qmlprofilersettings.cpp @@ -45,6 +45,7 @@ QmlProfilerSettings::QmlProfilerSettings() defaults.insert(QLatin1String(Constants::FLUSH_INTERVAL), 1000); defaults.insert(QLatin1String(Constants::FLUSH_ENABLED), false); defaults.insert(QLatin1String(Constants::LAST_TRACE_FILE), QString()); + defaults.insert(QLatin1String(Constants::AGGREGATE_TRACES), false); // Read stored values QSettings *settings = Core::ICore::settings(); @@ -106,6 +107,19 @@ void QmlProfilerSettings::setLastTraceFile(const QString &lastTracePath) } } +bool QmlProfilerSettings::aggregateTraces() const +{ + return m_aggregateTraces; +} + +void QmlProfilerSettings::setAggregateTraces(bool aggregateTraces) +{ + if (m_aggregateTraces != aggregateTraces) { + m_aggregateTraces = aggregateTraces; + emit changed(); + } +} + void QmlProfilerSettings::writeGlobalSettings() const { QSettings *settings = Core::ICore::settings(); @@ -122,6 +136,7 @@ void QmlProfilerSettings::toMap(QVariantMap &map) const map[QLatin1String(Constants::FLUSH_INTERVAL)] = m_flushInterval; map[QLatin1String(Constants::FLUSH_ENABLED)] = m_flushEnabled; map[QLatin1String(Constants::LAST_TRACE_FILE)] = m_lastTraceFile; + map[QLatin1String(Constants::AGGREGATE_TRACES)] = m_aggregateTraces; } void QmlProfilerSettings::fromMap(const QVariantMap &map) @@ -129,6 +144,7 @@ void QmlProfilerSettings::fromMap(const QVariantMap &map) m_flushEnabled = map.value(QLatin1String(Constants::FLUSH_ENABLED)).toBool(); m_flushInterval = map.value(QLatin1String(Constants::FLUSH_INTERVAL)).toUInt(); m_lastTraceFile = map.value(QLatin1String(Constants::LAST_TRACE_FILE)).toString(); + m_aggregateTraces = map.value(QLatin1String(Constants::AGGREGATE_TRACES)).toBool(); emit changed(); } diff --git a/src/plugins/qmlprofiler/qmlprofilersettings.h b/src/plugins/qmlprofiler/qmlprofilersettings.h index 91d94e89c8..31370e9cd2 100644 --- a/src/plugins/qmlprofiler/qmlprofilersettings.h +++ b/src/plugins/qmlprofiler/qmlprofilersettings.h @@ -53,6 +53,9 @@ public: QString lastTraceFile() const; void setLastTraceFile(const QString &lastTraceFile); + bool aggregateTraces() const; + void setAggregateTraces(bool aggregateTraces); + void writeGlobalSettings() const; signals: @@ -66,6 +69,7 @@ private: bool m_flushEnabled; quint32 m_flushInterval; QString m_lastTraceFile; + bool m_aggregateTraces; }; } // Internal diff --git a/src/plugins/qmlprofiler/qmlprofilerstatewidget.cpp b/src/plugins/qmlprofiler/qmlprofilerstatewidget.cpp index 5b1bd1c723..2d1e929a32 100644 --- a/src/plugins/qmlprofiler/qmlprofilerstatewidget.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerstatewidget.cpp @@ -30,6 +30,8 @@ #include "qmlprofilerstatewidget.h" +#include <utils/qtcassert.h> + #include <QPainter> #include <QVBoxLayout> #include <QLabel> @@ -202,11 +204,23 @@ void QmlProfilerStateWidget::updateDisplay() return; } } else if (d->m_modelManager->progress() != 0 && !d->m_modelManager->isEmpty()) { - // When datamodel is acquiring data - if (d->m_profilerState->currentState() != QmlProfilerStateManager::Idle) - showText(tr("Loading data"), true); - else // Application died before all data could be read - showText(tr("Application stopped before loading all data"), true); + // When datamodel is acquiring or processing data + if (state == QmlProfilerModelManager::ProcessingData) { + showText(tr("Processing data"), true); + } else if (d->m_profilerState->currentState() != QmlProfilerStateManager::Idle) { + if (state == QmlProfilerModelManager::AcquiringData) { + // we don't know how much more, so progress numbers are strange here + showText(tr("Waiting for more data")); + } else if (state == QmlProfilerModelManager::ClearingData) { + // when starting a second recording from the same process without aggregation + showText(tr("Clearing old trace")); + } + } else if (state == QmlProfilerModelManager::AcquiringData) { + // Application died before all data could be read + showText(tr("Application stopped before loading all data")); + } else if (state == QmlProfilerModelManager::ClearingData) { + showText(tr("Clearing old trace")); + } return; } else if (state == QmlProfilerModelManager::AcquiringData) { showText(tr("Waiting for data")); diff --git a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp index 335828de7d..78b90f78cb 100644 --- a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp @@ -127,4 +127,24 @@ int QmlProfilerTimelineModel::bindingLoopDest(int index) const return -1; } +QVariantMap QmlProfilerTimelineModel::locationFromTypeId(int index) const +{ + QVariantMap result; + int id = typeId(index); + if (id < 0) + return result; + + auto types = modelManager()->qmlModel()->getEventTypes(); + if (id >= types.length()) + return result; + + const QmlDebug::QmlEventLocation &location = types.at(id).location; + + result.insert(QStringLiteral("file"), location.filename); + result.insert(QStringLiteral("line"), location.line); + result.insert(QStringLiteral("column"), location.column); + + return result; +} + } diff --git a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.h b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.h index 7c85d9878d..1ace1f1387 100644 --- a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.h +++ b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.h @@ -58,6 +58,7 @@ public: virtual bool accepted(const QmlProfilerDataModel::QmlEventTypeData &event) const; bool handlesTypeId(int typeId) const; Q_INVOKABLE virtual int bindingLoopDest(int index) const; + QVariantMap locationFromTypeId(int index) const; virtual void loadData() = 0; void clear(); diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 915d3fd84c..c94337526c 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -48,6 +48,7 @@ #include <utils/fancymainwindow.h> #include <utils/fileinprojectfinder.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <projectexplorer/environmentaspect.h> #include <projectexplorer/projectexplorer.h> #include <projectexplorer/project.h> @@ -141,19 +142,25 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent) d->m_displayFeaturesMenu = 0; d->m_profilerState = new QmlProfilerStateManager(this); - connect(d->m_profilerState, SIGNAL(stateChanged()), this, SLOT(profilerStateChanged())); - connect(d->m_profilerState, SIGNAL(clientRecordingChanged()), this, SLOT(clientRecordingChanged())); - connect(d->m_profilerState, SIGNAL(serverRecordingChanged()), this, SLOT(serverRecordingChanged())); + connect(d->m_profilerState, &QmlProfilerStateManager::stateChanged, + this, &QmlProfilerTool::profilerStateChanged); + connect(d->m_profilerState, &QmlProfilerStateManager::clientRecordingChanged, + this, &QmlProfilerTool::clientRecordingChanged); + connect(d->m_profilerState, &QmlProfilerStateManager::serverRecordingChanged, + this, &QmlProfilerTool::serverRecordingChanged); connect(d->m_profilerState, &QmlProfilerStateManager::recordedFeaturesChanged, this, &QmlProfilerTool::setRecordedFeatures); d->m_profilerConnections = new QmlProfilerClientManager(this); d->m_profilerConnections->registerProfilerStateManager(d->m_profilerState); - connect(d->m_profilerConnections, SIGNAL(connectionClosed()), this, SLOT(clientsDisconnected())); + connect(d->m_profilerConnections, &QmlProfilerClientManager::connectionClosed, + this, &QmlProfilerTool::clientsDisconnected); d->m_profilerModelManager = new QmlProfilerModelManager(&d->m_projectFinder, this); - connect(d->m_profilerModelManager, SIGNAL(stateChanged()), this, SLOT(profilerDataModelStateChanged())); - connect(d->m_profilerModelManager, SIGNAL(error(QString)), this, SLOT(showErrorDialog(QString))); + connect(d->m_profilerModelManager, &QmlProfilerModelManager::stateChanged, + this, &QmlProfilerTool::profilerDataModelStateChanged); + connect(d->m_profilerModelManager, &QmlProfilerModelManager::error, + this, &QmlProfilerTool::showErrorDialog); connect(d->m_profilerModelManager, &QmlProfilerModelManager::availableFeaturesChanged, this, &QmlProfilerTool::setAvailableFeatures); connect(d->m_profilerModelManager, &QmlProfilerModelManager::saveFinished, @@ -172,17 +179,17 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent) QAction *act = d->m_loadQmlTrace = new QAction(tr("Load QML Trace"), options); command = ActionManager::registerAction(act, "Analyzer.Menu.StartAnalyzer.QMLProfilerOptions.LoadQMLTrace"); - connect(act, SIGNAL(triggered()), this, SLOT(showLoadDialog())); + connect(act, &QAction::triggered, this, &QmlProfilerTool::showLoadDialog); options->addAction(command); act = d->m_saveQmlTrace = new QAction(tr("Save QML Trace"), options); d->m_saveQmlTrace->setEnabled(false); command = ActionManager::registerAction(act, "Analyzer.Menu.StartAnalyzer.QMLProfilerOptions.SaveQMLTrace"); - connect(act, SIGNAL(triggered()), this, SLOT(showSaveDialog())); + connect(act, &QAction::triggered, this, &QmlProfilerTool::showSaveDialog); options->addAction(command); d->m_recordingTimer.setInterval(100); - connect(&d->m_recordingTimer, SIGNAL(timeout()), this, SLOT(updateTimeDisplay())); + connect(&d->m_recordingTimer, &QTimer::timeout, this, &QmlProfilerTool::updateTimeDisplay); } QmlProfilerTool::~QmlProfilerTool() @@ -202,15 +209,16 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(const AnalyzerStartParamet d->m_profilerConnections->setFlushInterval(settings->flushEnabled() ? settings->flushInterval() : 0); + d->m_profilerConnections->setAggregateTraces(settings->aggregateTraces()); QmlProfilerRunControl *engine = new QmlProfilerRunControl(sp, runConfiguration); engine->registerProfilerStateManager(d->m_profilerState); - bool isTcpConnection = true; - // FIXME: Check that there's something sensible in sp.connParams - if (isTcpConnection) + if (!sp.analyzerSocket.isEmpty()) + d->m_profilerConnections->setLocalSocket(sp.analyzerSocket); + else d->m_profilerConnections->setTcpConnection(sp.analyzerHost, sp.analyzerPort); // @@ -225,8 +233,11 @@ AnalyzerRunControl *QmlProfilerTool::createRunControl(const AnalyzerStartParamet populateFileFinder(projectDirectory, sp.sysroot); - connect(engine, SIGNAL(processRunning(quint16)), d->m_profilerConnections, SLOT(connectClient(quint16))); - connect(d->m_profilerConnections, SIGNAL(connectionFailed()), engine, SLOT(cancelProcess())); + if (sp.analyzerSocket.isEmpty()) + connect(engine, &QmlProfilerRunControl::processRunning, + d->m_profilerConnections, &QmlProfilerClientManager::connectTcpClient); + connect(d->m_profilerConnections, &QmlProfilerClientManager::connectionFailed, + engine, &QmlProfilerRunControl::cancelProcess); return engine; } @@ -249,8 +260,8 @@ QWidget *QmlProfilerTool::createWidgets() this, d->m_profilerModelManager, d->m_profilerState); - connect(d->m_viewContainer, SIGNAL(gotoSourceLocation(QString,int,int)), - this, SLOT(gotoSourceLocation(QString,int,int))); + connect(d->m_viewContainer, &QmlProfilerViewManager::gotoSourceLocation, + this, &QmlProfilerTool::gotoSourceLocation); // // Toolbar @@ -265,19 +276,20 @@ QWidget *QmlProfilerTool::createWidgets() d->m_recordButton = new QToolButton(toolbarWidget); d->m_recordButton->setCheckable(true); - connect(d->m_recordButton,SIGNAL(clicked(bool)), this, SLOT(recordingButtonChanged(bool))); + connect(d->m_recordButton,&QAbstractButton::clicked, + this, &QmlProfilerTool::recordingButtonChanged); d->m_recordButton->setChecked(true); d->m_recordFeaturesMenu = new QMenu(d->m_recordButton); d->m_recordButton->setMenu(d->m_recordFeaturesMenu); d->m_recordButton->setPopupMode(QToolButton::MenuButtonPopup); - connect(d->m_recordFeaturesMenu, SIGNAL(triggered(QAction*)), - this, SLOT(toggleRequestedFeature(QAction*))); + connect(d->m_recordFeaturesMenu, &QMenu::triggered, + this, &QmlProfilerTool::toggleRequestedFeature); setRecording(d->m_profilerState->clientRecording()); layout->addWidget(d->m_recordButton); d->m_clearButton = new QToolButton(toolbarWidget); - d->m_clearButton->setIcon(QIcon(QLatin1String(":/qmlprofiler/clean_pane_small.png"))); + d->m_clearButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(ICON_CLEAN_PANE))); d->m_clearButton->setToolTip(tr("Discard data")); connect(d->m_clearButton, &QAbstractButton::clicked, [this](){ @@ -288,14 +300,14 @@ QWidget *QmlProfilerTool::createWidgets() layout->addWidget(d->m_clearButton); d->m_searchButton = new QToolButton; - d->m_searchButton->setIcon(QIcon(QStringLiteral(":/timeline/ico_zoom.png"))); + d->m_searchButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(ICON_ZOOM))); d->m_searchButton->setToolTip(tr("Search timeline event notes.")); layout->addWidget(d->m_searchButton); connect(d->m_searchButton, &QToolButton::clicked, this, &QmlProfilerTool::showTimeLineSearch); d->m_displayFeaturesButton = new QToolButton; - d->m_displayFeaturesButton->setIcon(QIcon(QLatin1String(ICON_FILTER))); + d->m_displayFeaturesButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(ICON_FILTER))); d->m_displayFeaturesButton->setToolTip(tr("Hide or show event categories.")); d->m_displayFeaturesButton->setPopupMode(QToolButton::InstantPopup); d->m_displayFeaturesButton->setProperty("noArrow", true); @@ -362,7 +374,9 @@ void QmlProfilerTool::recordingButtonChanged(bool recording) if (recording && d->m_profilerState->currentState() == QmlProfilerStateManager::AppRunning) { if (checkForUnsavedNotes()) { - clearData(); // clear right away, before the application starts + if (!d->m_profilerConnections->aggregateTraces() || + d->m_profilerModelManager->state() == QmlProfilerModelManager::Done) + clearData(); // clear before the recording starts, unless we aggregate recordings if (d->m_profilerState->clientRecording()) d->m_profilerState->setClientRecording(false); d->m_profilerState->setClientRecording(true); @@ -641,9 +655,13 @@ void QmlProfilerTool::clientsDisconnected() if (d->m_profilerState->currentState() == QmlProfilerStateManager::AppDying || d->m_profilerState->currentState() == QmlProfilerStateManager::Idle) { if (d->m_profilerModelManager->state() == QmlProfilerModelManager::AcquiringData) { - showNonmodalWarning(tr("Application finished before loading profiled data.\n" - "Please use the stop button instead.")); - d->m_profilerModelManager->clear(); + if (d->m_profilerConnections->aggregateTraces()) { + d->m_profilerModelManager->acquiringDone(); + } else { + showNonmodalWarning(tr("Application finished before loading profiled data.\n" + "Please use the stop button instead.")); + d->m_profilerModelManager->clear(); + } } // ... and return to the "base" state @@ -767,7 +785,7 @@ void QmlProfilerTool::profilerStateChanged() case QmlProfilerStateManager::AppDying : { // If already disconnected when dying, check again that all data was read if (!d->m_profilerConnections->isConnected()) - QTimer::singleShot(0, this, SLOT(clientsDisconnected())); + QTimer::singleShot(0, this, &QmlProfilerTool::clientsDisconnected); break; } case QmlProfilerStateManager::Idle : @@ -811,13 +829,16 @@ void QmlProfilerTool::serverRecordingChanged() showSaveDialog(); setRecording(true); - clearData(); + if (!d->m_profilerConnections->aggregateTraces() || + d->m_profilerModelManager->state() == QmlProfilerModelManager::Done) + clearData(); d->m_profilerModelManager->prepareForWriting(); } else { setRecording(false); // changes back once loading is finished, see profilerDataModelStateChanged() - d->m_recordButton->setEnabled(false); + if (!d->m_profilerConnections->aggregateTraces()) + d->m_recordButton->setEnabled(false); } } } diff --git a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp index fc6888532b..141ba200ef 100644 --- a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp @@ -65,7 +65,8 @@ static const char *MESSAGE_STRINGS[] = { "Complete", "PixmapCache", "SceneGraph", - "MemoryAllocation" + "MemoryAllocation", + "DebugMessage" }; Q_STATIC_ASSERT(sizeof(MESSAGE_STRINGS) == QmlDebug::MaximumMessage * sizeof(const char *)); @@ -164,9 +165,9 @@ bool QmlProfilerFileReader::load(QIODevice *device) else validVersion = false; if (attributes.hasAttribute(_("traceStart"))) - traceStart = attributes.value(_("traceStart")).toString().toLongLong(); + traceStart = attributes.value(_("traceStart")).toLongLong(); if (attributes.hasAttribute(_("traceEnd"))) - traceEnd = attributes.value(_("traceEnd")).toString().toLongLong(); + traceEnd = attributes.value(_("traceEnd")).toLongLong(); } if (elementName == _("eventData")) { @@ -226,6 +227,8 @@ QmlDebug::ProfileFeature featureFromEvent(const QmlProfilerDataModel::QmlEventTy return ProfileSceneGraph; case MemoryAllocation: return ProfileMemory; + case DebugMessage: + return ProfileDebugMessages; default: return MaximumProfileFeature; } @@ -235,8 +238,6 @@ void QmlProfilerFileReader::loadEventData(QXmlStreamReader &stream) { QTC_ASSERT(stream.name() == _("eventData"), return); - QXmlStreamAttributes attributes = stream.attributes(); - int eventIndex = -1; QmlProfilerDataModel::QmlEventTypeData event = { QString(), // displayname @@ -263,7 +264,7 @@ void QmlProfilerFileReader::loadEventData(QXmlStreamReader &stream) const QXmlStreamAttributes attributes = stream.attributes(); if (attributes.hasAttribute(_("index"))) { - eventIndex = attributes.value(_("index")).toString().toInt(); + eventIndex = attributes.value(_("index")).toInt(); } else { // ignore event eventIndex = -1; @@ -327,7 +328,8 @@ void QmlProfilerFileReader::loadEventData(QXmlStreamReader &stream) elementName == _("sgEventType") || elementName == _("memoryEventType") || elementName == _("mouseEvent") || - elementName == _("keyEvent")) { + elementName == _("keyEvent") || + elementName == _("level")) { event.detailType = readData.toInt(); break; } @@ -373,7 +375,7 @@ void QmlProfilerFileReader::loadProfilerDataModel(QXmlStreamReader &stream) case QXmlStreamReader::StartElement: { if (elementName == _("range")) { progress(stream.device()); - QmlProfilerDataModel::QmlEventData range = { -1, 0, 0, 0, 0, 0, 0, 0 }; + QmlProfilerDataModel::QmlEventData range(0, 0, -1, 0, 0, 0, 0, 0); const QXmlStreamAttributes attributes = stream.attributes(); if (!attributes.hasAttribute(_("startTime")) @@ -382,37 +384,45 @@ void QmlProfilerFileReader::loadProfilerDataModel(QXmlStreamReader &stream) continue; } - range.startTime = attributes.value(_("startTime")).toString().toLongLong(); + range.setStartTime(attributes.value(_("startTime")).toLongLong()); if (attributes.hasAttribute(_("duration"))) - range.duration = attributes.value(_("duration")).toString().toLongLong(); + range.setDuration(attributes.value(_("duration")).toLongLong()); // attributes for special events if (attributes.hasAttribute(_("framerate"))) - range.numericData1 = attributes.value(_("framerate")).toString().toLongLong(); + range.setNumericData(0, attributes.value(_("framerate")).toLongLong()); if (attributes.hasAttribute(_("animationcount"))) - range.numericData2 = attributes.value(_("animationcount")).toString().toLongLong(); + range.setNumericData(1, attributes.value(_("animationcount")).toLongLong()); if (attributes.hasAttribute(_("thread"))) - range.numericData3 = attributes.value(_("thread")).toString().toLongLong(); + range.setNumericData(2, attributes.value(_("thread")).toLongLong()); if (attributes.hasAttribute(_("width"))) - range.numericData1 = attributes.value(_("width")).toString().toLongLong(); + range.setNumericData(0, attributes.value(_("width")).toLongLong()); if (attributes.hasAttribute(_("height"))) - range.numericData2 = attributes.value(_("height")).toString().toLongLong(); + range.setNumericData(1, attributes.value(_("height")).toLongLong()); if (attributes.hasAttribute(_("refCount"))) - range.numericData3 = attributes.value(_("refCount")).toString().toLongLong(); + range.setNumericData(2, attributes.value(_("refCount")).toLongLong()); if (attributes.hasAttribute(_("amount"))) - range.numericData1 = attributes.value(_("amount")).toString().toLongLong(); + range.setNumericData(0, attributes.value(_("amount")).toLongLong()); if (attributes.hasAttribute(_("timing1"))) - range.numericData1 = attributes.value(_("timing1")).toString().toLongLong(); + range.setNumericData(0, attributes.value(_("timing1")).toLongLong()); if (attributes.hasAttribute(_("timing2"))) - range.numericData2 = attributes.value(_("timing2")).toString().toLongLong(); + range.setNumericData(1, attributes.value(_("timing2")).toLongLong()); if (attributes.hasAttribute(_("timing3"))) - range.numericData3 = attributes.value(_("timing3")).toString().toLongLong(); + range.setNumericData(2, attributes.value(_("timing3")).toLongLong()); if (attributes.hasAttribute(_("timing4"))) - range.numericData4 = attributes.value(_("timing4")).toString().toLongLong(); + range.setNumericData(3, attributes.value(_("timing4")).toLongLong()); if (attributes.hasAttribute(_("timing5"))) - range.numericData5 = attributes.value(_("timing5")).toString().toLongLong(); - - range.typeIndex = attributes.value(_("eventIndex")).toString().toInt(); + range.setNumericData(4, attributes.value(_("timing5")).toLongLong()); + if (attributes.hasAttribute(_("type"))) + range.setNumericData(0, attributes.value(_("type")).toLongLong()); + if (attributes.hasAttribute(_("data1"))) + range.setNumericData(1, attributes.value(_("data1")).toLongLong()); + if (attributes.hasAttribute(_("data2"))) + range.setNumericData(2, attributes.value(_("data2")).toLongLong()); + if (attributes.hasAttribute(_("text"))) + range.setStringData(attributes.value(_("text")).toString()); + + range.setTypeIndex(attributes.value(_("eventIndex")).toInt()); m_ranges.append(range); } @@ -445,9 +455,9 @@ void QmlProfilerFileReader::loadNoteData(QXmlStreamReader &stream) if (elementName == _("note")) { progress(stream.device()); QXmlStreamAttributes attrs = stream.attributes(); - currentNote.startTime = attrs.value(_("startTime")).toString().toLongLong(); - currentNote.duration = attrs.value(_("duration")).toString().toLongLong(); - currentNote.typeIndex = attrs.value(_("eventIndex")).toString().toInt(); + currentNote.startTime = attrs.value(_("startTime")).toLongLong(); + currentNote.duration = attrs.value(_("duration")).toLongLong(); + currentNote.typeIndex = attrs.value(_("eventIndex")).toInt(); } break; } @@ -579,6 +589,8 @@ void QmlProfilerFileWriter::save(QIODevice *device) stream.writeTextElement(_("sgEventType"), QString::number(event.detailType)); } else if (event.message == MemoryAllocation) { stream.writeTextElement(_("memoryEventType"), QString::number(event.detailType)); + } else if (event.message == DebugMessage) { + stream.writeTextElement(_("level"), QString::number(event.detailType)); } stream.writeEndElement(); incrementProgress(); @@ -594,49 +606,60 @@ void QmlProfilerFileWriter::save(QIODevice *device) const QmlProfilerDataModel::QmlEventData &range = m_ranges[rangeIndex]; stream.writeStartElement(_("range")); - stream.writeAttribute(_("startTime"), QString::number(range.startTime)); - if (range.duration > 0) // no need to store duration of instantaneous events - stream.writeAttribute(_("duration"), QString::number(range.duration)); - stream.writeAttribute(_("eventIndex"), QString::number(range.typeIndex)); - - const QmlProfilerDataModel::QmlEventTypeData &event = m_qmlEvents[range.typeIndex]; - - // special: animation event - if (event.message == Event && event.detailType == AnimationFrame) { - stream.writeAttribute(_("framerate"), QString::number(range.numericData1)); - stream.writeAttribute(_("animationcount"), QString::number(range.numericData2)); - stream.writeAttribute(_("thread"), QString::number(range.numericData3)); + stream.writeAttribute(_("startTime"), QString::number(range.startTime())); + if (range.duration() > 0) // no need to store duration of instantaneous events + stream.writeAttribute(_("duration"), QString::number(range.duration())); + stream.writeAttribute(_("eventIndex"), QString::number(range.typeIndex())); + + const QmlProfilerDataModel::QmlEventTypeData &event = m_qmlEvents[range.typeIndex()]; + + + if (event.message == Event) { + if (event.detailType == AnimationFrame) { + // special: animation event + stream.writeAttribute(_("framerate"), QString::number(range.numericData(0))); + stream.writeAttribute(_("animationcount"), QString::number(range.numericData(1))); + stream.writeAttribute(_("thread"), QString::number(range.numericData(2))); + } else if (event.detailType == Key || event.detailType == Mouse) { + // special: input event + stream.writeAttribute(_("type"), QString::number(range.numericData(0))); + stream.writeAttribute(_("data1"), QString::number(range.numericData(1))); + stream.writeAttribute(_("data2"), QString::number(range.numericData(2))); + } } // special: pixmap cache event if (event.message == PixmapCacheEvent) { if (event.detailType == PixmapSizeKnown) { - stream.writeAttribute(_("width"), QString::number(range.numericData1)); - stream.writeAttribute(_("height"), QString::number(range.numericData2)); + stream.writeAttribute(_("width"), QString::number(range.numericData(0))); + stream.writeAttribute(_("height"), QString::number(range.numericData(1))); } if (event.detailType == PixmapReferenceCountChanged || event.detailType == PixmapCacheCountChanged) - stream.writeAttribute(_("refCount"), QString::number(range.numericData3)); + stream.writeAttribute(_("refCount"), QString::number(range.numericData(2))); } if (event.message == SceneGraphFrame) { // special: scenegraph frame events - if (range.numericData1 > 0) - stream.writeAttribute(_("timing1"), QString::number(range.numericData1)); - if (range.numericData2 > 0) - stream.writeAttribute(_("timing2"), QString::number(range.numericData2)); - if (range.numericData3 > 0) - stream.writeAttribute(_("timing3"), QString::number(range.numericData3)); - if (range.numericData4 > 0) - stream.writeAttribute(_("timing4"), QString::number(range.numericData4)); - if (range.numericData5 > 0) - stream.writeAttribute(_("timing5"), QString::number(range.numericData5)); + if (range.numericData(0) > 0) + stream.writeAttribute(_("timing1"), QString::number(range.numericData(0))); + if (range.numericData(1) > 0) + stream.writeAttribute(_("timing2"), QString::number(range.numericData(1))); + if (range.numericData(2) > 0) + stream.writeAttribute(_("timing3"), QString::number(range.numericData(2))); + if (range.numericData(3) > 0) + stream.writeAttribute(_("timing4"), QString::number(range.numericData(3))); + if (range.numericData(4) > 0) + stream.writeAttribute(_("timing5"), QString::number(range.numericData(4))); } // special: memory allocation event if (event.message == MemoryAllocation) - stream.writeAttribute(_("amount"), QString::number(range.numericData1)); + stream.writeAttribute(_("amount"), QString::number(range.numericData(0))); + + if (event.message == DebugMessage) + stream.writeAttribute(_("text"), range.stringData()); stream.writeEndElement(); incrementProgress(); diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp index 32762d9203..0dbfb228cc 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.cpp @@ -194,24 +194,6 @@ void QmlProfilerTraceView::selectByTypeId(int typeId) QMetaObject::invokeMethod(rootObject, "selectByTypeId", Q_ARG(QVariant,QVariant(typeId))); } -void QmlProfilerTraceView::selectBySourceLocation(const QString &filename, int line, int column) -{ - QQuickItem *rootObject = d->m_mainView->rootObject(); - if (!rootObject) - return; - - for (int modelIndex = 0; modelIndex < d->m_modelProxy->modelCount(); ++modelIndex) { - int typeId = d->m_modelProxy->model(modelIndex)->selectionIdForLocation(filename, line, - column); - if (typeId != -1) { - QMetaObject::invokeMethod(rootObject, "selectBySelectionId", - Q_ARG(QVariant,QVariant(modelIndex)), - Q_ARG(QVariant,QVariant(typeId))); - return; - } - } -} - void QmlProfilerTraceView::selectByEventIndex(int modelId, int eventIndex) { QQuickItem *rootObject = d->m_mainView->rootObject(); @@ -414,6 +396,7 @@ bool TraceViewFindSupport::findOne(const QString &txt, Core::FindFlags findFlags m_currentPosition = current; m_view->selectByEventIndex(model->timelineModel(m_currentPosition), model->timelineIndex(m_currentPosition)); + m_view->updateCursorPosition(); // open file/line that belongs to event return true; } current += increment; diff --git a/src/plugins/qmlprofiler/qmlprofilertraceview.h b/src/plugins/qmlprofiler/qmlprofilertraceview.h index 0eabe96eaf..c696ed45d1 100644 --- a/src/plugins/qmlprofiler/qmlprofilertraceview.h +++ b/src/plugins/qmlprofiler/qmlprofilertraceview.h @@ -66,10 +66,7 @@ public: public slots: void clear(); void selectByTypeId(int typeId); - void selectBySourceLocation(const QString &filename, int line, int column); void selectByEventIndex(int modelId, int eventIndex); - -private slots: void updateCursorPosition(); protected: diff --git a/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp b/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp index 2730d494fd..bd9c2a2a4b 100644 --- a/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerviewmanager.cpp @@ -93,16 +93,18 @@ void QmlProfilerViewManager::createViews() this, d->profilerModelManager); d->traceView->setWindowTitle(tr("Timeline")); - connect(d->traceView, SIGNAL(gotoSourceLocation(QString,int,int)), - this, SIGNAL(gotoSourceLocation(QString,int,int))); + connect(d->traceView, &QmlProfilerTraceView::gotoSourceLocation, + this, &QmlProfilerViewManager::gotoSourceLocation); d->eventsView = new QmlProfilerEventsWidget(mw, d->profilerTool, this, d->profilerModelManager); d->eventsView->setWindowTitle(tr("Events")); - connect(d->eventsView, SIGNAL(gotoSourceLocation(QString,int,int)), this, - SIGNAL(gotoSourceLocation(QString,int,int))); - connect(d->eventsView, SIGNAL(typeSelected(int)), d->traceView, SLOT(selectByTypeId(int))); - connect(d->traceView, SIGNAL(typeSelected(int)), d->eventsView, SLOT(selectByTypeId(int))); + connect(d->eventsView, &QmlProfilerEventsWidget::gotoSourceLocation, + this, &QmlProfilerViewManager::gotoSourceLocation); + connect(d->eventsView, &QmlProfilerEventsWidget::typeSelected, + d->traceView, &QmlProfilerTraceView::selectByTypeId); + connect(d->traceView, &QmlProfilerTraceView::typeSelected, + d->eventsView, &QmlProfilerEventsWidget::selectByTypeId); connect(d->profilerModelManager, &QmlProfilerModelManager::visibleFeaturesChanged, d->eventsView, &QmlProfilerEventsWidget::onVisibleFeaturesChanged); diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 3da348e4f4..3f7f4c9650 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -72,7 +72,7 @@ QmlProject::QmlProject(Internal::Manager *manager, const Utils::FileName &fileNa m_projectName = fileInfo.completeBaseName(); m_file = new Internal::QmlProjectFile(this, fileName); - m_rootNode = new Internal::QmlProjectNode(this, m_file); + m_rootNode = new Internal::QmlProjectNode(this); DocumentManager::addDocument(m_file, true); diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 0b254b2c43..f7227e84f3 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -41,12 +41,11 @@ namespace QmlProjectManager { namespace Internal { -QmlProjectNode::QmlProjectNode(QmlProject *project, Core::IDocument *projectFile) - : ProjectExplorer::ProjectNode(projectFile->filePath()), - m_project(project), - m_projectFile(projectFile) +QmlProjectNode::QmlProjectNode(QmlProject *project) + : ProjectExplorer::ProjectNode(project->projectFilePath()), + m_project(project) { - setDisplayName(projectFile->filePath().toFileInfo().completeBaseName()); + setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); // make overlay const QSize desiredSize = QSize(16, 16); const QIcon projectBaseIcon(QLatin1String(":/qmlproject/images/qmlfolder.png")); @@ -59,12 +58,6 @@ QmlProjectNode::QmlProjectNode(QmlProject *project, Core::IDocument *projectFile QmlProjectNode::~QmlProjectNode() { } -Core::IDocument *QmlProjectNode::projectFile() const -{ return m_projectFile; } - -QString QmlProjectNode::projectFilePath() const -{ return m_projectFile->filePath().toString(); } - void QmlProjectNode::refresh() { using namespace ProjectExplorer; @@ -132,7 +125,7 @@ ProjectExplorer::FolderNode *QmlProjectNode::findOrCreateFolderByName(const QStr if (! end) return 0; - Utils::FileName folderPath = path().parentDir(); + Utils::FileName folderPath = filePath().parentDir(); QString folderName; for (int i = 0; i < end; ++i) { diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index 81dc57346c..b4b0f9eb55 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -47,19 +47,16 @@ namespace Internal { class QmlProjectNode : public ProjectExplorer::ProjectNode { public: - QmlProjectNode(QmlProject *project, Core::IDocument *projectFile); - virtual ~QmlProjectNode(); + QmlProjectNode(QmlProject *project); + ~QmlProjectNode() override; - Core::IDocument *projectFile() const; - QString projectFilePath() const; + virtual bool showInSimpleTree() const override; - virtual bool showInSimpleTree() const; + virtual QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; - virtual QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - - virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0); - virtual bool deleteFiles(const QStringList &filePaths); - virtual bool renameFile(const QString &filePath, const QString &newFilePath); + virtual bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0) override; + virtual bool deleteFiles(const QStringList &filePaths) override; + virtual bool renameFile(const QString &filePath, const QString &newFilePath) override; void refresh(); @@ -69,7 +66,6 @@ private: private: QmlProject *m_project; - Core::IDocument *m_projectFile; QHash<QString, FolderNode *> m_folderByName; }; diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h index 29b5c4aafb..67b3f24733 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h @@ -61,11 +61,11 @@ class QMLPROJECTMANAGER_EXPORT QmlProjectRunConfiguration : public ProjectExplor public: QmlProjectRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - QString executable() const; - ProjectExplorer::ApplicationLauncher::Mode runMode() const; - QString commandLineArguments() const; + QString executable() const override; + ProjectExplorer::ApplicationLauncher::Mode runMode() const override; + QString commandLineArguments() const override; - QString workingDirectory() const; + QString workingDirectory() const override; QtSupport::BaseQtVersion *qtVersion() const; enum MainScriptSource { @@ -79,13 +79,13 @@ public: QString mainScript() const; // RunConfiguration - bool isEnabled() const; - QString disabledReason() const; - virtual QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; - QVariantMap toMap() const; + bool isEnabled() const override; + QString disabledReason() const override; + virtual QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; + QVariantMap toMap() const override; - ProjectExplorer::Abi abi() const; + ProjectExplorer::Abi abi() const override; signals: void scriptSourceChanged(); @@ -96,7 +96,7 @@ private slots: protected: QmlProjectRunConfiguration(ProjectExplorer::Target *parent, QmlProjectRunConfiguration *source); - virtual bool fromMap(const QVariantMap &map); + virtual bool fromMap(const QVariantMap &map) override; void setEnabled(bool value); private: diff --git a/src/plugins/qnx/qnxanalyzesupport.cpp b/src/plugins/qnx/qnxanalyzesupport.cpp index 56dec1bbf0..6c2402d4dd 100644 --- a/src/plugins/qnx/qnxanalyzesupport.cpp +++ b/src/plugins/qnx/qnxanalyzesupport.cpp @@ -99,7 +99,7 @@ void QnxAnalyzeSupport::startExecution() const QStringList args = QStringList() << Utils::QtcProcess::splitArgs(m_runControl->startParameters().debuggeeArgs) - << QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlProfilerServices, m_qmlPort); + << QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, m_qmlPort); appRunner()->setEnvironment(environment()); appRunner()->setWorkingDirectory(workingDirectory()); diff --git a/src/plugins/qnx/qnxdebugsupport.cpp b/src/plugins/qnx/qnxdebugsupport.cpp index 79dfbee3a8..856cdf12ee 100644 --- a/src/plugins/qnx/qnxdebugsupport.cpp +++ b/src/plugins/qnx/qnxdebugsupport.cpp @@ -106,7 +106,7 @@ void QnxDebugSupport::startExecution() if (m_useQmlDebugger) m_runControl->startParameters().processArgs += - QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlDebuggerServices, m_qmlPort); + QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices, m_qmlPort); QStringList arguments; if (m_useCppDebugger) diff --git a/src/plugins/qnx/qnxrunconfiguration.h b/src/plugins/qnx/qnxrunconfiguration.h index c7babdb127..2ba8f89a73 100644 --- a/src/plugins/qnx/qnxrunconfiguration.h +++ b/src/plugins/qnx/qnxrunconfiguration.h @@ -45,21 +45,20 @@ class QnxRunConfiguration : public RemoteLinux::RemoteLinuxRunConfiguration Q_OBJECT public: QnxRunConfiguration(ProjectExplorer::Target *parent, Core::Id id, - const QString &targetName); + const QString &targetName); - Utils::Environment environment() const; + Utils::Environment environment() const override; - QWidget *createConfigurationWidget(); + QWidget *createConfigurationWidget() override; - QVariantMap toMap() const; + QVariantMap toMap() const override; protected: friend class QnxRunConfigurationFactory; - QnxRunConfiguration(ProjectExplorer::Target *parent, - QnxRunConfiguration *source); + QnxRunConfiguration(ProjectExplorer::Target *parent, QnxRunConfiguration *source); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; private slots: void setQtLibPath(const QString &path); diff --git a/src/plugins/qnx/qnxrunconfigurationfactory.cpp b/src/plugins/qnx/qnxrunconfigurationfactory.cpp index cd5ad7b035..d38a3b5c86 100644 --- a/src/plugins/qnx/qnxrunconfigurationfactory.cpp +++ b/src/plugins/qnx/qnxrunconfigurationfactory.cpp @@ -104,7 +104,7 @@ ProjectExplorer::RunConfiguration *QnxRunConfigurationFactory::doCreate(ProjectE QTC_ASSERT(qt4Project, return 0); foreach (const QmakeProjectManager::QmakeProFileNode * const node, qt4Project->applicationProFiles()) { - if (node->path() == projectFilePath) + if (node->filePath() == projectFilePath) return new QnxRunConfiguration(parent, id, node->targetInformation().target); } QTC_CHECK(false); diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index eb126703c9..416716acef 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -86,9 +86,9 @@ void QnxToolChain::addToEnvironment(Utils::Environment &env) const GccToolChain::addToEnvironment(env); } -QList<Utils::FileName> QnxToolChain::suggestedMkspecList() const +Utils::FileNameList QnxToolChain::suggestedMkspecList() const { - QList<Utils::FileName> mkspecList; + Utils::FileNameList mkspecList; mkspecList << Utils::FileName::fromLatin1("qnx-armv7le-qcc"); mkspecList << Utils::FileName::fromLatin1("qnx-armle-v7-qcc"); mkspecList << Utils::FileName::fromLatin1("qnx-x86-qcc"); diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h index b9b438985d..6d05b68434 100644 --- a/src/plugins/qnx/qnxtoolchain.h +++ b/src/plugins/qnx/qnxtoolchain.h @@ -49,7 +49,7 @@ public: ProjectExplorer::ToolChainConfigWidget *configurationWidget() override; void addToEnvironment(Utils::Environment &env) const override; - QList<Utils::FileName> suggestedMkspecList() const override; + Utils::FileNameList suggestedMkspecList() const override; QVariantMap toMap() const override; bool fromMap(const QVariantMap &data) override; diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 4b3ef96f1e..6968c30bed 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -1015,7 +1015,7 @@ FileName BaseQtVersion::mkspecFor(ToolChain *tc) const if (!tc) return versionSpec; - const QList<FileName> tcSpecList = tc->suggestedMkspecList(); + const FileNameList tcSpecList = tc->suggestedMkspecList(); if (tcSpecList.contains(versionSpec)) return versionSpec; foreach (const FileName &tcSpec, tcSpecList) { @@ -1650,14 +1650,14 @@ bool BaseQtVersion::isQtQuickCompilerSupported(QString *reason) const return true; } -QList<FileName> BaseQtVersion::qtCorePaths(const QHash<QString,QString> &versionInfo, const QString &versionString) +FileNameList BaseQtVersion::qtCorePaths(const QHash<QString,QString> &versionInfo, const QString &versionString) { QStringList dirs; dirs << qmakeProperty(versionInfo, "QT_INSTALL_LIBS") << qmakeProperty(versionInfo, "QT_INSTALL_BINS"); - QList<FileName> staticLibs; - QList<FileName> dynamicLibs; + FileNameList staticLibs; + FileNameList dynamicLibs; foreach (const QString &dir, dirs) { if (dir.isEmpty()) continue; @@ -1693,7 +1693,7 @@ QList<FileName> BaseQtVersion::qtCorePaths(const QHash<QString,QString> &version return dynamicLibs; } -QList<Abi> BaseQtVersion::qtAbisFromLibrary(const QList<FileName> &coreLibraries) +QList<Abi> BaseQtVersion::qtAbisFromLibrary(const FileNameList &coreLibraries) { QList<Abi> res; foreach (const FileName &library, coreLibraries) diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index 442b20052f..f9ea7b473e 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -242,9 +242,9 @@ protected: virtual QList<ProjectExplorer::Task> reportIssuesImpl(const QString &proFile, const QString &buildDir) const; // helper function for desktop and simulator to figure out the supported abis based on the libraries - static QList<Utils::FileName> qtCorePaths(const QHash<QString,QString> &versionInfo, - const QString &versionString); - static QList<ProjectExplorer::Abi> qtAbisFromLibrary(const QList<Utils::FileName> &coreLibraries); + static Utils::FileNameList qtCorePaths(const QHash<QString,QString> &versionInfo, + const QString &versionString); + static QList<ProjectExplorer::Abi> qtAbisFromLibrary(const Utils::FileNameList &coreLibraries); void ensureMkSpecParsed() const; virtual void parseMkSpec(ProFileEvaluator *) const; diff --git a/src/plugins/qtsupport/customexecutablerunconfiguration.h b/src/plugins/qtsupport/customexecutablerunconfiguration.h index 2e6817db4b..31338a6263 100644 --- a/src/plugins/qtsupport/customexecutablerunconfiguration.h +++ b/src/plugins/qtsupport/customexecutablerunconfiguration.h @@ -53,29 +53,29 @@ class QTSUPPORT_EXPORT CustomExecutableRunConfiguration : public ProjectExplorer public: explicit CustomExecutableRunConfiguration(ProjectExplorer::Target *parent); - ~CustomExecutableRunConfiguration(); + ~CustomExecutableRunConfiguration() override; /** * Returns the executable, looks in the environment for it and might even * ask the user if none is specified */ - QString executable() const; + QString executable() const override; /** Returns whether this runconfiguration ever was configured with an executable */ - bool isConfigured() const; + bool isConfigured() const override; - ProjectExplorer::ApplicationLauncher::Mode runMode() const; - QString workingDirectory() const; - QString commandLineArguments() const; + ProjectExplorer::ApplicationLauncher::Mode runMode() const override; + QString workingDirectory() const override; + QString commandLineArguments() const override; - QWidget *createConfigurationWidget(); + QWidget *createConfigurationWidget() override; - ProjectExplorer::Abi abi() const; + ProjectExplorer::Abi abi() const override; - QVariantMap toMap() const; + QVariantMap toMap() const override; - ConfigurationState ensureConfigured(QString *errorMessage); + ConfigurationState ensureConfigured(QString *errorMessage) override; signals: void changed(); @@ -83,7 +83,7 @@ signals: protected: CustomExecutableRunConfiguration(ProjectExplorer::Target *parent, CustomExecutableRunConfiguration *source); - virtual bool fromMap(const QVariantMap &map); + virtual bool fromMap(const QVariantMap &map) override; QString defaultDisplayName() const; private slots: diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index 73838474df..e1c67b415c 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -50,6 +50,7 @@ #include <utils/qtcassert.h> #include <utils/runextensions.h> #include <utils/algorithm.h> +#include <utils/themehelper.h> #include <utils/treemodel.h> #include <QDir> @@ -206,8 +207,8 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent) , m_versionUi(new Internal::Ui::QtVersionInfo()) , m_debuggingHelperUi(new Internal::Ui::DebuggingHelper()) , m_infoBrowser(new QTextBrowser) - , m_invalidVersionIcon(QLatin1String(Core::Constants::ICON_ERROR)) - , m_warningVersionIcon(QLatin1String(Core::Constants::ICON_WARNING)) + , m_invalidVersionIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_ERROR))) + , m_warningVersionIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_WARNING))) , m_configurationWidget(0) , m_autoItem(0) , m_manualItem(0) @@ -729,7 +730,7 @@ void QtOptionsPageWidget::addQtDir() if (qtVersion.isNull()) return; - QFileInfo fi(qtVersion.toString()); + QFileInfo fi = qtVersion.toFileInfo(); // should add all qt versions here ? if (BuildableHelperLibrary::isQtChooser(fi)) qtVersion = FileName::fromString(BuildableHelperLibrary::qtChooserToQmakePath(fi.symLinkTarget())); diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 3a44f6861d..48583720d0 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -450,9 +450,8 @@ static void findSystemQt() systemQMakes << systemQMakePath; systemQMakes.append(gatherQmakePathsFromQtChooser()); - systemQMakes.removeDuplicates(); - foreach (const FileName &qmakePath, systemQMakes) { + foreach (const FileName &qmakePath, Utils::filteredUnique(systemQMakes)) { BaseQtVersion *version = QtVersionFactory::createQtVersionFromQMakePath(qmakePath, false, QLatin1String("PATH")); if (version) { diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp index c4babae829..77218c0837 100644 --- a/src/plugins/remotelinux/abstractpackagingstep.cpp +++ b/src/plugins/remotelinux/abstractpackagingstep.cpp @@ -139,8 +139,9 @@ bool AbstractPackagingStep::isPackagingNeeded() const return false; } -bool AbstractPackagingStep::init() +bool AbstractPackagingStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); d->cachedPackageDirectory = packageDirectory(); d->cachedPackageFilePath = packageFilePath(); return true; diff --git a/src/plugins/remotelinux/abstractpackagingstep.h b/src/plugins/remotelinux/abstractpackagingstep.h index 88c177ec07..8c76e147d5 100644 --- a/src/plugins/remotelinux/abstractpackagingstep.h +++ b/src/plugins/remotelinux/abstractpackagingstep.h @@ -46,11 +46,11 @@ class REMOTELINUX_EXPORT AbstractPackagingStep : public ProjectExplorer::BuildSt public: AbstractPackagingStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); AbstractPackagingStep(ProjectExplorer::BuildStepList *bsl, AbstractPackagingStep *other); - ~AbstractPackagingStep(); + ~AbstractPackagingStep() override; QString packageFilePath() const; QString cachedPackageFilePath() const; - bool init(); + bool init(QList<const BuildStep *> &earlierSteps) override; signals: void packageFilePathChanged(); diff --git a/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp b/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp index c1f4d03e13..4e6166aa8c 100644 --- a/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp +++ b/src/plugins/remotelinux/abstractremotelinuxdeploystep.cpp @@ -79,8 +79,9 @@ QVariantMap AbstractRemoteLinuxDeployStep::toMap() const return BuildStep::toMap().unite(deployService()->exportDeployTimes()); } -bool AbstractRemoteLinuxDeployStep::init() +bool AbstractRemoteLinuxDeployStep::init(QList<const BuildStep *> &earlierSteps) { + Q_UNUSED(earlierSteps); QString error; deployService()->setTarget(target()); const bool canDeploy = initInternal(&error); diff --git a/src/plugins/remotelinux/abstractremotelinuxdeploystep.h b/src/plugins/remotelinux/abstractremotelinuxdeploystep.h index 4bd3ea89d9..a40841553f 100644 --- a/src/plugins/remotelinux/abstractremotelinuxdeploystep.h +++ b/src/plugins/remotelinux/abstractremotelinuxdeploystep.h @@ -47,14 +47,14 @@ class REMOTELINUX_EXPORT AbstractRemoteLinuxDeployStep : public ProjectExplorer: Q_OBJECT public: - ~AbstractRemoteLinuxDeployStep(); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; - bool init(); - void run(QFutureInterface<bool> &fi); - bool runInGuiThread() const { return true; } - void cancel(); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ~AbstractRemoteLinuxDeployStep() override; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; + bool runInGuiThread() const override { return true; } + void cancel() override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; RemoteLinuxDeployConfiguration *deployConfiguration() const; virtual AbstractRemoteLinuxDeployService *deployService() const = 0; diff --git a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp index bd5c222234..6c96f497ba 100644 --- a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.cpp @@ -39,11 +39,6 @@ AbstractRemoteLinuxRunConfiguration::AbstractRemoteLinuxRunConfiguration(Project } -AbstractRemoteLinuxRunConfiguration::~AbstractRemoteLinuxRunConfiguration() -{ - -} - AbstractRemoteLinuxRunConfiguration::AbstractRemoteLinuxRunConfiguration(ProjectExplorer::Target *parent, AbstractRemoteLinuxRunConfiguration *source): RunConfiguration(parent, source) { diff --git a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h index 597456dfab..e66068f8ea 100644 --- a/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h +++ b/src/plugins/remotelinux/abstractremotelinuxrunconfiguration.h @@ -48,8 +48,6 @@ class REMOTELINUX_EXPORT AbstractRemoteLinuxRunConfiguration : public: AbstractRemoteLinuxRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - ~AbstractRemoteLinuxRunConfiguration(); - virtual QString localExecutableFilePath() const = 0; virtual QString remoteExecutableFilePath() const = 0; virtual QStringList arguments() const = 0; diff --git a/src/plugins/remotelinux/genericdirectuploadstep.h b/src/plugins/remotelinux/genericdirectuploadstep.h index e7c4da2d8e..7ca49d251f 100644 --- a/src/plugins/remotelinux/genericdirectuploadstep.h +++ b/src/plugins/remotelinux/genericdirectuploadstep.h @@ -44,10 +44,10 @@ class REMOTELINUX_EXPORT GenericDirectUploadStep : public AbstractRemoteLinuxDep public: GenericDirectUploadStep(ProjectExplorer::BuildStepList *bsl, Core::Id id); GenericDirectUploadStep(ProjectExplorer::BuildStepList *bsl, GenericDirectUploadStep *other); - ~GenericDirectUploadStep(); + ~GenericDirectUploadStep() override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool initInternal(QString *error = 0); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool initInternal(QString *error = 0) override; void setIncrementalDeployment(bool incremental); bool incrementalDeployment() const; @@ -59,9 +59,9 @@ public: static QString displayName(); private: - GenericDirectUploadService *deployService() const; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + GenericDirectUploadService *deployService() const override; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; void ctor(); diff --git a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp index 032eaec4a0..ca894ef38b 100644 --- a/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp +++ b/src/plugins/remotelinux/remotelinuxanalyzesupport.cpp @@ -157,7 +157,7 @@ void RemoteLinuxAnalyzeSupport::startExecution() this, &RemoteLinuxAnalyzeSupport::handleAppRunnerError); const QStringList args = arguments() - << QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlProfilerServices, d->qmlPort); + << QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlProfilerServices, d->qmlPort); runner->setWorkingDirectory(workingDirectory()); runner->setEnvironment(environment()); diff --git a/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.h b/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.h index 0e1c34c681..e87609129d 100644 --- a/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.h +++ b/src/plugins/remotelinux/remotelinuxcheckforfreediskspacestep.h @@ -43,7 +43,7 @@ public: Core::Id id = stepId()); RemoteLinuxCheckForFreeDiskSpaceStep(ProjectExplorer::BuildStepList *bsl, RemoteLinuxCheckForFreeDiskSpaceStep *other); - ~RemoteLinuxCheckForFreeDiskSpaceStep(); + ~RemoteLinuxCheckForFreeDiskSpaceStep() override; void setPathToCheck(const QString &path); QString pathToCheck() const; @@ -55,12 +55,12 @@ public: static QString stepDisplayName(); protected: - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; - bool initInternal(QString *error); - AbstractRemoteLinuxDeployService *deployService() const; + bool initInternal(QString *error) override; + AbstractRemoteLinuxDeployService *deployService() const override; private: void ctor(); diff --git a/src/plugins/remotelinux/remotelinuxcustomcommanddeploymentstep.h b/src/plugins/remotelinux/remotelinuxcustomcommanddeploymentstep.h index 7f0591ce2a..dedb886478 100644 --- a/src/plugins/remotelinux/remotelinuxcustomcommanddeploymentstep.h +++ b/src/plugins/remotelinux/remotelinuxcustomcommanddeploymentstep.h @@ -45,10 +45,10 @@ class REMOTELINUX_EXPORT AbstractRemoteLinuxCustomCommandDeploymentStep { Q_OBJECT public: - ~AbstractRemoteLinuxCustomCommandDeploymentStep(); + ~AbstractRemoteLinuxCustomCommandDeploymentStep() override; - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; void setCommandLine(const QString &commandLine); QString commandLine() const; @@ -58,13 +58,13 @@ protected: AbstractRemoteLinuxCustomCommandDeploymentStep(ProjectExplorer::BuildStepList *bsl, AbstractRemoteLinuxCustomCommandDeploymentStep *other); - bool initInternal(QString *error = 0); + bool initInternal(QString *error = 0) override; private: void ctor(); - RemoteLinuxCustomCommandDeployService *deployService() const = 0; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + RemoteLinuxCustomCommandDeployService *deployService() const override = 0; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; Internal::AbstractRemoteLinuxCustomCommandDeploymentStepPrivate *d; }; @@ -75,16 +75,16 @@ class REMOTELINUX_EXPORT GenericRemoteLinuxCustomCommandDeploymentStep { Q_OBJECT public: - GenericRemoteLinuxCustomCommandDeploymentStep(ProjectExplorer::BuildStepList *bsl); + explicit GenericRemoteLinuxCustomCommandDeploymentStep(ProjectExplorer::BuildStepList *bsl); GenericRemoteLinuxCustomCommandDeploymentStep(ProjectExplorer::BuildStepList *bsl, GenericRemoteLinuxCustomCommandDeploymentStep *other); - ~GenericRemoteLinuxCustomCommandDeploymentStep(); + ~GenericRemoteLinuxCustomCommandDeploymentStep() override; static Core::Id stepId(); static QString stepDisplayName(); private: - RemoteLinuxCustomCommandDeployService *deployService() const; + RemoteLinuxCustomCommandDeployService *deployService() const override; void ctor(); Internal::GenericRemoteLinuxCustomCommandDeploymentStepPrivate *d; diff --git a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h index 0d0d9b4fe0..68e0fa665b 100644 --- a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h +++ b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h @@ -44,20 +44,20 @@ public: RemoteLinuxCustomRunConfiguration(ProjectExplorer::Target *parent, RemoteLinuxCustomRunConfiguration *source); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; - bool isEnabled() const { return true; } - bool isConfigured() const; - ConfigurationState ensureConfigured(QString *errorMessage); - QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; + bool isEnabled() const override { return true; } + bool isConfigured() const override; + ConfigurationState ensureConfigured(QString *errorMessage) override; + QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; - QString localExecutableFilePath() const { return m_localExecutable; } - QString remoteExecutableFilePath() const { return m_remoteExecutable; } - QStringList arguments() const { return m_arguments; } - QString workingDirectory() const { return m_workingDirectory; } - Utils::Environment environment() const; + QString localExecutableFilePath() const override { return m_localExecutable; } + QString remoteExecutableFilePath() const override { return m_remoteExecutable; } + QStringList arguments() const override { return m_arguments; } + QString workingDirectory() const override { return m_workingDirectory; } + Utils::Environment environment() const override; void setLocalExecutableFilePath(const QString &executable) { m_localExecutable = executable; } void setRemoteExecutableFilePath(const QString &executable); diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 33e0001ffa..9df21519bb 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -102,7 +102,7 @@ DebuggerStartParameters LinuxDeviceDebugSupport::startParameters(const AbstractR aspect->setUseMultiProcess(true); QStringList args = runConfig->arguments(); if (aspect->useQmlDebugger()) - args.prepend(QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlDebuggerServices)); + args.prepend(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices)); params.processArgs = Utils::QtcProcess::joinArgs(args, Utils::OsTypeLinux); params.executable = runConfig->localExecutableFilePath(); @@ -166,8 +166,7 @@ void LinuxDeviceDebugSupport::startExecution() QString command; if (d->qmlDebugging) - args.prepend(QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlDebuggerServices, - d->qmlPort)); + args.prepend(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices, d->qmlPort)); if (d->qmlDebugging && !d->cppDebugging) { command = remoteFilePath(); diff --git a/src/plugins/remotelinux/remotelinuxdeployconfiguration.h b/src/plugins/remotelinux/remotelinuxdeployconfiguration.h index c9b10266fe..e61190dadd 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfiguration.h +++ b/src/plugins/remotelinux/remotelinuxdeployconfiguration.h @@ -50,7 +50,7 @@ public: RemoteLinuxDeployConfiguration(ProjectExplorer::Target *target, RemoteLinuxDeployConfiguration *source); - ProjectExplorer::NamedWidget *createConfigWidget(); + ProjectExplorer::NamedWidget *createConfigWidget() override; template<class T> T *earlierBuildStep(const ProjectExplorer::BuildStep *laterBuildStep) const { diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.h b/src/plugins/remotelinux/remotelinuxrunconfiguration.h index dac5d61da1..0942696f7b 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfiguration.h +++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.h @@ -61,28 +61,28 @@ class REMOTELINUX_EXPORT RemoteLinuxRunConfiguration : public AbstractRemoteLinu public: RemoteLinuxRunConfiguration(ProjectExplorer::Target *parent, Core::Id id, - const QString &targetName); - ~RemoteLinuxRunConfiguration(); + const QString &targetName); + ~RemoteLinuxRunConfiguration() override; - bool isEnabled() const; - QWidget *createConfigurationWidget(); - Utils::OutputFormatter *createOutputFormatter() const; + bool isEnabled() const override; + QWidget *createConfigurationWidget() override; + Utils::OutputFormatter *createOutputFormatter() const override; - virtual Utils::Environment environment() const; + virtual Utils::Environment environment() const override; - QString localExecutableFilePath() const; + QString localExecutableFilePath() const override; QString defaultRemoteExecutableFilePath() const; - QString remoteExecutableFilePath() const; - QStringList arguments() const; + QString remoteExecutableFilePath() const override; + QStringList arguments() const override; void setArguments(const QString &args); - QString workingDirectory() const; + QString workingDirectory() const override; void setWorkingDirectory(const QString &wd); void setAlternateRemoteExecutable(const QString &exe); QString alternateRemoteExecutable() const; void setUseAlternateExecutable(bool useAlternate); bool useAlternateExecutable() const; - QVariantMap toMap() const; + QVariantMap toMap() const override; static const char *IdPrefix; @@ -93,7 +93,7 @@ signals: protected: RemoteLinuxRunConfiguration(ProjectExplorer::Target *parent, RemoteLinuxRunConfiguration *source); - bool fromMap(const QVariantMap &map); + bool fromMap(const QVariantMap &map) override; QString defaultDisplayName(); protected slots: diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp index 304708809c..ddffcf06f2 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp @@ -34,6 +34,7 @@ #include <coreplugin/coreconstants.h> #include <utils/detailswidget.h> #include <utils/qtcprocess.h> +#include <utils/themehelper.h> #include <QCoreApplication> #include <QDir> @@ -111,7 +112,8 @@ void RemoteLinuxRunConfigurationWidget::addDisabledLabel(QVBoxLayout *topLayout) { QHBoxLayout * const hl = new QHBoxLayout; hl->addStretch(); - d->disabledIcon.setPixmap(QPixmap(QLatin1String(Core::Constants::ICON_WARNING))); + d->disabledIcon.setPixmap(Utils::ThemeHelper::themedIconPixmap( + QLatin1String(Core::Constants::ICON_WARNING))); hl->addWidget(&d->disabledIcon); d->disabledReason.setVisible(false); hl->addWidget(&d->disabledReason); diff --git a/src/plugins/remotelinux/tarpackagecreationstep.cpp b/src/plugins/remotelinux/tarpackagecreationstep.cpp index 702a19c395..bf1eebb24f 100644 --- a/src/plugins/remotelinux/tarpackagecreationstep.cpp +++ b/src/plugins/remotelinux/tarpackagecreationstep.cpp @@ -130,9 +130,9 @@ void TarPackageCreationStep::ctor() m_ignoreMissingFiles = false; } -bool TarPackageCreationStep::init() +bool TarPackageCreationStep::init(QList<const BuildStep *> &earlierSteps) { - if (!AbstractPackagingStep::init()) + if (!AbstractPackagingStep::init(earlierSteps)) return false; m_packagingNeeded = isPackagingNeeded(); if (m_packagingNeeded) diff --git a/src/plugins/remotelinux/tarpackagecreationstep.h b/src/plugins/remotelinux/tarpackagecreationstep.h index 18e8901076..314d8eb84e 100644 --- a/src/plugins/remotelinux/tarpackagecreationstep.h +++ b/src/plugins/remotelinux/tarpackagecreationstep.h @@ -52,18 +52,18 @@ public: static Core::Id stepId(); static QString displayName(); - bool init(); - void run(QFutureInterface<bool> &fi); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; void setIgnoreMissingFiles(bool ignoreMissingFiles); bool ignoreMissingFiles() const; private: - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; - QString packageFileName() const; + QString packageFileName() const override; void ctor(); bool doPackage(QFutureInterface<bool> &fi); diff --git a/src/plugins/remotelinux/uploadandinstalltarpackagestep.h b/src/plugins/remotelinux/uploadandinstalltarpackagestep.h index 2714bae19a..fe7f3d5fe1 100644 --- a/src/plugins/remotelinux/uploadandinstalltarpackagestep.h +++ b/src/plugins/remotelinux/uploadandinstalltarpackagestep.h @@ -62,15 +62,15 @@ public: UploadAndInstallTarPackageStep(ProjectExplorer::BuildStepList *bsl, UploadAndInstallTarPackageStep *other); - bool initInternal(QString *error = 0); + bool initInternal(QString *error = 0) override; - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; static Core::Id stepId(); static QString displayName(); private: - AbstractRemoteLinuxDeployService *deployService() const { return m_deployService; } + AbstractRemoteLinuxDeployService *deployService() const override { return m_deployService; } void ctor(); diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 1c20bf1d58..71d4d8a441 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -272,7 +272,7 @@ void ResourceEditorPlugin::renameFileContextMenu() void ResourceEditorPlugin::removeFileContextMenu() { ResourceFolderNode *rfn = static_cast<ResourceFolderNode *>(ProjectTree::currentNode()); - QString path = rfn->path().toString(); + QString path = rfn->filePath().toString(); FolderNode *parent = rfn->parentFolderNode(); if (!parent->removeFiles(QStringList() << path)) QMessageBox::warning(Core::ICore::mainWindow(), @@ -282,7 +282,7 @@ void ResourceEditorPlugin::removeFileContextMenu() void ResourceEditorPlugin::openEditorContextMenu() { - Core::EditorManager::openEditor(ProjectTree::currentNode()->path().toString()); + Core::EditorManager::openEditor(ProjectTree::currentNode()->filePath().toString()); } void ResourceEditorPlugin::copyPathContextMenu() @@ -345,7 +345,7 @@ void ResourceEditorPlugin::updateContextActions(Node *node, Project *) m_removeNonExisting->setVisible(isResourceNode); if (isResourceNode) - Core::EditorManager::populateOpenWithMenu(m_openWithMenu, node->path().toString()); + Core::EditorManager::populateOpenWithMenu(m_openWithMenu, node->filePath().toString()); else m_openWithMenu->clear(); m_openWithMenu->menuAction()->setVisible(!m_openWithMenu->actions().isEmpty()); diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index 367f8930df..d0cc6697bc 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -40,6 +40,7 @@ #include <qmljstools/qmljstoolsconstants.h> #include <utils/mimetypes/mimedatabase.h> +#include <utils/algorithm.h> #include <QCoreApplication> #include <QDir> @@ -110,7 +111,7 @@ static bool sortByPrefixAndLang(ProjectExplorer::FolderNode *a, ProjectExplorer: static bool sortNodesByPath(ProjectExplorer::Node *a, ProjectExplorer::Node *b) { - return a->path() < b->path(); + return a->filePath() < b->filePath(); } ResourceTopLevelNode::ResourceTopLevelNode(const Utils::FileName &filePath, FolderNode *parent) @@ -120,7 +121,7 @@ ResourceTopLevelNode::ResourceTopLevelNode(const Utils::FileName &filePath, Fold m_document = new ResourceFileWatcher(this); Core::DocumentManager::addDocument(m_document); - Utils::FileName base = parent->path(); + Utils::FileName base = parent->filePath(); if (filePath.isChildOf(base)) setDisplayName(filePath.relativeChildPath(base).toString()); else @@ -135,72 +136,127 @@ ResourceTopLevelNode::~ResourceTopLevelNode() void ResourceTopLevelNode::update() { - QList<ProjectExplorer::FolderNode *> newFolderList; - QMap<QPair<QString, QString>, QList<ProjectExplorer::FileNode *> > filesToAdd; + QList<ProjectExplorer::FolderNode *> newPrefixList; + QMap<PrefixFolderLang, QList<ProjectExplorer::FileNode *>> filesToAdd; + QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAddToFolders; + QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAddToPrefix; - ResourceFile file(path().toString()); + ResourceFile file(filePath().toString()); if (file.load() == Core::IDocument::OpenResult::Success) { - QSet<QPair<QString, QString > > prefixes; + QMap<PrefixFolderLang, ProjectExplorer::FolderNode *> prefixNodes; + QMap<PrefixFolderLang, ProjectExplorer::FolderNode *> folderNodes; int prfxcount = file.prefixCount(); for (int i = 0; i < prfxcount; ++i) { const QString &prefix = file.prefix(i); const QString &lang = file.lang(i); // ensure that we don't duplicate prefixes - if (!prefixes.contains(qMakePair(prefix, lang))) { + PrefixFolderLang prefixId(prefix, QString(), lang); + if (!prefixNodes.contains(prefixId)) { ProjectExplorer::FolderNode *fn = new ResourceFolderNode(file.prefix(i), file.lang(i), this); - newFolderList << fn; + newPrefixList << fn; - prefixes.insert(qMakePair(prefix, lang)); + prefixNodes.insert(prefixId, fn); } + ResourceFolderNode *currentPrefixNode = static_cast<ResourceFolderNode*>(prefixNodes[prefixId]); QSet<QString> fileNames; int filecount = file.fileCount(i); for (int j = 0; j < filecount; ++j) { const QString &fileName = file.file(i, j); QString alias = file.alias(i, j); - if (alias.isEmpty()) - alias = path().toFileInfo().absoluteDir().relativeFilePath(fileName); if (fileNames.contains(fileName)) { // The file name is duplicated, skip it // Note: this is wrong, but the qrceditor doesn't allow it either // only aliases need to be unique } else { + if (alias.isEmpty()) + alias = filePath().toFileInfo().absoluteDir().relativeFilePath(fileName); + QString prefixWithSlash = prefix; if (!prefixWithSlash.endsWith(QLatin1Char('/'))) prefixWithSlash.append(QLatin1Char('/')); + + const QString fullPath = QDir::cleanPath(alias); + QStringList pathList = fullPath.split(QLatin1Char('/')); + const QString displayName = pathList.last(); + pathList.removeLast(); // remove file name + + bool parentIsPrefix = true; + + QString parentFolderName; + PrefixFolderLang folderId(prefix, QString(), lang); + QStringList currentPathList; + foreach (const QString &pathElement, pathList) { + currentPathList << pathElement; + const QString folderName = currentPathList.join(QLatin1Char('/')); + folderId = PrefixFolderLang(prefix, folderName, lang); + if (!folderNodes.contains(folderId)) { + const QString absoluteFolderName + = filePath().toFileInfo().absoluteDir().absoluteFilePath( + currentPathList.join(QLatin1Char('/'))); + const Utils::FileName folderPath + = Utils::FileName::fromString(absoluteFolderName); + ProjectExplorer::FolderNode *newNode + = new SimpleResourceFolderNode(folderName, pathElement, + prefix, lang, folderPath, + this, currentPrefixNode); + if (parentIsPrefix) { + foldersToAddToPrefix[prefixId] << newNode; + } else { + PrefixFolderLang parentFolderId(prefix, parentFolderName, lang); + foldersToAddToFolders[parentFolderId] << newNode; + } + folderNodes.insert(folderId, newNode); + } + parentIsPrefix = false; + parentFolderName = folderName; + } + const QString qrcPath = QDir::cleanPath(prefixWithSlash + alias); fileNames.insert(fileName); - filesToAdd[qMakePair(prefix, lang)] + filesToAdd[folderId] << new ResourceFileNode(Utils::FileName::fromString(fileName), - qrcPath, this); + qrcPath, displayName); } - } } } - QList<ProjectExplorer::FolderNode *> oldFolderList = subFolderNodes(); - QList<ProjectExplorer::FolderNode *> foldersToAdd; - QList<ProjectExplorer::FolderNode *> foldersToRemove; - std::sort(oldFolderList.begin(), oldFolderList.end(), sortByPrefixAndLang); - std::sort(newFolderList.begin(), newFolderList.end(), sortByPrefixAndLang); + QList<ProjectExplorer::FolderNode *> oldPrefixList = subFolderNodes(); + QList<ProjectExplorer::FolderNode *> prefixesToAdd; + QList<ProjectExplorer::FolderNode *> prefixesToRemove; - ProjectExplorer::compareSortedLists(oldFolderList, newFolderList, foldersToRemove, foldersToAdd, sortByPrefixAndLang); + Utils::sort(oldPrefixList, sortByPrefixAndLang); + Utils::sort(newPrefixList, sortByPrefixAndLang); - removeFolderNodes(foldersToRemove); - addFolderNodes(foldersToAdd); + ProjectExplorer::compareSortedLists(oldPrefixList, newPrefixList, + prefixesToRemove, prefixesToAdd, sortByPrefixAndLang); - // delete nodes that weren't added - qDeleteAll(ProjectExplorer::subtractSortedList(newFolderList, foldersToAdd, sortByPrefixAndLang)); + removeFolderNodes(prefixesToRemove); + addFolderNodes(prefixesToAdd); - foreach (FolderNode *fn, subFolderNodes()) { - ResourceFolderNode *rn = static_cast<ResourceFolderNode *>(fn); - rn->updateFiles(filesToAdd.value(qMakePair(rn->prefix(), rn->lang()))); + // delete nodes that weren't added + qDeleteAll(ProjectExplorer::subtractSortedList(newPrefixList, prefixesToAdd, sortByPrefixAndLang)); + + foreach (FolderNode *sfn, subFolderNodes()) { + ResourceFolderNode *srn = static_cast<ResourceFolderNode *>(sfn); + PrefixFolderLang folderId(srn->prefix(), QString(), srn->lang()); + srn->updateFiles(filesToAdd[folderId]); + srn->updateFolders(foldersToAddToPrefix[folderId]); + foreach (FolderNode* ssfn, sfn->subFolderNodes()) { + SimpleResourceFolderNode *sssn = static_cast<SimpleResourceFolderNode *>(ssfn); + sssn->addFilesAndSubfolders(filesToAdd, foldersToAddToFolders, srn->prefix(), srn->lang()); + } } } +QString ResourceTopLevelNode::addFileFilter() const +{ + return QLatin1String("*.png; *.jpg; *.gif; *.svg; *.ico; *.qml; *.qml.ui"); +} + QList<ProjectExplorer::ProjectAction> ResourceTopLevelNode::supportedActions(ProjectExplorer::Node *node) const { if (node != this) @@ -215,7 +271,7 @@ QList<ProjectExplorer::ProjectAction> ResourceTopLevelNode::supportedActions(Pro bool ResourceTopLevelNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { - return addFilesToResource(path(), filePaths, notAdded, QLatin1String("/"), QString()); + return addFilesToResource(filePath(), filePaths, notAdded, QLatin1String("/"), QString()); } bool ResourceTopLevelNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) @@ -225,31 +281,31 @@ bool ResourceTopLevelNode::removeFiles(const QStringList &filePaths, QStringList bool ResourceTopLevelNode::addPrefix(const QString &prefix, const QString &lang) { - ResourceFile file(path().toString()); + ResourceFile file(filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; int index = file.addPrefix(prefix, lang); if (index == -1) return false; - Core::DocumentManager::expectFileChange(path().toString()); + Core::DocumentManager::expectFileChange(filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(path().toString()); + Core::DocumentManager::unexpectFileChange(filePath().toString()); return true; } bool ResourceTopLevelNode::removePrefix(const QString &prefix, const QString &lang) { - ResourceFile file(path().toString()); + ResourceFile file(filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; for (int i = 0; i < file.prefixCount(); ++i) { if (file.prefix(i) == prefix && file.lang(i) == lang) { file.removePrefix(i); - Core::DocumentManager::expectFileChange(path().toString()); + Core::DocumentManager::expectFileChange(filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(path().toString()); + Core::DocumentManager::unexpectFileChange(filePath().toString()); return true; } } @@ -258,7 +314,7 @@ bool ResourceTopLevelNode::removePrefix(const QString &prefix, const QString &la bool ResourceTopLevelNode::removeNonExistingFiles() { - ResourceFile file(path().toString()); + ResourceFile file(filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; @@ -273,16 +329,16 @@ bool ResourceTopLevelNode::removeNonExistingFiles() } } - Core::DocumentManager::expectFileChange(path().toString()); + Core::DocumentManager::expectFileChange(filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(path().toString()); + Core::DocumentManager::unexpectFileChange(filePath().toString()); return true; } ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInformation(const QStringList &files, Node *context) const { QString name = QCoreApplication::translate("ResourceTopLevelNode", "%1 Prefix: %2") - .arg(path().fileName()) + .arg(filePath().fileName()) .arg(QLatin1Char('/')); int p = -1; @@ -298,6 +354,9 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceTopLevelNode::addNewInfor if (ResourceFolderNode *rfn = dynamic_cast<ResourceFolderNode *>(context)) if (rfn->prefix() == QLatin1String("/") && rfn->parentFolderNode() == this) p = 120; + if (SimpleResourceFolderNode *rfn = dynamic_cast<SimpleResourceFolderNode *>(context)) + if (rfn->prefix() == QLatin1String("/") && rfn->resourceNode() == this) + p = 120; } return AddNewInformation(name, p); @@ -309,7 +368,7 @@ bool ResourceTopLevelNode::showInSimpleTree() const } ResourceFolderNode::ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent) - : ProjectExplorer::FolderNode(Utils::FileName(parent->path()).appendPath(prefix)), + : ProjectExplorer::FolderNode(Utils::FileName(parent->filePath()).appendPath(prefix)), // TOOD Why add existing directory doesn't work m_topLevelNode(parent), m_prefix(prefix), @@ -344,14 +403,14 @@ QList<ProjectExplorer::ProjectAction> ResourceFolderNode::supportedActions(Proje bool ResourceFolderNode::addFiles(const QStringList &filePaths, QStringList *notAdded) { - return addFilesToResource(m_topLevelNode->path(), filePaths, notAdded, m_prefix, m_lang); + return addFilesToResource(m_topLevelNode->filePath(), filePaths, notAdded, m_prefix, m_lang); } bool ResourceFolderNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) { if (notRemoved) *notRemoved = filePaths; - ResourceFile file(m_topLevelNode->path().toString()); + ResourceFile file(m_topLevelNode->filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; int index = file.indexOfPrefix(m_prefix, m_lang); @@ -366,16 +425,16 @@ bool ResourceFolderNode::removeFiles(const QStringList &filePaths, QStringList * file.removeFile(index, j); --j; } - Core::DocumentManager::expectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::expectFileChange(m_topLevelNode->filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::unexpectFileChange(m_topLevelNode->filePath().toString()); return true; } bool ResourceFolderNode::renameFile(const QString &filePath, const QString &newFilePath) { - ResourceFile file(m_topLevelNode->path().toString()); + ResourceFile file(m_topLevelNode->filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; int index = file.indexOfPrefix(m_prefix, m_lang); @@ -385,9 +444,9 @@ bool ResourceFolderNode::renameFile(const QString &filePath, const QString &newF for (int j = 0; j < file.fileCount(index); ++j) { if (file.file(index, j) == filePath) { file.replaceFile(index, j, newFilePath); - Core::DocumentManager::expectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::expectFileChange(m_topLevelNode->filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::unexpectFileChange(m_topLevelNode->filePath().toString()); return true; } } @@ -397,7 +456,7 @@ bool ResourceFolderNode::renameFile(const QString &filePath, const QString &newF bool ResourceFolderNode::renamePrefix(const QString &prefix, const QString &lang) { - ResourceFile file(m_topLevelNode->path().toString()); + ResourceFile file(m_topLevelNode->filePath().toString()); if (file.load() != Core::IDocument::OpenResult::Success) return false; int index = file.indexOfPrefix(m_prefix, m_lang); @@ -407,16 +466,16 @@ bool ResourceFolderNode::renamePrefix(const QString &prefix, const QString &lang if (!file.replacePrefixAndLang(index, prefix, lang)) return false; - Core::DocumentManager::expectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::expectFileChange(m_topLevelNode->filePath().toString()); file.save(); - Core::DocumentManager::unexpectFileChange(m_topLevelNode->path().toString()); + Core::DocumentManager::unexpectFileChange(m_topLevelNode->filePath().toString()); return true; } ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInformation(const QStringList &files, Node *context) const { QString name = QCoreApplication::translate("ResourceTopLevelNode", "%1 Prefix: %2") - .arg(m_topLevelNode->path().fileName()) + .arg(m_topLevelNode->filePath().fileName()) .arg(displayName()); int p = -1; // never the default @@ -424,6 +483,11 @@ ProjectExplorer::FolderNode::AddNewInformation ResourceFolderNode::addNewInforma p = 105; // prefer against .pro and .pri files if (context == this) p = 120; + + if (SimpleResourceFolderNode *sfn = dynamic_cast<SimpleResourceFolderNode *>(context)) { + if (sfn->prefixNode() == this) + p = 120; + } } return AddNewInformation(name, p); @@ -457,8 +521,8 @@ void ResourceFolderNode::updateFiles(QList<ProjectExplorer::FileNode *> newList) QList<ProjectExplorer::FileNode *> filesToAdd; QList<ProjectExplorer::FileNode *> filesToRemove; - std::sort(oldList.begin(), oldList.end(), sortNodesByPath); - std::sort(newList.begin(), newList.end(), sortNodesByPath); + Utils::sort(oldList, sortNodesByPath); + Utils::sort(newList, sortNodesByPath); ProjectExplorer::compareSortedLists(oldList, newList, filesToRemove, filesToAdd, sortNodesByPath); @@ -468,12 +532,29 @@ void ResourceFolderNode::updateFiles(QList<ProjectExplorer::FileNode *> newList) qDeleteAll(ProjectExplorer::subtractSortedList(newList, filesToAdd, sortNodesByPath)); } +void ResourceFolderNode::updateFolders(QList<ProjectExplorer::FolderNode *> newList) +{ + QList<ProjectExplorer::FolderNode *> oldList = subFolderNodes(); + QList<ProjectExplorer::FolderNode *> foldersToAdd; + QList<ProjectExplorer::FolderNode *> foldersToRemove; + + Utils::sort(oldList, sortNodesByPath); + Utils::sort(newList, sortNodesByPath); + + ProjectExplorer::compareSortedLists(oldList, newList, foldersToRemove, foldersToAdd, sortNodesByPath); + + removeFolderNodes(foldersToRemove); + addFolderNodes(foldersToAdd); + + qDeleteAll(ProjectExplorer::subtractSortedList(newList, foldersToAdd, sortNodesByPath)); +} + ResourceFileWatcher::ResourceFileWatcher(ResourceTopLevelNode *node) : IDocument(0), m_node(node) { setId("ResourceNodeWatcher"); setMimeType(QLatin1String(ResourceEditor::Constants::C_RESOURCE_MIMETYPE)); - setFilePath(node->path()); + setFilePath(node->filePath()); } bool ResourceFileWatcher::save(QString *errorString, const QString &fileName, bool autoSave) @@ -521,13 +602,11 @@ bool ResourceFileWatcher::reload(QString *errorString, ReloadFlag flag, ChangeTy return true; } -ResourceFileNode::ResourceFileNode(const Utils::FileName &filePath, const QString &qrcPath, ResourceTopLevelNode *topLevel) - : ProjectExplorer::FileNode(filePath, ProjectExplorer::UnknownFileType, false), - m_qrcPath(qrcPath) - +ResourceFileNode::ResourceFileNode(const Utils::FileName &filePath, const QString &qrcPath, const QString &displayName) + : ProjectExplorer::FileNode(filePath, ProjectExplorer::UnknownFileType, false) + , m_qrcPath(qrcPath) + , m_displayName(displayName) { - QDir baseDir = topLevel->path().toFileInfo().absoluteDir(); - m_displayName = QDir(baseDir).relativeFilePath(filePath.toString()); } QString ResourceFileNode::displayName() const @@ -546,3 +625,155 @@ QList<ProjectExplorer::ProjectAction> ResourceFileNode::supportedActions(Project actions.removeOne(ProjectExplorer::HidePathActions); return actions; } + +QString SimpleResourceFolderNode::displayName() const +{ + if (!m_displayName.isEmpty()) + return m_displayName; + return FolderNode::displayName(); +} + +SimpleResourceFolderNode::SimpleResourceFolderNode(const QString &afolderName, const QString &displayName, + const QString &prefix, const QString &lang, + Utils::FileName absolutePath, ResourceTopLevelNode *topLevel, ResourceFolderNode *prefixNode) + : ProjectExplorer::FolderNode(absolutePath) + , m_folderName(afolderName) + , m_displayName(displayName) + , m_prefix(prefix) + , m_lang(lang) + , m_topLevelNode(topLevel) + , m_prefixNode(prefixNode) +{ + +} + +QList<ProjectExplorer::ProjectAction> SimpleResourceFolderNode::supportedActions(ProjectExplorer::Node *node) const +{ + Q_UNUSED(node) + QList<ProjectExplorer::ProjectAction> actions; + actions << ProjectExplorer::AddNewFile + << ProjectExplorer::AddExistingFile + << ProjectExplorer::AddExistingDirectory + << ProjectExplorer::RemoveFile + << ProjectExplorer::Rename // Note: only works for the filename, works akwardly for relative file paths + << ProjectExplorer::InheritedFromParent; // do not add to list of projects when adding new file + + return actions; +} + +bool SimpleResourceFolderNode::addFiles(const QStringList &filePaths, QStringList *notAdded) +{ + return addFilesToResource(m_topLevelNode->filePath(), filePaths, notAdded, m_prefix, m_lang); +} + +bool SimpleResourceFolderNode::removeFiles(const QStringList &filePaths, QStringList *notRemoved) +{ + if (notRemoved) + *notRemoved = filePaths; + ResourceFile file(m_topLevelNode->filePath().toString()); + if (file.load() != Core::IDocument::OpenResult::Success) + return false; + int index = file.indexOfPrefix(m_prefix, m_lang); + if (index == -1) + return false; + for (int j = 0; j < file.fileCount(index); ++j) { + const QString fileName = file.file(index, j); + if (!filePaths.contains(fileName)) + continue; + if (notRemoved) + notRemoved->removeOne(fileName); + file.removeFile(index, j); + --j; + } + Core::DocumentManager::expectFileChange(m_topLevelNode->filePath().toString()); + file.save(); + Core::DocumentManager::unexpectFileChange(m_topLevelNode->filePath().toString()); + + return true; +} + +bool SimpleResourceFolderNode::renameFile(const QString &filePath, const QString &newFilePath) +{ + ResourceFile file(m_topLevelNode->filePath().toString()); + if (file.load() != Core::IDocument::OpenResult::Success) + return false; + int index = file.indexOfPrefix(m_prefix, m_lang); + if (index == -1) + return false; + + for (int j = 0; j < file.fileCount(index); ++j) { + if (file.file(index, j) == filePath) { + file.replaceFile(index, j, newFilePath); + Core::DocumentManager::expectFileChange(m_topLevelNode->filePath().toString()); + file.save(); + Core::DocumentManager::unexpectFileChange(m_topLevelNode->filePath().toString()); + return true; + } + } + + return false; +} + +QString SimpleResourceFolderNode::prefix() const +{ + return m_prefix; +} + +ResourceTopLevelNode *SimpleResourceFolderNode::resourceNode() const +{ + return m_topLevelNode; +} + +ResourceFolderNode *SimpleResourceFolderNode::prefixNode() const +{ + return m_prefixNode; +} + +void SimpleResourceFolderNode::updateFiles(QList<ProjectExplorer::FileNode *> newList) +{ + QList<ProjectExplorer::FileNode *> oldList = fileNodes(); + QList<ProjectExplorer::FileNode *> filesToAdd; + QList<ProjectExplorer::FileNode *> filesToRemove; + + Utils::sort(oldList, sortNodesByPath); + Utils::sort(newList, sortNodesByPath); + + ProjectExplorer::compareSortedLists(oldList, newList, filesToRemove, filesToAdd, sortNodesByPath); + + removeFileNodes(filesToRemove); + addFileNodes(filesToAdd); + + qDeleteAll(ProjectExplorer::subtractSortedList(newList, filesToAdd, sortNodesByPath)); +} + +void SimpleResourceFolderNode::updateFolders(QList<ProjectExplorer::FolderNode *> newList) +{ + QList<ProjectExplorer::FolderNode *> oldList = subFolderNodes(); + QList<ProjectExplorer::FolderNode *> foldersToAdd; + QList<ProjectExplorer::FolderNode *> foldersToRemove; + + Utils::sort(oldList, sortNodesByPath); + Utils::sort(newList, sortNodesByPath); + + ProjectExplorer::compareSortedLists(oldList, newList, foldersToRemove, foldersToAdd, sortNodesByPath); + + removeFolderNodes(foldersToRemove); + addFolderNodes(foldersToAdd); + + qDeleteAll(ProjectExplorer::subtractSortedList(newList, foldersToAdd, sortNodesByPath)); +} + + +void SimpleResourceFolderNode::addFilesAndSubfolders(QMap<PrefixFolderLang, + QList<ProjectExplorer::FileNode *>> filesToAdd, + QMap<PrefixFolderLang, + QList<ProjectExplorer::FolderNode*> > foldersToAdd, + const QString &prefix, const QString &lang) +{ + updateFiles(filesToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); + updateFolders(foldersToAdd.value(PrefixFolderLang(prefix, m_folderName, lang))); + foreach (FolderNode* subNode, subFolderNodes()) { + SimpleResourceFolderNode* sn = static_cast<SimpleResourceFolderNode*>(subNode); + sn->addFilesAndSubfolders(filesToAdd, foldersToAdd, prefix, lang); + } +} diff --git a/src/plugins/resourceeditor/resourcenode.h b/src/plugins/resourceeditor/resourcenode.h index c900b1cc80..9deb034fc3 100644 --- a/src/plugins/resourceeditor/resourcenode.h +++ b/src/plugins/resourceeditor/resourcenode.h @@ -46,18 +46,20 @@ class RESOURCE_EXPORT ResourceTopLevelNode : public ProjectExplorer::FolderNode { public: ResourceTopLevelNode(const Utils::FileName &filePath, FolderNode *parent); - ~ResourceTopLevelNode(); + ~ResourceTopLevelNode() override; void update(); - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; - bool addFiles(const QStringList &filePaths, QStringList *notAdded); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved); + QString addFileFilter() const override; + + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; + bool addFiles(const QStringList &filePaths, QStringList *notAdded) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved) override; bool addPrefix(const QString &prefix, const QString &lang); bool removePrefix(const QString &prefix, const QString &lang); - AddNewInformation addNewInformation(const QStringList &files, Node *context) const; - bool showInSimpleTree() const; + AddNewInformation addNewInformation(const QStringList &files, Node *context) const override; + bool showInSimpleTree() const override; bool removeNonExistingFiles(); private: @@ -65,47 +67,105 @@ private: }; namespace Internal { + +class PrefixFolderLang +{ +public: + PrefixFolderLang(QString prefix, QString folder, QString lang) + : m_prefix(prefix) + , m_folder(folder) + , m_lang(lang) + {} + + bool operator<(const PrefixFolderLang &other) const + { + if (m_prefix != other.m_prefix) + return m_prefix < other.m_prefix; + if (m_folder != other.m_folder) + return m_folder < other.m_folder; + if (m_lang != other.m_lang) + return m_lang < other.m_lang; + return false; + } +private: + QString m_prefix; + QString m_folder; + QString m_lang; +}; + class ResourceFolderNode : public ProjectExplorer::FolderNode { friend class ResourceEditor::ResourceTopLevelNode; // for updateFiles public: ResourceFolderNode(const QString &prefix, const QString &lang, ResourceTopLevelNode *parent); - ~ResourceFolderNode(); + ~ResourceFolderNode() override; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; - QString displayName() const; + QString displayName() const override; - bool addFiles(const QStringList &filePaths, QStringList *notAdded); - bool removeFiles(const QStringList &filePaths, QStringList *notRemoved); - bool renameFile(const QString &filePath, const QString &newFilePath); + bool addFiles(const QStringList &filePaths, QStringList *notAdded) override; + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved) override; + bool renameFile(const QString &filePath, const QString &newFilePath) override; bool renamePrefix(const QString &prefix, const QString &lang); - AddNewInformation addNewInformation(const QStringList &files, Node *context) const; + AddNewInformation addNewInformation(const QStringList &files, Node *context) const override; QString prefix() const; QString lang() const; ResourceTopLevelNode *resourceNode() const; private: + void updateFolders(QList<ProjectExplorer::FolderNode *> newList); void updateFiles(QList<ProjectExplorer::FileNode *> newList); ResourceTopLevelNode *m_topLevelNode; QString m_prefix; QString m_lang; }; +class SimpleResourceFolderNode : public ProjectExplorer::FolderNode +{ + friend class ResourceEditor::ResourceTopLevelNode; +public: + QString displayName() const; + SimpleResourceFolderNode(const QString &afolderName, const QString &displayName, + const QString &prefix, const QString &lang, Utils::FileName absolutePath, + ResourceTopLevelNode *topLevel, ResourceFolderNode *prefixNode); + QList<ProjectExplorer::ProjectAction> supportedActions(ProjectExplorer::Node *node) const; + void addFilesAndSubfolders(QMap<PrefixFolderLang, QList<ProjectExplorer::FileNode *>> filesToAdd, + QMap<PrefixFolderLang, QList<ProjectExplorer::FolderNode *>> foldersToAdd, + const QString &prefix, const QString &lang); + bool addFiles(const QStringList &filePaths, QStringList *notAdded); + bool removeFiles(const QStringList &filePaths, QStringList *notRemoved); + bool renameFile(const QString &filePath, const QString &newFilePath); + + QString prefix() const; + ResourceTopLevelNode *resourceNode() const; + ResourceFolderNode *prefixNode() const; + +private: + void updateFiles(QList<ProjectExplorer::FileNode *> newList); + void updateFolders(QList<ProjectExplorer::FolderNode *> newList); + QString m_folderName; + QString m_displayName; + QString m_prefix; + QString m_lang; + ResourceTopLevelNode *m_topLevelNode; + ResourceFolderNode *m_prefixNode; +}; + class ResourceFileNode : public ProjectExplorer::FileNode { public: - ResourceFileNode(const Utils::FileName &filePath, const QString &qrcPath, ResourceTopLevelNode *topLevel); + ResourceFileNode(const Utils::FileName &filePath, const QString &qrcPath, const QString &displayName); - QString displayName() const; + QString displayName() const override; QString qrcPath() const; - QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const; + QList<ProjectExplorer::ProjectAction> supportedActions(Node *node) const override; private: - QString m_displayName; QString m_qrcPath; + QString m_displayName; }; class ResourceFileWatcher : public Core::IDocument diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 2eadd77843..951e967d74 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -251,7 +251,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e CMD_ID_DIFF_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+S,Meta+D") : tr("Alt+S,Alt+D"))); - connect(m_diffCurrentAction, SIGNAL(triggered()), this, SLOT(diffCurrentFile())); + connect(m_diffCurrentAction, &QAction::triggered, this, &SubversionPlugin::diffCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -259,8 +259,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e command = ActionManager::registerAction(m_filelogCurrentAction, CMD_ID_FILELOG_CURRENT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_filelogCurrentAction, SIGNAL(triggered()), this, - SLOT(filelogCurrentFile())); + connect(m_filelogCurrentAction, &QAction::triggered, this, &SubversionPlugin::filelogCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -268,8 +267,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e command = ActionManager::registerAction(m_annotateCurrentAction, CMD_ID_ANNOTATE_CURRENT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_annotateCurrentAction, SIGNAL(triggered()), this, - SLOT(annotateCurrentFile())); + connect(m_annotateCurrentAction, &QAction::triggered, this, &SubversionPlugin::annotateCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -280,7 +278,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+S,Meta+A") : tr("Alt+S,Alt+A"))); - connect(m_addAction, SIGNAL(triggered()), this, SLOT(addCurrentFile())); + connect(m_addAction, &QAction::triggered, this, &SubversionPlugin::addCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -289,7 +287,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e CMD_ID_COMMIT_CURRENT, context); command->setAttribute(Command::CA_UpdateText); command->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+S,Meta+C") : tr("Alt+S,Alt+C"))); - connect(m_commitCurrentAction, SIGNAL(triggered()), this, SLOT(startCommitCurrentFile())); + connect(m_commitCurrentAction, &QAction::triggered, this, &SubversionPlugin::startCommitCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -305,7 +303,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e command = ActionManager::registerAction(m_revertAction, CMD_ID_REVERT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_revertAction, SIGNAL(triggered()), this, SLOT(revertCurrentFile())); + connect(m_revertAction, &QAction::triggered, this, &SubversionPlugin::revertCurrentFile); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -315,7 +313,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e command = ActionManager::registerAction(m_diffProjectAction, CMD_ID_DIFF_PROJECT, context); command->setAttribute(Command::CA_UpdateText); - connect(m_diffProjectAction, SIGNAL(triggered()), this, SLOT(diffProject())); + connect(m_diffProjectAction, &QAction::triggered, this, &SubversionPlugin::diffProject); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -323,27 +321,27 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e command = ActionManager::registerAction(m_statusProjectAction, CMD_ID_STATUS, context); command->setAttribute(Command::CA_UpdateText); - connect(m_statusProjectAction, SIGNAL(triggered()), this, SLOT(projectStatus())); + connect(m_statusProjectAction, &QAction::triggered, this, &SubversionPlugin::projectStatus); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_logProjectAction = new ParameterAction(tr("Log Project"), tr("Log Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_logProjectAction, CMD_ID_PROJECTLOG, context); command->setAttribute(Command::CA_UpdateText); - connect(m_logProjectAction, SIGNAL(triggered()), this, SLOT(logProject())); + connect(m_logProjectAction, &QAction::triggered, this, &SubversionPlugin::logProject); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_updateProjectAction = new ParameterAction(tr("Update Project"), tr("Update Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_updateProjectAction, CMD_ID_UPDATE, context); - connect(m_updateProjectAction, SIGNAL(triggered()), this, SLOT(updateProject())); + connect(m_updateProjectAction, &QAction::triggered, this, &SubversionPlugin::updateProject); command->setAttribute(Command::CA_UpdateText); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_commitProjectAction = new ParameterAction(tr("Commit Project"), tr("Commit Project \"%1\""), ParameterAction::EnabledWithParameter, this); command = ActionManager::registerAction(m_commitProjectAction, CMD_ID_COMMIT_PROJECT, context); - connect(m_commitProjectAction, SIGNAL(triggered()), this, SLOT(startCommitProject())); + connect(m_commitProjectAction, &QAction::triggered, this, &SubversionPlugin::startCommitProject); command->setAttribute(Command::CA_UpdateText); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -352,44 +350,44 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e m_diffRepositoryAction = new QAction(tr("Diff Repository"), this); command = ActionManager::registerAction(m_diffRepositoryAction, CMD_ID_REPOSITORYDIFF, context); - connect(m_diffRepositoryAction, SIGNAL(triggered()), this, SLOT(diffRepository())); + connect(m_diffRepositoryAction, &QAction::triggered, this, &SubversionPlugin::diffRepository); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_statusRepositoryAction = new QAction(tr("Repository Status"), this); command = ActionManager::registerAction(m_statusRepositoryAction, CMD_ID_REPOSITORYSTATUS, context); - connect(m_statusRepositoryAction, SIGNAL(triggered()), this, SLOT(statusRepository())); + connect(m_statusRepositoryAction, &QAction::triggered, this, &SubversionPlugin::statusRepository); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_logRepositoryAction = new QAction(tr("Log Repository"), this); command = ActionManager::registerAction(m_logRepositoryAction, CMD_ID_REPOSITORYLOG, context); - connect(m_logRepositoryAction, SIGNAL(triggered()), this, SLOT(logRepository())); + connect(m_logRepositoryAction, &QAction::triggered, this, &SubversionPlugin::logRepository); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_updateRepositoryAction = new QAction(tr("Update Repository"), this); command = ActionManager::registerAction(m_updateRepositoryAction, CMD_ID_REPOSITORYUPDATE, context); - connect(m_updateRepositoryAction, SIGNAL(triggered()), this, SLOT(updateRepository())); + connect(m_updateRepositoryAction, &QAction::triggered, this, &SubversionPlugin::updateRepository); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_commitAllAction = new QAction(tr("Commit All Files"), this); command = ActionManager::registerAction(m_commitAllAction, CMD_ID_COMMIT_ALL, context); - connect(m_commitAllAction, SIGNAL(triggered()), this, SLOT(startCommitAll())); + connect(m_commitAllAction, &QAction::triggered, this, &SubversionPlugin::startCommitAll); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); m_describeAction = new QAction(tr("Describe..."), this); command = ActionManager::registerAction(m_describeAction, CMD_ID_DESCRIBE, context); - connect(m_describeAction, SIGNAL(triggered()), this, SLOT(slotDescribe())); + connect(m_describeAction, &QAction::triggered, this, &SubversionPlugin::slotDescribe); subversionMenu->addAction(command); m_revertRepositoryAction = new QAction(tr("Revert Repository..."), this); command = ActionManager::registerAction(m_revertRepositoryAction, CMD_ID_REVERT_ALL, context); - connect(m_revertRepositoryAction, SIGNAL(triggered()), this, SLOT(revertAll())); + connect(m_revertRepositoryAction, &QAction::triggered, this, &SubversionPlugin::revertAll); subversionMenu->addAction(command); m_commandLocator->appendCommand(command); @@ -399,7 +397,7 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *e m_submitCurrentLogAction = new QAction(VcsBaseSubmitEditor::submitIcon(), tr("Commit"), this); command = ActionManager::registerAction(m_submitCurrentLogAction, SUBMIT_CURRENT, svncommitcontext); command->setAttribute(Command::CA_UpdateText); - connect(m_submitCurrentLogAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); + connect(m_submitCurrentLogAction, &QAction::triggered, this, &SubversionPlugin::submitCurrentLog); m_submitDiffAction = new QAction(VcsBaseSubmitEditor::diffIcon(), tr("Diff &Selected Files"), this); ActionManager::registerAction(m_submitDiffAction , DIFF_SELECTED, svncommitcontext); diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index 4ed1051a7e..3e75ee1eaf 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -95,10 +95,22 @@ public: unsigned flags, QTextCodec *outputCodec = 0) const; public slots: + void annotateVersion(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber); + void describe(const QString &source, const QString &changeNr); void vcsAnnotate(const QString &workingDir, const QString &file, const QString &revision = QString(), int lineNumber = -1); +#ifdef WITH_TESTS private slots: + void testLogResolving(); +#endif + +protected: + void updateActions(VcsBase::VcsBasePlugin::ActionState); + bool submitEditorAboutToClose(); + +private: void addCurrentFile(); void revertCurrentFile(); void diffProject(); @@ -110,10 +122,7 @@ private slots: void revertAll(); void filelogCurrentFile(); void annotateCurrentFile(); - void annotateVersion(const QString &workingDirectory, const QString &file, - const QString &revision, int lineNumber); void projectStatus(); - void describe(const QString &source, const QString &changeNr); void slotDescribe(); void updateProject(); void submitCurrentLog(); @@ -123,15 +132,7 @@ private slots: void diffRepository(); void statusRepository(); void updateRepository(); -#ifdef WITH_TESTS - void testLogResolving(); -#endif -protected: - void updateActions(VcsBase::VcsBasePlugin::ActionState); - bool submitEditorAboutToClose(); - -private: inline bool isCommitEditorOpen() const; Core::IEditor *showOutputInEditor(const QString &title, const QString &output, int editorType, const QString &source, diff --git a/src/plugins/tasklist/tasklistplugin.cpp b/src/plugins/tasklist/tasklistplugin.cpp index 649174e11a..28df097368 100644 --- a/src/plugins/tasklist/tasklistplugin.cpp +++ b/src/plugins/tasklist/tasklistplugin.cpp @@ -216,8 +216,8 @@ bool TaskListPlugin::initialize(const QStringList &arguments, QString *errorMess addAutoReleasedObject(m_fileFactory); addAutoReleasedObject(new StopMonitoringHandler); - connect(SessionManager::instance(), SIGNAL(sessionLoaded(QString)), - this, SLOT(loadDataFromSession())); + connect(SessionManager::instance(), &SessionManager::sessionLoaded, + this, &TaskListPlugin::loadDataFromSession); return true; } diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp index b5db21d214..c73b88c440 100644 --- a/src/plugins/texteditor/outlinefactory.cpp +++ b/src/plugins/texteditor/outlinefactory.cpp @@ -32,6 +32,7 @@ #include <coreplugin/coreconstants.h> #include <coreplugin/icore.h> #include <coreplugin/editormanager/editormanager.h> +#include <utils/themehelper.h> #include <QToolButton> #include <QLabel> @@ -57,14 +58,16 @@ OutlineWidgetStack::OutlineWidgetStack(OutlineFactory *factory) : addWidget(label); m_toggleSync = new QToolButton; - m_toggleSync->setIcon(QIcon(QLatin1String(Core::Constants::ICON_LINK))); + m_toggleSync->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_LINK))); m_toggleSync->setCheckable(true); m_toggleSync->setChecked(true); m_toggleSync->setToolTip(tr("Synchronize with Editor")); connect(m_toggleSync, SIGNAL(clicked(bool)), this, SLOT(toggleCursorSynchronization())); m_filterButton = new QToolButton; - m_filterButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + m_filterButton->setIcon( + Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); m_filterButton->setToolTip(tr("Filter tree")); m_filterButton->setPopupMode(QToolButton::InstantPopup); m_filterButton->setProperty("noArrow", true); diff --git a/src/plugins/todo/keyword.cpp b/src/plugins/todo/keyword.cpp index fbae123a28..22ccd27301 100644 --- a/src/plugins/todo/keyword.cpp +++ b/src/plugins/todo/keyword.cpp @@ -31,6 +31,9 @@ #include "keyword.h" +#include <coreplugin/coreconstants.h> +#include <utils/themehelper.h> + namespace Todo { namespace Internal { @@ -41,7 +44,7 @@ Keyword::Keyword() : color(Qt::white) bool Keyword::equals(const Keyword &other) const { return (this->name == other.name) - && (this->iconResource == other.iconResource) + && (this->iconType == other.iconType) && (this->color == other.color); } diff --git a/src/plugins/todo/keyword.h b/src/plugins/todo/keyword.h index 1ba8c5be1b..980e22e8ca 100644 --- a/src/plugins/todo/keyword.h +++ b/src/plugins/todo/keyword.h @@ -32,6 +32,8 @@ #ifndef KEYWORD_H #define KEYWORD_H +#include "todoicons.h" + #include <QColor> #include <QString> #include <QList> @@ -46,7 +48,7 @@ public: Keyword(); QString name; - QString iconResource; + IconType iconType; QColor color; bool equals(const Keyword &other) const; }; diff --git a/src/plugins/todo/keyworddialog.cpp b/src/plugins/todo/keyworddialog.cpp index 7110db011b..9fb9f2022a 100644 --- a/src/plugins/todo/keyworddialog.cpp +++ b/src/plugins/todo/keyworddialog.cpp @@ -36,6 +36,7 @@ #include "lineparser.h" #include <coreplugin/coreconstants.h> +#include <utils/themehelper.h> #include <QColorDialog> @@ -49,7 +50,7 @@ KeywordDialog::KeywordDialog(const Keyword &keyword, const QSet<QString> &alread m_alreadyUsedKeywordNames(alreadyUsedKeywordNames) { ui->setupUi(this); - setupListWidget(keyword.iconResource); + setupListWidget(keyword.iconType); setupColorWidgets(keyword.color); ui->keywordNameEdit->setText(keyword.name); ui->errorLabel->hide(); @@ -67,7 +68,7 @@ Keyword KeywordDialog::keyword() { Keyword result; result.name = keywordName(); - result.iconResource = ui->listWidget->currentItem()->data(Qt::UserRole).toString(); + result.iconType = static_cast<IconType>(ui->listWidget->currentItem()->data(Qt::UserRole).toInt()); result.color = ui->colorEdit->text(); return result; @@ -84,31 +85,27 @@ void KeywordDialog::acceptButtonClicked() accept(); } -void KeywordDialog::setupListWidget(const QString &selectedIcon) +void KeywordDialog::setupListWidget(IconType selectedIcon) { ui->listWidget->setViewMode(QListWidget::IconMode); ui->listWidget->setDragEnabled(false); - const QString infoIconName = QLatin1String(Core::Constants::ICON_INFO); - QListWidgetItem *item = new QListWidgetItem(QIcon(infoIconName), - QLatin1String("information")); - item->setData(Qt::UserRole, infoIconName); + + QListWidgetItem *item = + new QListWidgetItem(icon(IconType::Info), QLatin1String("information")); + item->setData(Qt::UserRole, static_cast<int>(IconType::Info)); ui->listWidget->addItem(item); - const QString warningIconName = QLatin1String(Core::Constants::ICON_WARNING); - item = new QListWidgetItem(QIcon(warningIconName), - QLatin1String("warning")); - item->setData(Qt::UserRole, warningIconName); + item = new QListWidgetItem(icon(IconType::Warning), QLatin1String("warning")); + item->setData(Qt::UserRole, static_cast<int>(IconType::Warning)); ui->listWidget->addItem(item); - const QString errorIconName = QLatin1String(Core::Constants::ICON_ERROR); - item = new QListWidgetItem(QIcon(errorIconName), - QLatin1String("error")); - item->setData(Qt::UserRole, errorIconName); + item = new QListWidgetItem(icon(IconType::Error), QLatin1String("error")); + item->setData(Qt::UserRole, static_cast<int>(IconType::Error)); ui->listWidget->addItem(item); for (int i = 0; i < ui->listWidget->count(); ++i) { item = ui->listWidget->item(i); - if (item->data(Qt::UserRole).toString() == selectedIcon) { + if (static_cast<IconType>(item->data(Qt::UserRole).toInt()) == selectedIcon) { ui->listWidget->setCurrentItem(item); break; } diff --git a/src/plugins/todo/keyworddialog.h b/src/plugins/todo/keyworddialog.h index a22fbd3421..c5e676eb79 100644 --- a/src/plugins/todo/keyworddialog.h +++ b/src/plugins/todo/keyworddialog.h @@ -41,6 +41,7 @@ namespace Internal { namespace Ui { class KeywordDialog; } class Keyword; +enum class IconType; class KeywordDialog : public QDialog { @@ -57,7 +58,7 @@ private slots: void acceptButtonClicked(); private: - void setupListWidget(const QString &selectedIcon); + void setupListWidget(IconType selectedIcon); void setupColorWidgets(const QColor &color); bool canAccept(); bool isKeywordNameCorrect(); diff --git a/src/plugins/todo/lineparser.cpp b/src/plugins/todo/lineparser.cpp index fefc7338a8..e39276e39a 100644 --- a/src/plugins/todo/lineparser.cpp +++ b/src/plugins/todo/lineparser.cpp @@ -175,7 +175,7 @@ QList<TodoItem> LineParser::todoItemsFromKeywordEntries(const QList<KeywordEntry TodoItem item; item.text = m_keywords.at(entry.keywordIndex).name + entry.text; item.color = m_keywords.at(entry.keywordIndex).color; - item.iconResource = m_keywords.at(entry.keywordIndex).iconResource; + item.iconType = m_keywords.at(entry.keywordIndex).iconType; todoItems << item; } diff --git a/src/plugins/todo/optionsdialog.cpp b/src/plugins/todo/optionsdialog.cpp index 8536455423..481f236003 100644 --- a/src/plugins/todo/optionsdialog.cpp +++ b/src/plugins/todo/optionsdialog.cpp @@ -36,6 +36,8 @@ #include "settings.h" #include "constants.h" +#include <utils/themehelper.h> + namespace Todo { namespace Internal { @@ -69,8 +71,9 @@ void OptionsDialog::setSettings(const Settings &settings) void OptionsDialog::addToKeywordsList(const Keyword &keyword) { - QListWidgetItem *item = new QListWidgetItem(QIcon(keyword.iconResource), keyword.name); - item->setData(Qt::UserRole, keyword.iconResource); + QListWidgetItem *item = new QListWidgetItem( + icon(keyword.iconType), keyword.name); + item->setData(Qt::UserRole, static_cast<int>(keyword.iconType)); item->setBackgroundColor(keyword.color); ui->keywordsList->addItem(item); } @@ -111,7 +114,7 @@ void OptionsDialog::editKeyword(QListWidgetItem *item) { Keyword keyword; keyword.name = item->text(); - keyword.iconResource = item->data(Qt::UserRole).toString(); + keyword.iconType = static_cast<IconType>(item->data(Qt::UserRole).toInt()); keyword.color = item->backgroundColor(); QSet<QString> keywordNamesButThis = keywordNames(); @@ -120,9 +123,9 @@ void OptionsDialog::editKeyword(QListWidgetItem *item) KeywordDialog *keywordDialog = new KeywordDialog(keyword, keywordNamesButThis, this); if (keywordDialog->exec() == QDialog::Accepted) { keyword = keywordDialog->keyword(); - item->setIcon(QIcon(keyword.iconResource)); + item->setIcon(icon(keyword.iconType)); item->setText(keyword.name); - item->setData(Qt::UserRole, keyword.iconResource); + item->setData(Qt::UserRole, static_cast<int>(keyword.iconType)); item->setBackgroundColor(keyword.color); } } @@ -174,7 +177,7 @@ Settings OptionsDialog::settingsFromUi() Keyword keyword; keyword.name = item->text(); - keyword.iconResource = item->data(Qt::UserRole).toString(); + keyword.iconType = static_cast<IconType>(item->data(Qt::UserRole).toInt()); keyword.color = item->backgroundColor(); settings.keywords << keyword; diff --git a/src/plugins/todo/settings.cpp b/src/plugins/todo/settings.cpp index a6aaee6cb8..8ecaa00bf4 100644 --- a/src/plugins/todo/settings.cpp +++ b/src/plugins/todo/settings.cpp @@ -48,12 +48,12 @@ void Settings::save(QSettings *settings) const if (const int size = keywords.size()) { const QString nameKey = QLatin1String("name"); const QString colorKey = QLatin1String("color"); - const QString iconResourceKey = QLatin1String("iconResource"); + const QString iconTypeKey = QLatin1String("iconType"); for (int i = 0; i < size; ++i) { settings->setArrayIndex(i); settings->setValue(nameKey, keywords.at(i).name); settings->setValue(colorKey, keywords.at(i).color); - settings->setValue(iconResourceKey, keywords.at(i).iconResource); + settings->setValue(iconTypeKey, static_cast<int>(keywords.at(i).iconType)); } } settings->endArray(); @@ -62,6 +62,17 @@ void Settings::save(QSettings *settings) const settings->sync(); } +// Compatibility helper for transition from 3.6 to higher +// TODO: remove in 4.0 +IconType resourceToTypeKey(const QString &key) +{ + if (key.contains(QLatin1String("error"))) + return IconType::Error; + else if (key.contains(QLatin1String("warning"))) + return IconType::Warning; + return IconType::Info; +} + void Settings::load(QSettings *settings) { setDefault(); @@ -76,13 +87,16 @@ void Settings::load(QSettings *settings) if (keywordsSize > 0) { const QString nameKey = QLatin1String("name"); const QString colorKey = QLatin1String("color"); - const QString iconResourceKey = QLatin1String("iconResource"); + const QString iconResourceKey = QLatin1String("iconResource"); // Legacy since 3.7 TODO: remove in 4.0 + const QString iconTypeKey = QLatin1String("iconType"); for (int i = 0; i < keywordsSize; ++i) { settings->setArrayIndex(i); Keyword keyword; keyword.name = settings->value(nameKey).toString(); keyword.color = settings->value(colorKey).value<QColor>(); - keyword.iconResource = settings->value(iconResourceKey).toString(); + keyword.iconType = settings->contains(iconTypeKey) ? + static_cast<IconType>(settings->value(iconTypeKey).toInt()) + : resourceToTypeKey(settings->value(iconResourceKey).toString()); newKeywords << keyword; } keywords = newKeywords; @@ -101,27 +115,27 @@ void Settings::setDefault() Keyword keyword; keyword.name = QLatin1String("TODO"); - keyword.iconResource = QLatin1String(Core::Constants::ICON_WARNING); + keyword.iconType = IconType::Warning; keyword.color = QColor(QLatin1String(Constants::COLOR_TODO_BG)); keywords.append(keyword); keyword.name = QLatin1String("NOTE"); - keyword.iconResource = QLatin1String(Core::Constants::ICON_INFO); + keyword.iconType = IconType::Info; keyword.color = QColor(QLatin1String(Constants::COLOR_NOTE_BG)); keywords.append(keyword); keyword.name = QLatin1String("FIXME"); - keyword.iconResource = QLatin1String(Core::Constants::ICON_ERROR); + keyword.iconType = IconType::Error; keyword.color = QColor(QLatin1String(Constants::COLOR_FIXME_BG)); keywords.append(keyword); keyword.name = QLatin1String("BUG"); - keyword.iconResource = QLatin1String(Core::Constants::ICON_ERROR); + keyword.iconType = IconType::Error; keyword.color = QColor(QLatin1String(Constants::COLOR_BUG_BG)); keywords.append(keyword); keyword.name = QLatin1String("WARNING"); - keyword.iconResource = QLatin1String(Core::Constants::ICON_WARNING); + keyword.iconType = IconType::Warning; keyword.color = QColor(QLatin1String(Constants::COLOR_WARNING_BG)); keywords.append(keyword); } diff --git a/src/plugins/todo/todo.pro b/src/plugins/todo/todo.pro index a485a50a8a..7271425959 100644 --- a/src/plugins/todo/todo.pro +++ b/src/plugins/todo/todo.pro @@ -17,7 +17,8 @@ HEADERS += todoplugin.h \ lineparser.h \ todooutputtreeview.h \ todooutputtreeviewdelegate.h \ - todoprojectsettingswidget.h + todoprojectsettingswidget.h \ + todoicons.h SOURCES += todoplugin.cpp \ keyword.cpp \ @@ -34,7 +35,8 @@ SOURCES += todoplugin.cpp \ lineparser.cpp \ todooutputtreeview.cpp \ todooutputtreeviewdelegate.cpp \ - todoprojectsettingswidget.cpp + todoprojectsettingswidget.cpp \ + todoicons.cpp RESOURCES += \ todoplugin.qrc diff --git a/src/plugins/todo/todo.qbs b/src/plugins/todo/todo.qbs index e72b2862e6..49d6d7f33e 100644 --- a/src/plugins/todo/todo.qbs +++ b/src/plugins/todo/todo.qbs @@ -35,6 +35,8 @@ QtcPlugin { "qmljstodoitemsscanner.h", "settings.cpp", "settings.h", + "todoicons.h", + "todoicons.cpp", "todoitem.h", "todoitemsmodel.cpp", "todoitemsmodel.h", diff --git a/src/plugins/projectexplorer/corelistenercheckingforrunningbuild.h b/src/plugins/todo/todoicons.cpp index e28b3ff1da..0ae9fd95ad 100644 --- a/src/plugins/projectexplorer/corelistenercheckingforrunningbuild.h +++ b/src/plugins/todo/todoicons.cpp @@ -1,6 +1,7 @@ -/**************************************************************************** +/************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Dmitry Savchenko +** Copyright (C) 2015 Vasiliy Sorokin ** Contact: http://www.qt.io/licensing ** ** This file is part of Qt Creator. @@ -28,25 +29,35 @@ ** ****************************************************************************/ -#ifndef CORELISTENERCHECKINGFORRUNNINGBUILD_H -#define CORELISTENERCHECKINGFORRUNNINGBUILD_H +#include <coreplugin/coreconstants.h> +#include <utils/themehelper.h> -#include <coreplugin/icorelistener.h> - -namespace ProjectExplorer { +#include "todoicons.h" +namespace Todo { namespace Internal { -class CoreListener : public Core::ICoreListener +QIcon icon(IconType type) { - Q_OBJECT -public: - CoreListener(); - - bool coreAboutToClose(); -}; + switch (type) { + case IconType::Info: { + const static QIcon icon = Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_INFO)); + return icon; + } + case IconType::Warning: { + const static QIcon icon = Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_WARNING)); + return icon; + } + default: + case IconType::Error: { + const static QIcon icon = Utils::ThemeHelper::themedIcon( + QLatin1String(Core::Constants::ICON_ERROR)); + return icon; + } + } +} } // namespace Internal -} // namespace ProjectExplorer - -#endif // CORELISTENERCHECKINGFORRUNNINGBUILD_H +} // namespace Todo diff --git a/src/plugins/projectexplorer/corelistenercheckingforrunningbuild.cpp b/src/plugins/todo/todoicons.h index 5103542792..a3b5dba872 100644 --- a/src/plugins/projectexplorer/corelistenercheckingforrunningbuild.cpp +++ b/src/plugins/todo/todoicons.h @@ -1,6 +1,7 @@ -/**************************************************************************** +/************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2015 Dmitry Savchenko +** Copyright (C) 2015 Vasiliy Sorokin ** Contact: http://www.qt.io/licensing ** ** This file is part of Qt Creator. @@ -28,20 +29,23 @@ ** ****************************************************************************/ -#include "corelistenercheckingforrunningbuild.h" -#include "projectexplorer.h" +#ifndef TODOICONS_H +#define TODOICONS_H -namespace ProjectExplorer { +#include <QIcon> + +namespace Todo { namespace Internal { -CoreListener::CoreListener() -{ -} +enum class IconType { + Info, + Error, + Warning +}; + +QIcon icon(IconType type); -bool CoreListener::coreAboutToClose() -{ - return ProjectExplorerPlugin::coreAboutToClose(); -} +} // namespace Internal +} // namespace Todo -} -} +#endif // TODOICONS_H diff --git a/src/plugins/todo/todoitem.h b/src/plugins/todo/todoitem.h index 1e95f35904..ae01485384 100644 --- a/src/plugins/todo/todoitem.h +++ b/src/plugins/todo/todoitem.h @@ -33,6 +33,7 @@ #define TODOITEM_H #include "constants.h" +#include "todoicons.h" #include <QMetaType> #include <QString> @@ -49,7 +50,7 @@ public: QString text; QString file; int line; - QString iconResource; + IconType iconType; QColor color; }; diff --git a/src/plugins/todo/todoitemsmodel.cpp b/src/plugins/todo/todoitemsmodel.cpp index 68c07bf647..2179f010f3 100644 --- a/src/plugins/todo/todoitemsmodel.cpp +++ b/src/plugins/todo/todoitemsmodel.cpp @@ -35,6 +35,7 @@ #include <utils/algorithm.h> #include <utils/theme/theme.h> +#include <utils/themehelper.h> #include <QIcon> @@ -99,7 +100,7 @@ QVariant TodoItemsModel::data(const QModelIndex &index, int role) const case Qt::DisplayRole: return item.text; case Qt::DecorationRole: - return QVariant::fromValue(QIcon(item.iconResource)); + return icon(item.iconType); } break; diff --git a/src/plugins/todo/todooutputpane.cpp b/src/plugins/todo/todooutputpane.cpp index e31a95f9e5..f72636eb67 100644 --- a/src/plugins/todo/todooutputpane.cpp +++ b/src/plugins/todo/todooutputpane.cpp @@ -175,7 +175,8 @@ void TodoOutputPane::todoTreeViewClicked(const QModelIndex &index) item.file = index.sibling(row, Constants::OUTPUT_COLUMN_FILE).data().toString(); item.line = index.sibling(row, Constants::OUTPUT_COLUMN_LINE).data().toInt(); item.color = index.data(Qt::BackgroundColorRole).value<QColor>(); - item.iconResource = index.sibling(row, Constants::OUTPUT_COLUMN_TEXT).data(Qt::DecorationRole).toString(); + item.iconType = static_cast<IconType>(index.sibling(row, Constants::OUTPUT_COLUMN_TEXT) + .data(Qt::UserRole).toInt()); emit todoItemClicked(item); } diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index d4956f7931..b612996563 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -68,6 +68,7 @@ #include <utils/qtcassert.h> #include <utils/fancymainwindow.h> #include <utils/styledbar.h> +#include <utils/themehelper.h> #include <projectexplorer/project.h> #include <projectexplorer/projectexplorer.h> @@ -695,7 +696,7 @@ QWidget *CallgrindToolPrivate::createWidgets() // go back action = new QAction(this); action->setDisabled(true); - action->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PREV))); + action->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_PREV))); action->setToolTip(tr("Go back one step in history. This will select the previously selected item.")); connect(action, &QAction::triggered, m_stackBrowser, &StackBrowser::goBack); layout->addWidget(createToolButton(action)); @@ -704,7 +705,7 @@ QWidget *CallgrindToolPrivate::createWidgets() // go forward action = new QAction(this); action->setDisabled(true); - action->setIcon(QIcon(QLatin1String(Core::Constants::ICON_NEXT))); + action->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_NEXT))); action->setToolTip(tr("Go forward one step in history.")); connect(action, &QAction::triggered, m_stackBrowser, &StackBrowser::goNext); layout->addWidget(createToolButton(action)); @@ -782,7 +783,7 @@ QWidget *CallgrindToolPrivate::createWidgets() // filtering action = new QAction(tr("Show Project Costs Only"), this); - action->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + action->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); action->setToolTip(tr("Show only profiling info that originated from this project source.")); action->setCheckable(true); connect(action, &QAction::toggled, this, &CallgrindToolPrivate::handleFilterProjectCosts); diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 707f7f27bd..21bbce0cc8 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -69,6 +69,7 @@ #include <utils/fancymainwindow.h> #include <utils/styledbar.h> #include <utils/qtcassert.h> +#include <utils/themehelper.h> #include <QString> #include <QLatin1String> @@ -386,7 +387,7 @@ QWidget *MemcheckTool::createWidgets() // Go to previous leak. action = new QAction(this); action->setDisabled(true); - action->setIcon(QIcon(QLatin1String(Core::Constants::ICON_PREV))); + action->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_PREV))); action->setToolTip(tr("Go to previous leak.")); connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goBack); button = new QToolButton; @@ -397,7 +398,7 @@ QWidget *MemcheckTool::createWidgets() // Go to next leak. action = new QAction(this); action->setDisabled(true); - action->setIcon(QIcon(QLatin1String(Core::Constants::ICON_NEXT))); + action->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_NEXT))); action->setToolTip(tr("Go to next leak.")); connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goNext); button = new QToolButton; @@ -406,7 +407,7 @@ QWidget *MemcheckTool::createWidgets() m_goNext = action; QToolButton *filterButton = new QToolButton; - filterButton->setIcon(QIcon(QLatin1String(Core::Constants::ICON_FILTER))); + filterButton->setIcon(Utils::ThemeHelper::themedIcon(QLatin1String(Core::Constants::ICON_FILTER))); filterButton->setText(tr("Error Filter")); filterButton->setPopupMode(QToolButton::InstantPopup); filterButton->setProperty("noArrow", true); diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp index fe0b688a77..9a41f6d27e 100644 --- a/src/plugins/valgrind/valgrindplugin.cpp +++ b/src/plugins/valgrind/valgrindplugin.cpp @@ -56,6 +56,7 @@ #include <projectexplorer/projectexplorer.h> #include <utils/hostosinfo.h> +#include <utils/themehelper.h> #include <QtPlugin> #include <QCoreApplication> @@ -248,7 +249,8 @@ void ValgrindPlugin::extensionsInitialized() editorContextMenu->addSeparator(analyzerContext); QAction *action = new QAction(tr("Profile Costs of This Function and Its Callees"), this); - action->setIcon(QIcon(QLatin1String(Analyzer::Constants::ANALYZER_CONTROL_START_ICON))); + action->setIcon(Utils::ThemeHelper::themedIcon( + QLatin1String(Analyzer::Constants::ANALYZER_CONTROL_START_ICON))); connect(action, &QAction::triggered, cgTool, &CallgrindTool::handleShowCostsOfFunction); Command *cmd = ActionManager::registerAction(action, "Analyzer.Callgrind.ShowCostsOfFunction", diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp index 380525e1d1..65c245a14c 100644 --- a/src/plugins/vcsbase/submiteditorwidget.cpp +++ b/src/plugins/vcsbase/submiteditorwidget.cpp @@ -477,7 +477,7 @@ void SubmitEditorWidget::diffActivated(const QModelIndex &index) // We need to delay the signal, otherwise, the diff editor will not // be in the foreground. d->m_activatedRow = index.row(); - QTimer::singleShot(0, this, SLOT(diffActivatedDelayed())); + QTimer::singleShot(0, this, &SubmitEditorWidget::diffActivatedDelayed); } void SubmitEditorWidget::updateActions() diff --git a/src/plugins/vcsbase/vcsbase.pro b/src/plugins/vcsbase/vcsbase.pro index b433f81743..a6364aa22f 100644 --- a/src/plugins/vcsbase/vcsbase.pro +++ b/src/plugins/vcsbase/vcsbase.pro @@ -7,7 +7,6 @@ HEADERS += vcsbase_global.h \ wizard/vcscommandpage.h \ wizard/vcsjsextension.h \ vcsplugin.h \ - corelistener.h \ vcsbaseplugin.h \ baseannotationhighlighter.h \ diffandloghighlighter.h \ @@ -36,7 +35,6 @@ SOURCES += vcsplugin.cpp \ wizard/vcsconfigurationpage.cpp \ wizard/vcscommandpage.cpp \ wizard/vcsjsextension.cpp \ - corelistener.cpp \ baseannotationhighlighter.cpp \ diffandloghighlighter.cpp \ vcsbaseeditor.cpp \ diff --git a/src/plugins/vcsbase/vcsbase.qbs b/src/plugins/vcsbase/vcsbase.qbs index 857577a46a..df2ca5b878 100644 --- a/src/plugins/vcsbase/vcsbase.qbs +++ b/src/plugins/vcsbase/vcsbase.qbs @@ -32,8 +32,6 @@ QtcPlugin { "commonsettingspage.ui", "commonvcssettings.cpp", "commonvcssettings.h", - "corelistener.cpp", - "corelistener.h", "diffandloghighlighter.cpp", "diffandloghighlighter.h", "nicknamedialog.cpp", diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index cb1c238aba..aeea85cd5c 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -1395,7 +1395,7 @@ void VcsBaseEditorWidget::setCommand(VcsCommand *command) d->m_progressIndicator->attachToWidget(this); connect(d->m_command.data(), &VcsCommand::finished, this, &VcsBaseEditorWidget::hideProgressIndicator); - QTimer::singleShot(100, this, SLOT(showProgressIndicator())); + QTimer::singleShot(100, this, &VcsBaseEditorWidget::showProgressIndicator); } } diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index fcd2ed42c8..cf94ea9b06 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -33,7 +33,6 @@ #include "vcsplugin.h" #include "commonvcssettings.h" #include "vcsoutputwindow.h" -#include "corelistener.h" #include "vcscommand.h" #include <coreplugin/documentmanager.h> @@ -567,7 +566,7 @@ void VcsBasePlugin::initializeVcs(IVersionControl *vc, const Context &context) addAutoReleasedObject(vc); Internal::VcsPlugin *plugin = Internal::VcsPlugin::instance(); - connect(plugin->coreListener(), &Internal::CoreListener::submitEditorAboutToClose, + connect(plugin, &Internal::VcsPlugin::submitEditorAboutToClose, this, &VcsBasePlugin::slotSubmitEditorAboutToClose); // First time: create new listener if (!VcsBasePluginPrivate::m_listener) diff --git a/src/plugins/vcsbase/vcsoutputwindow.cpp b/src/plugins/vcsbase/vcsoutputwindow.cpp index c541ce5298..9a9da3942a 100644 --- a/src/plugins/vcsbase/vcsoutputwindow.cpp +++ b/src/plugins/vcsbase/vcsoutputwindow.cpp @@ -34,6 +34,7 @@ #include <aggregation/aggregate.h> #include <coreplugin/find/basetextfind.h> +#include <coreplugin/outputwindow.h> #include <utils/fileutils.h> #include <utils/outputformatter.h> #include <utils/theme/theme.h> @@ -73,6 +74,8 @@ namespace VcsBase { namespace Internal { +const char C_VCS_OUTPUT_PANE[] = "Vcs.OutputPane"; + // Store repository along with text blocks class RepositoryUserData : public QTextBlockUserData { @@ -86,7 +89,7 @@ private: // A plain text edit with a special context menu containing "Clear" and // and functions to append specially formatted entries. -class OutputWindowPlainTextEdit : public QPlainTextEdit +class OutputWindowPlainTextEdit : public Core::OutputWindow { public: explicit OutputWindowPlainTextEdit(QWidget *parent = 0); @@ -111,7 +114,7 @@ private: }; OutputWindowPlainTextEdit::OutputWindowPlainTextEdit(QWidget *parent) : - QPlainTextEdit(parent), + Core::OutputWindow(Core::Context(C_VCS_OUTPUT_PANE), parent), m_defaultFormat(currentCharFormat()), m_errorFormat(m_defaultFormat), m_warningFormat(m_defaultFormat), @@ -278,9 +281,9 @@ void OutputWindowPlainTextEdit::setFormat(enum VcsOutputWindow::MessageStyle sty class VcsOutputWindowPrivate { public: - Internal::OutputWindowPlainTextEdit *plainTextEdit(); + Internal::OutputWindowPlainTextEdit *widget(); - QPointer<Internal::OutputWindowPlainTextEdit> m_plainTextEdit; + QPointer<Internal::OutputWindowPlainTextEdit> m_widget; QString repository; QRegExp passwordRegExp; }; @@ -288,15 +291,15 @@ public: // Create log editor on demand. Some errors might be logged // before CorePlugin::extensionsInitialized() pulls up the windows. -Internal::OutputWindowPlainTextEdit *VcsOutputWindowPrivate::plainTextEdit() +Internal::OutputWindowPlainTextEdit *VcsOutputWindowPrivate::widget() { - if (!m_plainTextEdit) { - m_plainTextEdit = new Internal::OutputWindowPlainTextEdit(); + if (!m_widget) { + m_widget = new Internal::OutputWindowPlainTextEdit(); Aggregation::Aggregate *agg = new Aggregation::Aggregate; - agg->add(m_plainTextEdit); - agg->add(new Core::BaseTextFind(m_plainTextEdit)); + agg->add(m_widget); + agg->add(new Core::BaseTextFind(m_widget)); } - return m_plainTextEdit; + return m_widget; } static VcsOutputWindow *m_instance = 0; @@ -332,13 +335,13 @@ VcsOutputWindow::~VcsOutputWindow() QWidget *VcsOutputWindow::outputWidget(QWidget *parent) { - if (d->m_plainTextEdit) { - if (parent != d->m_plainTextEdit->parent()) - d->m_plainTextEdit->setParent(parent); + if (d->m_widget) { + if (parent != d->m_widget->parent()) + d->m_widget->setParent(parent); } else { - d->m_plainTextEdit = new Internal::OutputWindowPlainTextEdit(parent); + d->m_widget = new Internal::OutputWindowPlainTextEdit(parent); } - return d->m_plainTextEdit; + return d->m_widget; } QWidgetList VcsOutputWindow::toolBarWidgets() const @@ -358,14 +361,14 @@ int VcsOutputWindow::priorityInStatusBar() const void VcsOutputWindow::clearContents() { - if (d->m_plainTextEdit) - d->m_plainTextEdit->clear(); + if (d->m_widget) + d->m_widget->clear(); } void VcsOutputWindow::visibilityChanged(bool visible) { - if (visible && d->m_plainTextEdit) - d->m_plainTextEdit->setFocus(); + if (visible && d->m_widget) + d->m_widget->setFocus(); } void VcsOutputWindow::setFocus() @@ -407,7 +410,7 @@ void VcsOutputWindow::goToPrev() void VcsOutputWindow::setText(const QString &text) { - d->plainTextEdit()->setPlainText(text); + d->widget()->setPlainText(text); } void VcsOutputWindow::setData(const QByteArray &data) @@ -422,9 +425,9 @@ void VcsOutputWindow::appendSilently(const QString &text) void VcsOutputWindow::append(const QString &text, enum MessageStyle style, bool silently) { - d->plainTextEdit()->appendLinesWithStyle(text, style, d->repository); + d->widget()->appendLinesWithStyle(text, style, d->repository); - if (!silently && !d->plainTextEdit()->isVisible()) + if (!silently && !d->widget()->isVisible()) m_instance->popup(Core::IOutputPane::NoModeSwitch); } diff --git a/src/plugins/vcsbase/vcsplugin.cpp b/src/plugins/vcsbase/vcsplugin.cpp index 49037559cb..04af5ca006 100644 --- a/src/plugins/vcsbase/vcsplugin.cpp +++ b/src/plugins/vcsbase/vcsplugin.cpp @@ -31,16 +31,18 @@ #include "vcsplugin.h" #include "vcsbaseconstants.h" +#include "vcsbasesubmiteditor.h" #include "commonsettingspage.h" #include "nicknamedialog.h" #include "vcsoutputwindow.h" #include "vcsprojectcache.h" -#include "corelistener.h" #include "wizard/vcscommandpage.h" #include "wizard/vcsconfigurationpage.h" #include "wizard/vcsjsextension.h" +#include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/iversioncontrol.h> #include <coreplugin/jsexpander.h> #include <coreplugin/vcsmanager.h> @@ -64,8 +66,7 @@ VcsPlugin *VcsPlugin::m_instance = 0; VcsPlugin::VcsPlugin() : m_settingsPage(0), - m_nickNameModel(0), - m_coreListener(0) + m_nickNameModel(0) { m_instance = this; } @@ -81,8 +82,12 @@ bool VcsPlugin::initialize(const QStringList &arguments, QString *errorMessage) Q_UNUSED(arguments) Q_UNUSED(errorMessage) - m_coreListener = new CoreListener; - addAutoReleasedObject(m_coreListener); + EditorManager::addCloseEditorListener([this](IEditor *editor) -> bool { + bool result = true; + if (auto se = qobject_cast<VcsBaseSubmitEditor *>(editor)) + emit submitEditorAboutToClose(se, &result); + return result; + }); m_settingsPage = new CommonOptionsPage; addAutoReleasedObject(m_settingsPage); @@ -139,11 +144,6 @@ VcsPlugin *VcsPlugin::instance() return m_instance; } -CoreListener *VcsPlugin::coreListener() const -{ - return m_coreListener; -} - CommonVcsSettings VcsPlugin::settings() const { return m_settingsPage->settings(); diff --git a/src/plugins/vcsbase/vcsplugin.h b/src/plugins/vcsbase/vcsplugin.h index 5c9a2523f6..d0b308139a 100644 --- a/src/plugins/vcsbase/vcsplugin.h +++ b/src/plugins/vcsbase/vcsplugin.h @@ -38,6 +38,9 @@ class QStandardItemModel; QT_END_NAMESPACE namespace VcsBase { + +class VcsBaseSubmitEditor; + namespace Internal { class CommonVcsSettings; @@ -59,8 +62,6 @@ public: static VcsPlugin *instance(); - CoreListener *coreListener() const; - CommonVcsSettings settings() const; // Model of user nick names used for the submit @@ -70,6 +71,7 @@ public: signals: void settingsChanged(const VcsBase::Internal::CommonVcsSettings &s); + void submitEditorAboutToClose(VcsBase::VcsBaseSubmitEditor *e, bool *result); private slots: void slotSettingsChanged(); @@ -80,7 +82,6 @@ private: static VcsPlugin *m_instance; CommonOptionsPage *m_settingsPage; QStandardItemModel *m_nickNameModel; - CoreListener *m_coreListener; }; } // namespace Internal diff --git a/src/plugins/winrt/winrtdebugsupport.cpp b/src/plugins/winrt/winrtdebugsupport.cpp index 5f597d89df..b6a518d578 100644 --- a/src/plugins/winrt/winrtdebugsupport.cpp +++ b/src/plugins/winrt/winrtdebugsupport.cpp @@ -114,7 +114,7 @@ RunControl *WinRtDebugSupport::createDebugRunControl(WinRtRunConfiguration *runC if (!getFreePort(qmlDebugPort, errorMessage)) return 0; runConfig->setArguments(runConfig->arguments() + QLatin1Char(' ') - + QmlDebug::qmlDebugCommandLineArguments(QmlDebug::QmlDebuggerServices, qmlDebugPort)); + + QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices, qmlDebugPort)); params.qmlServerAddress = QHostAddress::LocalHost; params.qmlServerPort = qmlDebugPort; } diff --git a/src/plugins/winrt/winrtpackagedeploymentstep.cpp b/src/plugins/winrt/winrtpackagedeploymentstep.cpp index c93adbe80e..b1defa07b6 100644 --- a/src/plugins/winrt/winrtpackagedeploymentstep.cpp +++ b/src/plugins/winrt/winrtpackagedeploymentstep.cpp @@ -61,7 +61,7 @@ WinRtPackageDeploymentStep::WinRtPackageDeploymentStep(BuildStepList *bsl) m_args = defaultWinDeployQtArguments(); } -bool WinRtPackageDeploymentStep::init() +bool WinRtPackageDeploymentStep::init(QList<const BuildStep *> &earlierSteps) { WinRtRunConfiguration *rc = qobject_cast<WinRtRunConfiguration *>( target()->activeRunConfiguration()); @@ -108,7 +108,7 @@ bool WinRtPackageDeploymentStep::init() params->setArguments(args); params->setEnvironment(target()->activeBuildConfiguration()->environment()); - return AbstractProcessStep::init(); + return AbstractProcessStep::init(earlierSteps); } void WinRtPackageDeploymentStep::run(QFutureInterface<bool> &fi) diff --git a/src/plugins/winrt/winrtpackagedeploymentstep.h b/src/plugins/winrt/winrtpackagedeploymentstep.h index 0ddff23659..8877bfecc2 100644 --- a/src/plugins/winrt/winrtpackagedeploymentstep.h +++ b/src/plugins/winrt/winrtpackagedeploymentstep.h @@ -41,11 +41,11 @@ class WinRtPackageDeploymentStep : public ProjectExplorer::AbstractProcessStep Q_OBJECT public: explicit WinRtPackageDeploymentStep(ProjectExplorer::BuildStepList *bsl); - bool init(); - void run(QFutureInterface<bool> &fi); - bool processSucceeded(int exitCode, QProcess::ExitStatus status); - void stdOutput(const QString &line); - ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); + bool init(QList<const BuildStep *> &earlierSteps) override; + void run(QFutureInterface<bool> &fi) override; + bool processSucceeded(int exitCode, QProcess::ExitStatus status) override; + void stdOutput(const QString &line) override; + ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; void setWinDeployQtArguments(const QString &args); QString winDeployQtArguments() const; @@ -54,8 +54,8 @@ public: void raiseError(const QString &errorMessage); void raiseWarning(const QString &warningMessage); - bool fromMap(const QVariantMap &map); - QVariantMap toMap() const; + bool fromMap(const QVariantMap &map) override; + QVariantMap toMap() const override; private: bool parseIconsAndExecutableFromManifest(QString manifestFileName, QStringList *items, QString *executable); diff --git a/src/plugins/winrt/winrtrunconfiguration.h b/src/plugins/winrt/winrtrunconfiguration.h index 7fecf95534..e37deadd28 100644 --- a/src/plugins/winrt/winrtrunconfiguration.h +++ b/src/plugins/winrt/winrtrunconfiguration.h @@ -43,10 +43,10 @@ class WinRtRunConfiguration : public ProjectExplorer::RunConfiguration public: explicit WinRtRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); - QWidget *createConfigurationWidget(); - bool isEnabled() const { return true; } // Always enabled like DLL run control - QVariantMap toMap() const; - bool fromMap(const QVariantMap &map); + QWidget *createConfigurationWidget() override; + bool isEnabled() const override { return true; } // Always enabled like DLL run control + QVariantMap toMap() const override; + bool fromMap(const QVariantMap &map) override; const QString &proFilePath() const { return m_proFilePath; } const QString &arguments() const { return m_arguments; } diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg index 87a7343f30..413d3f1fe8 100644 --- a/src/tools/icons/qtcreatoricons.svg +++ b/src/tools/icons/qtcreatoricons.svg @@ -14,11 +14,46 @@ height="600" id="svg2" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.91 r13725" sodipodi:docname="qtcreatoricons.svg"> <defs id="defs4"> <linearGradient + inkscape:collect="always" + id="linearGradient4806"> + <stop + style="stop-color:#646464;stop-opacity:1" + offset="0" + id="stop4808" /> + <stop + style="stop-color:#424242;stop-opacity:1" + offset="1" + id="stop4810" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient6371"> + <stop + style="stop-color:#f7f7f7;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#c3c3c3;stop-opacity:1" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient4115-6"> + <stop + id="stop4781" + offset="0" + style="stop-color:#626262;stop-opacity:1" /> + <stop + id="stop4783" + offset="1" + style="stop-color:#414141;stop-opacity:1" /> + </linearGradient> + <linearGradient id="linearGradient4115"> <stop style="stop-color:#373737;stop-opacity:0.07843138;" @@ -105,17 +140,6 @@ id="stop4136" /> </linearGradient> <linearGradient - id="linearGradient3975"> - <stop - id="stop3977" - offset="0" - style="stop-color:#4a73f6;stop-opacity:1;" /> - <stop - id="stop3979" - offset="1" - style="stop-color:#0e44f3;stop-opacity:1;" /> - </linearGradient> - <linearGradient id="linearGradient4061"> <stop style="stop-color:#4a73f6;stop-opacity:1;" @@ -127,17 +151,6 @@ id="stop4065" /> </linearGradient> <linearGradient - id="linearGradient3869"> - <stop - style="stop-color:#ffb80c;stop-opacity:1;" - offset="0" - id="stop3871" /> - <stop - style="stop-color:#ffdc5c;stop-opacity:1;" - offset="1" - id="stop3873" /> - </linearGradient> - <linearGradient id="linearGradient4482"> <stop style="stop-color:#fa3e3e;stop-opacity:1;" @@ -168,62 +181,6 @@ x2="160.5" y2="588" gradientUnits="userSpaceOnUse" /> - <filter - id="soft_shadow" - color-interpolation-filters="sRGB"> - <feFlood - id="feFlood4468" - flood-opacity="1" - flood-color="rgb(0,0,0)" - result="flood" /> - <feComposite - id="feComposite4470" - in2="SourceGraphic" - in="flood" - operator="in" - result="composite1" /> - <feGaussianBlur - id="feGaussianBlur4472" - stdDeviation="1" - result="blur" /> - <feOffset - id="feOffset4474" - dx="0" - dy="1" - result="offset" /> - <feComposite - id="feComposite4476" - in2="offset" - in="SourceGraphic" - operator="over" - result="composite2" /> - </filter> - <filter - id="1_pixel_shadow" - color-interpolation-filters="sRGB"> - <feFlood - id="feFlood4726" - flood-opacity="0.2" - flood-color="rgb(0,0,0)" - result="flood" /> - <feComposite - id="feComposite4728" - in2="SourceGraphic" - in="flood" - operator="in" - result="composite1" /> - <feOffset - id="feOffset4732" - dx="0" - dy="1" - result="offset" /> - <feComposite - id="feComposite4734" - in2="offset" - in="SourceGraphic" - operator="over" - result="composite2" /> - </filter> <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4754"> @@ -258,15 +215,6 @@ y="584" /> </clipPath> <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3869" - id="linearGradient3875" - x1="461" - y1="597" - x2="461" - y2="589" - gradientUnits="userSpaceOnUse" /> - <linearGradient id="linearGradient3869-5"> <stop style="stop-color:#ffb80c;stop-opacity:1;" @@ -345,28 +293,6 @@ </clipPath> <radialGradient inkscape:collect="always" - xlink:href="#linearGradient4482" - id="radialGradient4553" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.5,0,0,1.5,-42,-296)" - cx="84" - cy="592" - fx="84" - fy="592" - r="6" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3975" - id="radialGradient3994" - cx="53.625004" - cy="541.62494" - fx="53.625004" - fy="541.62494" - r="6" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(1.3333331,-1.1619436e-5,1.161951e-5,1.3333416,-18.006285,-180.67045)" /> - <radialGradient - inkscape:collect="always" xlink:href="#linearGradient4061" id="radialGradient4067" cx="138.81819" @@ -441,17 +367,6 @@ id="rect3235" style="fill:none;stroke:none" /> </clipPath> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath3237"> - <rect - style="fill:none;stroke:none" - id="rect3239" - width="16" - height="16" - x="218" - y="568" /> - </clipPath> <filter id="filter4057" inkscape:label="Inner Shadow" @@ -603,66 +518,6 @@ x="329" y="536" /> </clipPath> - <linearGradient - id="linearGradient4137-8"> - <stop - style="stop-color:#b3b3b3;stop-opacity:1;" - offset="0" - id="stop4139-8" /> - <stop - style="stop-color:#ededed;stop-opacity:1;" - offset="1" - id="stop4141-2" /> - </linearGradient> - <linearGradient - id="linearGradient4153-5"> - <stop - style="stop-color:#d5d5d5;stop-opacity:1;" - offset="0" - id="stop4155-5" /> - <stop - style="stop-color:#f1f1f1;stop-opacity:1;" - offset="1" - id="stop4157-1" /> - </linearGradient> - <linearGradient - id="linearGradient4145-1"> - <stop - style="stop-color:#eeeeee;stop-opacity:1;" - offset="0" - id="stop4147-1" /> - <stop - style="stop-color:#bfbfbf;stop-opacity:1;" - offset="1" - id="stop4149-5" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4137-8" - id="linearGradient5590" - gradientUnits="userSpaceOnUse" - x1="26.476385" - y1="600" - x2="26.531254" - y2="590.90326" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4153-5" - id="linearGradient5592" - gradientUnits="userSpaceOnUse" - x1="24.057892" - y1="597.64093" - x2="30.210051" - y2="593.79718" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient4145-1" - id="linearGradient5594" - gradientUnits="userSpaceOnUse" - x1="26.783928" - y1="595.09448" - x2="28.495188" - y2="598.53198" /> <filter id="lightenUp" x="0" @@ -694,6 +549,108 @@ in2="SourceGraphic" operator="in" /> </filter> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4115-6" + id="linearGradient4691" + gradientUnits="userSpaceOnUse" + x1="29" + y1="383" + x2="29" + y2="424" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6371" + id="linearGradient6377" + x1="68" + y1="381" + x2="68" + y2="424" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-8,0)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4806" + id="linearGradient4812" + x1="123" + y1="384" + x2="123" + y2="404" + gradientUnits="userSpaceOnUse" /> + <filter + style="color-interpolation-filters:sRGB;" + inkscape:label="Drop Shadow" + id="filter4964"> + <feFlood + flood-opacity="0.498039" + flood-color="rgb(0,0,0)" + result="flood" + id="feFlood4966" /> + <feComposite + in="flood" + in2="SourceGraphic" + operator="out" + result="composite1" + id="feComposite4968" /> + <feGaussianBlur + in="composite1" + stdDeviation="1.5" + result="blur" + id="feGaussianBlur4970" /> + <feOffset + dx="0" + dy="1.5" + result="offset" + id="feOffset4972" /> + <feComposite + in="offset" + in2="SourceGraphic" + operator="atop" + result="composite2" + id="feComposite4974" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath6752"> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:2.1400001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0" + id="rect6754" + width="28" + height="43" + x="-2.8722695e-007" + y="381" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath6765"> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:2.1400001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0" + id="rect6767" + width="31" + height="20" + x="110" + y="384" + rx="10" /> + </clipPath> + <filter + style="color-interpolation-filters:sRGB;" + inkscape:label="Fade to Black or White" + id="filter4891"> + <feColorMatrix + values="0.770833 0 0 0 0.229167 0 0.770833 0 0 0.229167 0 0 0.770833 0 0.229167 0 0 0 1 0" + id="feColorMatrix4893" /> + </filter> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4901"> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4903" + width="16" + height="16" + x="141" + y="408" /> + </clipPath> </defs> <sodipodi:namedview id="base" @@ -702,11 +659,11 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="381.31904" - inkscape:cy="185.84959" + inkscape:zoom="45.254834" + inkscape:cx="453.11431" + inkscape:cy="22.83542" inkscape:document-units="px" - inkscape:current-layer="layer1" + inkscape:current-layer="layer2" showgrid="true" showguides="true" inkscape:guide-bbox="true" @@ -809,6 +766,120 @@ </g> <g inkscape:groupmode="layer" + id="layer7" + inkscape:label="Project mode trash"> + <g + id="src/plugins/projectexplorer/images/targetbuildselected" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180" + clip-path="url(#clipPath6752)"> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + transform="matrix(1.3956597,0,0,0.98599436,-17.828079,5.9497684)" + y="380.37766" + x="12.773944" + height="43.610806" + width="20.062197" + id="rect4735" + style="opacity:1;fill:url(#linearGradient4691);fill-opacity:1;stroke:none;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4964)" + clip-path="none" /> + <path + sodipodi:nodetypes="cczcc" + inkscape:connector-curvature="0" + id="path4727" + d="m 14,422 -1.5,0 C 8,422 4,418 4,413 c 0,-5 4,-9 8.5,-9 l 1.5,0" + style="fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" /> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#737373;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" + d="m 14.5,421.5 1,0 c 4.5,0 8,-3.5 8,-8.5 0,-5 -3.5,-8.5 -8,-8.5 l -1,0" + id="path4729" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cczcc" /> + </g> + <use + x="0" + y="0" + xlink:href="#src/plugins/projectexplorer/images/targetbuildselected" + id="src/plugins/projectexplorer/images/targetrunselected" + transform="matrix(-1,0,0,1,56,0)" + width="100%" + height="100%" /> + <g + id="src/plugins/projectexplorer/images/targetrightbutton"> + <path + inkscape:connector-curvature="0" + d="m 57.5,381 7,7 -6,6 6,6 -6,6 2.5,2.5 -2.5,2.5 6,6 -7,7 -1.5,0 0,-43 z" + style="opacity:1;fill:url(#linearGradient6377);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path6368" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path6379" + d="m 56.5,424 0,-43" + style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.50196081" /> + <path + sodipodi:nodetypes="ccc" + inkscape:connector-curvature="0" + id="path6381" + d="m 69.5,396.5 6.5,6.5 -6.5,6.5" + style="fill:none;fill-rule:evenodd;stroke:#606060;stroke-width:2.1400001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <rect + y="381" + x="56" + height="43" + width="27" + id="rect6383" + style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:2.1400001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <use + x="0" + y="0" + xlink:href="#src/plugins/projectexplorer/images/targetrightbutton" + id="src/plugins/projectexplorer/images/targetleftbutton" + transform="matrix(-1,0,0,1,166,0)" + width="100%" + height="100%" /> + <g + id="src/plugins/projectexplorer/images/selection" + clip-path="url(#clipPath6765)" + transform="translate(0,20)"> + <rect + rx="10" + y="384" + x="110" + height="20" + width="31" + id="rect4796" + style="opacity:1;fill:url(#linearGradient4812);fill-opacity:1;stroke:none;stroke-width:2.1400001;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0;filter:url(#filter4964)" /> + </g> + <g + id="src/plugins/projectexplorer/images/targetchangebutton"> + <circle + r="7.5" + cy="416" + cx="149" + id="path4752" + style="opacity:1;fill:#686868;fill-opacity:1;stroke:#484848;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + inkscape:connector-curvature="0" + id="targetchangebutton_triangle" + d="m 145,415 8,0 -4,4 -4,-4" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <use + x="0" + y="0" + xlink:href="#src/plugins/projectexplorer/images/targetchangebutton" + id="src/plugins/projectexplorer/images/targetchangebutton2" + transform="translate(16,0)" + width="100%" + height="100%" + style="filter:url(#filter4891)" + clip-path="url(#clipPath4901)" /> + </g> + <g + inkscape:groupmode="layer" id="layer6" inkscape:label="Tools logos" style="display:inline" /> @@ -1166,7 +1237,7 @@ x="0" /> </g> <g - transform="matrix(-0.5,0,0,0.5,589.5,300)" + transform="matrix(-0.5,0,0,0.5,589.5,200)" clip-path="url(#clipPath3536)" id="src/libs/utils/images/progressindicator_medium"> <g @@ -1289,7 +1360,7 @@ <g id="src/libs/utils/images/progressindicator_big" clip-path="url(#clipPath3536)" - transform="matrix(-1,0,0,1,722,0)"> + transform="matrix(-1,0,0,1,722,-100)"> <g id="g3369"> <rect @@ -1409,6 +1480,35 @@ y="0" x="0" /> </g> + <g + id="src/plugins/coreplugin/find/images/wrapindicator"> + <rect + ry="11" + y="450" + x="279" + height="50" + width="50" + id="rect4682" + style="opacity:1;fill:#a5a7a7;fill-opacity:0.8;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:open="true" + d="m 319.99025,475.55839 a 16,16 0 0 1 -11.78175,14.87821 16,16 0 0 1 -17.70276,-6.83981 16,16 0 0 1 1.28254,-18.93477 16,16 0 0 1 18.46342,-4.3901" + sodipodi:end="5.1138147" + sodipodi:start="0.034906585" + sodipodi:ry="16" + sodipodi:rx="16" + sodipodi:cy="475" + sodipodi:cx="304" + sodipodi:type="arc" + id="path4692" + style="opacity:1;fill:none;fill-opacity:0.8;stroke:#ffffff;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="ccc" + inkscape:connector-curvature="0" + id="path4694" + d="m 322.76517,465.96966 -17.45581,2.61872 5.9902,-17.11022" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> </g> <g inkscape:groupmode="layer" @@ -1423,80 +1523,79 @@ inkscape:export-ydpi="90" transform="translate(-32,-16)"> <rect - style="fill:none" y="583.99994" x="32" height="16" width="16" - id="rect3855" /> + id="rect3855" + style="fill:#ffffff" /> <g id="g3920" - style="filter:url(#1_pixel_shadow)"> + style=""> <path inkscape:connector-curvature="0" id="path3973" d="m 35,588 9,9" - style="fill:none;stroke:#dbdbdb;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:none;stroke:#000000;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> <path inkscape:connector-curvature="0" id="path3975" d="m 35,597 9,-9" - style="fill:none;stroke:#dbdbdb;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:none;stroke:#000000;stroke-width:1.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> </g> </g> <g id="src/plugins/coreplugin/images/extension" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath4754)" transform="translate(-171,-20)"> <rect - style="fill:none;stroke:none" id="use4527" width="9" height="9" x="187" - y="592" /> + y="592" + style="fill:#ffffff" /> <path sodipodi:nodetypes="ccc" inkscape:connector-curvature="0" id="path4529" d="m 189,594 2.5,2.5 -2.5,2.5" - style="fill:none;stroke:#dbdbdb;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> <path sodipodi:nodetypes="ccc" inkscape:connector-curvature="0" id="path4529-0" d="m 192,594 2.5,2.5 -2.5,2.5" - style="fill:none;stroke:#dbdbdb;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> </g> <g id="src/plugins/coreplugin/images/filtericon" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath4845)" transform="translate(-170,-16)"> - <path - sodipodi:nodetypes="ccccccccc" - inkscape:connector-curvature="0" - id="path4782" - d="m 197.5,587.5 9,0 0,2 -3,3 0,4 -3,0 0,-4 -3,-3 z" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cccc" - inkscape:connector-curvature="0" - id="path4784" - d="m 210,595 -2.5,2.5 -2.5,-2.5 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" /> <rect y="584" x="195" height="16" width="16" id="rect3817-2-9-1-9-6-2" - style="opacity:0.60100002;fill:#ffffff;fill-opacity:0" /> + style="fill:#ffffff" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4784" + d="m 210,595 -2.5,2.5 -2.5,-2.5 z" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <polygon + transform="translate(93.999999,334)" + id="polygon4959-9" + points="107,262 107,258 103,255 103,253 113,253 113,255 109,258 109,264 " + style="display:inline;fill:#000000;stroke:none;fill-opacity:1.0" /> </g> <g id="src/plugins/coreplugin/images/linkicon" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath3927)" transform="translate(-396,-16)"> <rect @@ -1505,25 +1604,26 @@ height="16" width="16" id="rect3123" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <path - style="fill:none;stroke:#dbdbdb;stroke-width:1.15;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 448.5,590.5 c 0,1.5 -1.5,3 -5,3 -3.5,0 -5,-1.5 -5,-3 0,-1.5 1.5,-3 5,-3 3.5,0 5,1.5 5,3 z" - id="path3917" + id="path4971-4" + d="m 444,594.216 c -0.531,0.483 -1.227,0.784 -2,0.784 -1.654,0 -3,-1.346 -3,-3 0,-1.654 1.346,-3 3,-3 0.773,0 1.469,0.302 2,0.785 l 0,-1.212 c -0.589,-0.351 -1.263,-0.573 -2,-0.573 -2.209,0 -4,1.791 -4,4 0,2.209 1.791,4 4,4 0.737,0 1.411,-0.222 2,-0.573 l 0,-1.211 z" inkscape:connector-curvature="0" - sodipodi:nodetypes="zzzzz" /> - <use - x="0" - y="0" - xlink:href="#path3917" - id="use3148" - transform="translate(3,3)" - width="800" - height="600" /> + style="fill:#000000;fill-opacity:1;stroke:none" /> + <path + id="path4973-5" + d="m 448,588 c -0.737,0 -1.411,0.222 -2,0.572 l 0,1.212 c 0.531,-0.483 1.227,-0.785 2,-0.785 1.654,0 3,1.346 3,3 0,1.654 -1.346,3 -3,3 -0.773,0 -1.469,-0.302 -2,-0.784 l 0,1.212 c 0.589,0.351 1.263,0.573 2,0.573 2.208,0 4,-1.791 4,-4 0,-2.209 -1.792,-4 -4,-4 z" + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <path + style="fill:#000000;fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" + d="m 448,593 -6,0 c -0.552,0 -1,-0.448 -1,-1 l 0,0 c 0,-0.552 0.448,-1 1,-1 l 6,0 c 0.552,0 1,0.448 1,1 l 0,0 c 0,0.552 -0.448,1 -1,1 z" + id="path4975-0" /> </g> <g id="src/plugins/coreplugin/images/splitbutton_closebottom" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath3182)" transform="translate(1,0)"> <rect @@ -1532,14 +1632,14 @@ height="16" width="16" id="rect3170" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <path id="rect3161" d="m 59,573 0,9 11,0 0,-9 -11,0 z m 1,2 9,0 0,6 -9,0 0,-6 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" + style="fill:#000000;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" /> <path - style="fill:#dbdbdb;fill-opacity:1;stroke:none;display:inline" + style="fill:#000000;fill-opacity:1;stroke:none;display:inline" d="M 67,577 64.5,579.5 62,577 z" id="path4784-1" inkscape:connector-curvature="0" @@ -1547,7 +1647,7 @@ </g> <g id="src/plugins/coreplugin/images/splitbutton_closeleft" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath3271)" transform="translate(17,0)"> <rect @@ -1556,14 +1656,14 @@ height="16" width="16" id="rect3170-4" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <path id="rect3161-5" d="m 83,571 -9,0 0,11 9,0 0,-11 z m -2,1 0,9 -6,0 0,-9 6,0 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" + style="fill:#000000;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" /> <path - style="fill:#dbdbdb;fill-opacity:1;stroke:none;display:inline" + style="fill:#000000;fill-opacity:1;stroke:none;display:inline" d="M 79,579 76.5,576.5 79,574 z" id="path4784-1-5" inkscape:connector-curvature="0" @@ -1572,7 +1672,7 @@ <g transform="translate(33,0)" id="src/plugins/coreplugin/images/splitbutton_closeright" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath3271-1)"> <rect y="568" @@ -1580,14 +1680,14 @@ height="16" width="16" id="rect3170-4-1" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <path id="rect3161-5-4" d="m 74,571 9,0 0,11 -9,0 0,-11 z m 2,1 0,9 6,0 0,-9 -6,0 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" + style="fill:#000000;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" /> <path - style="fill:#dbdbdb;fill-opacity:1;stroke:none;display:inline" + style="fill:#000000;fill-opacity:1;stroke:none;display:inline" d="M 78,579 80.5,576.5 78,574 z" id="path4784-1-5-2" inkscape:connector-curvature="0" @@ -1596,7 +1696,7 @@ <g transform="translate(16,0)" id="src/plugins/coreplugin/images/splitbutton_closetop" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath3182-1)"> <rect y="568" @@ -1604,14 +1704,14 @@ height="16" width="16" id="rect3170-2" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <path id="rect3161-4" d="m 59,582 0,-9 11,0 0,9 -11,0 z m 1,-2 9,0 0,-6 -9,0 0,6 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" + style="fill:#000000;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" /> <path - style="fill:#dbdbdb;fill-opacity:1;stroke:none;display:inline" + style="fill:#000000;fill-opacity:1;stroke:none;display:inline" d="M 67,578 64.5,575.5 62,578 z" id="path4784-1-55" inkscape:connector-curvature="0" @@ -1619,7 +1719,7 @@ </g> <g id="src/plugins/coreplugin/images/splitbutton_horizontal" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath4080)" transform="translate(1,0)"> <rect @@ -1628,34 +1728,34 @@ height="16" width="16" id="rect4068" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <rect y="571.5" x="122.5" height="10" width="7" id="rect3290" - style="fill:none;stroke:#dbdbdb;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path4060" d="m 122.5,576.5 7,0" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path4064" d="m 131,576.5 5,0" - style="fill:#ffffff;fill-opacity:0;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path4066" d="m 133.5,574 0,5" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g transform="translate(17,0)" id="src/plugins/coreplugin/images/splitbutton_vertical" - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" clip-path="url(#clipPath4080-1)"> <rect y="568" @@ -1663,40 +1763,48 @@ height="16" width="16" id="rect4068-1" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> <rect y="572.5" x="121.5" height="8.0002642" width="8.0000114" id="rect3290-4" - style="fill:none;stroke:#dbdbdb;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path4060-2" d="m 125.5,573 0,7" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" sodipodi:nodetypes="cc" /> <path inkscape:connector-curvature="0" id="path4064-3" d="m 131,576.5 5,0" - style="fill:#ffffff;fill-opacity:0;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <path inkscape:connector-curvature="0" id="path4066-2" d="m 133.5,574 0,5" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g id="src/plugins/coreplugin/images/reload_reset_gray" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath3204)"> + <rect + style="fill:#ffffff" + id="rect3992" + width="16" + height="16" + x="153" + y="568" /> <g - id="g3973"> + id="g3973" + style=""> <path sodipodi:type="arc" - style="fill:none;stroke:#dbdbdb;stroke-opacity:1;stroke-linecap:butt;stroke-width:1.15;stroke-miterlimit:4;stroke-dasharray:none" + style="fill:none;stroke:#000000;stroke-opacity:1;stroke-linecap:butt;stroke-width:1.15;stroke-miterlimit:4;stroke-dasharray:none" id="path3201" sodipodi:cx="161" sodipodi:cy="576" @@ -1707,7 +1815,7 @@ sodipodi:end="5.1422636" sodipodi:open="true" /> <path - style="fill:#dbdbdb;fill-opacity:1;stroke:none" + style="fill:#000000;fill-opacity:1;stroke:none" d="m 161,574 6,0 -4,-4.5 z" id="path3971" inkscape:connector-curvature="0" @@ -1720,14 +1828,8 @@ id="use3977" xlink:href="#g3973" y="0" - x="0" /> - <rect - style="fill:none;stroke:none" - id="rect3992" - width="16" - height="16" - x="153" - y="568" /> + x="0" + style="" /> </g> <g style="display:inline" @@ -1798,84 +1900,93 @@ </g> <g id="src/plugins/diffeditor/images/unifieddiff" - clip-path="url(#clipPath3218)"> + clip-path="url(#clipPath3218)" + style=""> + <rect + y="568" + x="169" + height="16" + width="16" + id="rect3203" + style="fill:#ffffff" /> <g - style="stroke:#dbdbdb;stroke-opacity:1;filter:url(#1_pixel_shadow)" + style="stroke:#dbdbdb;stroke-opacity:1;" id="g3203"> <path id="path3429" - style="fill:none;stroke:#dbdbdb;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 178,578.5 4,0 m -7,3 5,-10 m -9,4 5,0 m -2.5,-2.5 0,5 m -4,-6.5 14,0 0,10 -14,0 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccc" /> - <rect - y="568" - x="169" - height="16" - width="16" - id="rect3203" - style="fill:none;stroke:none" /> </g> </g> <g id="src/plugins/diffeditor/images/sidebysidediff" clip-path="url(#clipPath4031)" - style="filter:url(#1_pixel_shadow)"> - <path - id="rect4001" - style="fill:none;stroke:#dbdbdb;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" - d="m 185.5,571.5 14,0 0,10 -14,0 z m 9,5 2,0 c 0,0 1,0.5 1,1.5 0,1 -1,1.5 -1,1.5 l -2,0 0,-6 2,0 c 0,0 1,0.5 1,1.5 0,1 -1,1.5 -1,1.5 m -9,1 3,0 m -3,2.5 c 0,-1.83333 0,-4 0,-5.5 0,0 0,-1 1.5,-1 1.5,0 1.5,1 1.5,1 l 0,5.5 0,0 m 2,-8.5 0,10" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccsccccscccccsccccc" /> + style=""> <rect - style="fill:none;stroke:none" + style="fill:#ffffff" id="rect4023" width="16" height="16" x="185" y="568" /> + <path + id="rect4001" + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="m 185.5,571.5 14,0 0,10 -14,0 z m 9,5 2,0 c 0,0 1,0.5 1,1.5 0,1 -1,1.5 -1,1.5 l -2,0 0,-6 2,0 c 0,0 1,0.5 1,1.5 0,1 -1,1.5 -1,1.5 m -9,1 3,0 m -3,2.5 c 0,-1.83333 0,-4 0,-5.5 0,0 0,-1 1.5,-1 1.5,0 1.5,1 1.5,1 l 0,5.5 0,0 m 2,-8.5 0,10" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccsccccscccccsccccc" /> </g> <g id="src/plugins/diffeditor/images/topbar" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath3233)"> - <path - sodipodi:nodetypes="cccccccccc" - inkscape:connector-curvature="0" - id="rect3233" - d="m 204,571 0,11 10,0 0,-11 z m 1,5 8,0 0,5 -8,0 z" - style="fill:#dbdbdb;fill-opacity:1;stroke:none" /> <rect y="568" x="201" height="16" width="16" id="rect3219" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> + <path + sodipodi:nodetypes="cccccccccc" + inkscape:connector-curvature="0" + id="rect3233" + d="m 204,571 0,11 10,0 0,-11 z m 1,5 8,0 0,5 -8,0 z" + style="fill:#000000;fill-opacity:1;stroke:none" /> </g> <g - style="display:inline;filter:url(#1_pixel_shadow)" + style="display:inline;" id="src/plugins/coreplugin/images/arrowdown" transform="translate(217,-16)" clip-path="url(#clipPath4007)"> - <path - style="fill:none;stroke:#dbdbdb;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="M 3,590 7.5,594.5 12,590" - id="path3970" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccc" /> <rect y="584" x="0" height="16" width="16" id="rect3817" - style="fill:none" /> + style="fill:#ffffff" /> + <path + style="fill:none;stroke:#000000;stroke-width:1.20000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 3,590 7.5,594.5 12,590" + id="path3970" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> </g> <g id="src/plugins/coreplugin/images/arrowup" - style="filter:url(#1_pixel_shadow)" + style="" clip-path="url(#clipPath4026)"> + <rect + transform="scale(1,-1)" + style="fill:#ffffff" + id="rect4000" + width="16" + height="16" + x="233" + y="-584" /> <use id="use3994" xlink:href="#path3970" @@ -1883,15 +1994,901 @@ x="0" width="800" height="600" - transform="matrix(1,0,0,-1,233,1169)" /> + transform="matrix(1,0,0,-1,233,1169)" + style="" /> + </g> + <g + transform="translate(-503,368)" + style="display:inline;fill:none;stroke:none" + id="src/plugins/coreplugin/images/prev"> <rect - transform="scale(1,-1)" - style="fill:none" - id="rect4000" + id="rect4827-5" + height="16" width="16" + y="200" + x="750" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.41;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 761,202 -5.5,6 5.5,6" + id="path5674" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + </g> + <use + x="0" + y="0" + xlink:href="#src/plugins/coreplugin/images/prev" + id="src/plugins/coreplugin/images/next" + transform="matrix(-1,0,0,1,526,0)" + width="100%" + height="100%" /> + <g + transform="translate(485,418)" + id="src/plugins/coreplugin/find/images/expand"> + <rect + id="rect4760-6" height="16" - x="233" - y="-584" /> + width="16" + y="150" + x="100" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + id="rect4941-4" + d="m 102,153 0,2 12,0 0,-2 -12,0 z m 1,4 0,1 2,0 0,-1 -2,0 z m 4,0 0,1 7,0 0,-1 -7,0 z m -4,3 0,1 2,0 0,-1 -2,0 z m 4,0 0,1 7,0 0,-1 -7,0 z m -4,3 0,1 2,0 0,-1 -2,0 z m 4,0 0,1 7,0 0,-1 -7,0 z" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + id="src/plugins/projectexplorer/images/run_small" + transform="translate(112,0)"> + <rect + id="rect4901-1" + height="16" + width="16" + y="568" + x="249" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <polygon + transform="translate(-201,318)" + id="polygon4899-2" + points="464,258 453,251 453,265 " + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + id="src/plugins/projectexplorer/images/stop_small" + transform="translate(112,0)"> + <rect + id="rect4907-4" + height="16" + width="16" + y="568" + x="265" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <rect + id="rect4905-9" + height="12" + width="12" + y="570" + x="267" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + id="src/plugins/coreplugin/images/run_overlay_small" + transform="translate(-32,0)"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none" + x="425" + y="568" + width="16" + height="16" + id="rect4959-4-0" /> + <polygon + style="fill:#000000;fill-opacity:1;stroke:none" + id="polygon4953-0-5" + points="616,262 610,258 610,266 " + transform="matrix(1.3333333,0,0,1.125,-381.33331,283.75)" /> + </g> + <g + id="src/plugins/coreplugin/images/stop_overlay_small" + transform="translate(-32,0)"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none" + x="441" + y="568" + width="16" + height="16" + id="rect4959-4-0-0" /> + <rect + y="575" + x="448" + height="8" + width="8" + id="rect6539" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + id="src/plugins/coreplugin/images/interrupt_overlay_small" + transform="translate(-32,0)"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none" + x="457" + y="568" + width="16" + height="16" + id="rect4959-4-0-0-6" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4608" + width="3" + height="8" + x="464" + y="575" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4610" + width="3" + height="8" + x="469" + y="575" /> + </g> + <g + id="src/plugins/coreplugin/images/continue_overlay_small"> + <rect + id="rect4959-4-0-0-6-5" + height="16" + width="16" + y="568" + x="441" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.35263491;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5679" + sodipodi:type="arc" + sodipodi:cx="451.49854" + sodipodi:cy="578.72314" + sodipodi:rx="3.3180437" + sodipodi:ry="3.556159" + sodipodi:start="2.3561945" + sodipodi:end="0.61086524" + d="m 449.15232,581.23773 a 3.3180437,3.556159 0 0 1 -0.13245,-4.87871 3.3180437,3.556159 0 0 1 4.53663,-0.42538 3.3180437,3.556159 0 0 1 0.66002,4.82923" + sodipodi:open="true" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 445.38724,581.53989 451,578.51118 451,583 Z" + id="path5681" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + <g + id="src/plugins/coreplugin/images/debugger_overlay_small"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none" + x="457" + y="568" + width="16" + height="16" + id="rect4959-4" /> + <g + id="g6659" + transform="translate(0,0.625)"> + <path + id="asdfasdfasdf" + inkscape:connector-curvature="0" + d="m 463.334,569 c -0.678,0 -1.757,0.619 -2.071,1.453 l 2.071,1.164 2.07,-1.164 C 465.09,569.619 464.01,569 463.334,569 Z" /> + <path + id="sdfgdsfgsdfg" + inkscape:connector-curvature="0" + d="m 459.744,571.939 -0.703,-0.703 c -0.131,-0.131 -0.342,-0.131 -0.473,0 l 0,0 c -0.129,0.129 -0.129,0.342 0,0.471 l 0.939,0.938 -0.424,1.695 -0.75,0 c -0.184,0 -0.334,0.15 -0.334,0.334 0,0.184 0.15,0.334 0.334,0.334 l 0.77,0 0.582,1.861 -0.77,0.771 c -0.13,0.129 -0.13,0.342 0,0.471 0.129,0.13 0.342,0.13 0.471,0 l 0.642,-0.641 1.806,1.203 1.166,0.327 0,-5.166 0,-1.639 -2.171,-1.222 -1.085,0.966 z" /> + <use + height="100%" + width="100%" + transform="matrix(-1,0,0,1,926.71775,0)" + id="use6516" + xlink:href="#sdfgdsfgsdfg" + y="0" + x="0" /> + </g> + </g> + <g + id="src/plugins/analyzerbase/images/analyzer_overlay_small"> + <rect + id="rect4959-4-5" + height="16" + width="16" + y="568" + x="473" + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + id="rect4603-5" + d="m 474,570 0,10 10,0 0,-1 -9,0 0,-9 z m 2,0 0,2 8,0 0,-2 z m 0,3 0,2 6,0 0,-2 z m 0,3 0,2 4,0 0,-2 z" + style="fill:#000000;fill-opacity:1;stroke:none" /> + </g> + <g + transform="translate(169,368)" + style="display:inline" + id="src/plugins/coreplugin/images/zoom"> + <rect + id="rect4723-6" + height="16" + width="16" + y="200" + x="400" + style="fill:#ffffff;fill-opacity:1" /> + <g + id="magnifying_lense" + style="fill:#000000;fill-opacity:1"> + <path + id="path4719-8" + d="m 401.45736,213.21148 c -0.156,0.155 -0.156,0.41 0,0.565 l 0.84663,0.84863 c 0.156,0.154 0.41,0.154 0.566,0 L 407.231,210.24 c 0.156,-0.154 0.156,-0.41 0.001,-0.565 l -0.84763,-0.84763 c -0.156,-0.156 -0.41,-0.156 -0.566,0 z" + inkscape:connector-curvature="0" + style="fill-opacity:1" + sodipodi:nodetypes="cccccsscc" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.173913;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5669" + cx="409.5" + cy="206.5" + r="3.9130435" /> + </g> + </g> + <g + transform="translate(29,268)" + id="src/plugins/coreplugin/images/plus"> + <rect + id="rect5187-0" + height="16" + width="16" + y="300" + x="300" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1" + d="m 432,570 0,5 -5,0 0,2 5,0 0,5 2,0 0,-5 5,0 0,-2 -5,0 0,-5 -2,0 z" + transform="translate(-125,-268)" + id="rect5183-1" /> + </g> + <g + style="display:inline" + transform="translate(45,268)" + id="src/plugins/coreplugin/images/minus"> + <rect + id="rect5187-0-8" + height="16" + width="16" + y="300" + x="300" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1" + d="m 427,575 0,2 12,0 0,-2 z" + transform="translate(-125,-268)" + id="rect5183-1-5" /> + </g> + <g + transform="translate(-219,368)" + style="display:inline" + id="src/plugins/coreplugin/images/clean_pane_small"> + <rect + id="rect4672-0" + height="16" + width="16" + y="200" + x="500" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <polygon + style="fill:#000000;fill-opacity:1;stroke:none" + points="515,315 515,308 510,308 510,310 514,310 514,314 510,314 509,314 508,314 508,315 " + id="polygon5319-7" + transform="translate(0,-100)" /> + <path + id="path5323-9" + d="m 506,207 0,0 c -0.552,0 -1,-0.448 -1,-1 l 0,-4 c 0,-0.552 0.448,-1 1,-1 l 0,0 c 0.552,0 1,0.448 1,1 l 0,4 c 0,0.552 -0.448,1 -1,1 z" + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <path + id="path5325-5" + d="m 503,207 0.171,-0.342 c 0.508,-1.016 1.547,-1.658 2.683,-1.658 l 0.292,0 c 1.136,0 2.175,0.642 2.683,1.658 L 509,207 l -6,0 z" + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1;stroke:none" /> + <polygon + id="polygon5327-8" + points="508,313 501,313 503,308 509,308 " + style="fill:#000000;fill-opacity:1;stroke:none" + transform="translate(0,-100)" /> + </g> + <g + id="src/plugins/coreplugin/images/sidebaricon" + clip-path="none" + transform="translate(383,0)"> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:none" + id="rect3216" + width="16" + height="16" + x="218" + y="568" /> + <path + style="fill:#000000;fill-opacity:1;stroke:none" + d="m 220,582 11,0 0,-11 -11,0 z m 5,-1 0,-9 5,0 0,9 z" + id="use3223" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccc" /> + </g> + <g + id="g6019" /> + <g + transform="translate(-83,318)" + id="src/plugins/qmldesigner/components/navigator/arrowup" + style="fill:none;stroke:none"> + <rect + id="rect6596-2" + height="16" + width="16" + y="250" + x="700" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <g + id="g7250" + style="fill:#000000;fill-opacity:1;stroke:none"> + <polygon + style="fill:#000000;fill-opacity:1;stroke:none" + points="702.146,257.146 707.5,251.793 712.854,257.146 712.146,257.854 707.5,253.207 702.854,257.854 " + id="polygon6590-1" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + x="707" + y="253" + width="1" + height="11" + id="rect6594-4" /> + </g> + </g> + <use + x="0" + y="0" + xlink:href="#src/plugins/qmldesigner/components/navigator/arrowup" + id="src/plugins/qmldesigner/components/navigator/arrowdown" + transform="matrix(1,0,0,-1,16,1152)" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#src/plugins/qmldesigner/components/navigator/arrowup" + id="src/plugins/qmldesigner/components/navigator/arrowleft" + transform="matrix(0,1,1,0,81,-49)" + width="100%" + height="100%" /> + <use + x="0" + y="0" + xlink:href="#src/plugins/qmldesigner/components/navigator/arrowleft" + id="src/plugins/qmldesigner/components/navigator/arrowright" + transform="matrix(-1,0,0,1,1330,0)" + width="100%" + height="100%" /> + <g + transform="translate(281,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/navigator/eye_open"> + <rect + id="rect6782-9" + height="16" + width="16" + y="300" + x="400" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + id="path6778-0" + d="m 408,305 c 1.932,0 4.282,1.794 5.583,3.001 -1.298,1.207 -3.645,2.999 -5.583,2.999 -1.932,0 -4.282,-1.794 -5.583,-3.001 C 403.715,306.792 406.062,305 408,305 m 0,-1 c -3.314,0 -7,4 -7,4 0,0 3.686,4 7,4 3.314,0 7,-4 7,-4 0,0 -3.686,-4 -7,-4 l 0,0 z" + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1" /> + <circle + id="circle6780-4" + r="2.5" + cy="307.5" + cx="408" + style="fill:#000000;fill-opacity:1" /> + </g> + <g + transform="translate(247,268)" + id="src/plugins/qmldesigner/components/navigator/eye_closed"> + <rect + id="rect6790-1" + height="16" + width="16" + y="300" + x="450" + style="fill:#ffffff;fill-opacity:1" /> + <path + style="fill:#000000;fill-opacity:1" + inkscape:connector-curvature="0" + d="m 465,308 c 0,0 -3.686,4 -7,4 -3.314,0 -7,-4 -7,-4 0,0 3.686,-4 7,-4 3.314,0 7,4 7,4 z" + id="path6788-2" /> + </g> + <g + transform="translate(362,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/navigator/export_checked"> + <rect + id="rect6774-6" + height="16" + width="16" + y="300" + x="350" + style="fill:#ffffff;fill-opacity:1" /> + <path + style="fill:#000000;fill-opacity:1" + d="m 619,570 0,3 1,0 0,-2 10,0 0,11 -10,0 0,-2 -1,0 0,3 12,0 0,-13 -12,0 z m -2,4 0,1 5,0 0,-1 -5,0 z m 0,2 0,1 5,0 0,-1 -5,0 z m 0,2 0,1 5,0 0,-1 -5,0 z" + transform="translate(-266,-268)" + id="polygon6766-5" + inkscape:connector-curvature="0" /> + </g> + <g + id="src/plugins/qmldesigner/components/navigator/export_unchecked" + transform="translate(378,268)"> + <rect + style="fill:#ffffff;fill-opacity:1" + x="350" + y="300" + width="16" + height="16" + id="rect7336" /> + <path + style="opacity:0.8;fill:#000000;fill-opacity:1" + d="m 353,302 0,3 1,0 0,-2 10,0 0,11 -10,0 0,-2 -1,0 0,3 12,0 0,-13 z" + id="path7346" + inkscape:connector-curvature="0" /> + <path + id="path7338" + style="opacity:0.5;fill:#000000;fill-opacity:1" + d="m 353,310 0,1 3,0 0,-1 z m 0,-2 0,1 3,0 0,-1 z m 0,-2 0,1 3,0 0,-1 z" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(694,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/formeditor/no_snapping"> + <rect + id="rect6654-0" + height="16" + width="16" + y="300" + x="50" + style="fill:#ffffff;fill-opacity:1" /> + <path + id="polygon6648-1" + style="opacity:0.8;fill:#000000;fill-opacity:1" + d="m 56,315 0,-5 -2.5,2.5 z m 3,-8 5,0 -2.5,-2.5 z m -8,-5 1,0 0,13 -1,0 z m 0,0 13,0 0,1 -13,0 z" + inkscape:connector-curvature="0" /> + <rect + id="rect6650-3" + height="0.50099999" + width="7.9990001" + transform="matrix(-0.7071,0.7071,-0.7071,-0.7071,324.7387,489.4781)" + y="311.74399" + x="56.995998" + style="fill:#000000;fill-opacity:1" /> + <rect + id="rect6652-4" + height="0.5" + width="8" + transform="matrix(-0.707,-0.7072,0.7072,-0.707,-116.5111,575.7229)" + y="311.745" + x="56.994999" + style="fill:#000000;fill-opacity:1" /> + </g> + <g + transform="translate(660,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/formeditor/snapping_and_anchoring"> + <rect + id="rect6676-2" + height="16" + width="16" + y="300" + x="100" + style="fill:#ffffff;fill-opacity:1" /> + <path + id="polygon6674-3" + style="fill:#000000;fill-opacity:1" + d="m 106,310 -2.5,2.5 2.5,2.5 z m 8,-3 -2.5,-2.5 -2.5,2.5 z m -13,-5 13,0 0,1 -13,0 z m 0,0 1,0 0,13 -1,0 z" + inkscape:connector-curvature="0" /> + <path + id="path7627" + style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="m 109.5,315 0,-4.5 c 0,0 0,-1 1.5,-1 1.5,0 1.5,1 1.5,1 l 0,4.5 m -3,-2.5 3,0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccscccc" /> + </g> + <g + transform="translate(695.36962,268.17679)" + style="display:inline" + id="src/plugins/qmldesigner/components/formeditor/snapping"> + <rect + id="rect6690-2" + height="16" + width="16" + y="299.82321" + x="80.630379" + style="fill:#ffffff;fill-opacity:1" /> + <path + id="polygon6686-2" + transform="translate(-69.369828,-0.1767767)" + style="fill:#000000;fill-opacity:1" + d="m 156,315 0,-5 -2.5,2.5 z m 3,-8 5,0 -2.5,-2.5 z m -7.99979,-5.00001 1,0 0,13 -1,0 z m 0,0 13,0 0,1 -13,0 z" + inkscape:connector-curvature="0" /> + <rect + id="rect6688-8" + height="6" + width="6" + y="308.82321" + x="88.630379" + style="opacity:0.7;fill:#000000;fill-opacity:1" /> + </g> + <g + transform="translate(592,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/formeditor/boundingrect"> + <rect + id="rect6754-2" + height="16" + width="16" + y="300" + x="200" + style="fill:#ffffff;fill-opacity:1" /> + <path + id="path6752-4" + style="fill:#000000;fill-opacity:1" + d="m 211,306 0,5 -7,0 0,-5 7,0 m 1,-1 -9,0 0,7 9,0 0,-7 0,0 z m -11,8 1,0 0,1 -1,0 z m 2,0 1,0 0,1 -1,0 z m 10,-10 1,0 0,1 -1,0 z m -12,2 1,0 0,1 -1,0 z m 0,6 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m 4,6 1,0 0,1 -1,0 z m 2,0 1,0 0,1 -1,0 z m 2,0 1,0 0,1 -1,0 z m 2,0 1,0 0,1 -1,0 z m 2,0 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m 0,-2 1,0 0,1 -1,0 z m -2,-2 1,0 0,1 -1,0 z m -2,0 1,0 0,1 -1,0 z m -2,0 1,0 0,1 -1,0 z m -2,0 1,0 0,1 -1,0 z m -2,0 1,0 0,1 -1,0 z m -2,0 1,0 0,1 -1,0 z" + inkscape:connector-curvature="0" /> + </g> + <g + transform="translate(558,268)" + style="display:inline" + id="src/plugins/qmldesigner/components/formeditor/reset"> + <rect + id="rect6700-2" + height="16" + width="16" + y="300" + x="250" + style="fill:#ffffff;fill-opacity:1" /> + <g + id="g6694-7" + style="fill:#000000;fill-opacity:1"> + <polygon + id="polygon6696-3" + points="261,304.5 258,302 258,307 " + style="fill:#000000;fill-opacity:1" /> + <path + id="path6698-5" + d="m 258,313 c -2.206,0 -4,-1.795 -4,-4 0,-2.205 1.794,-4 4,-4 l 0,-1 c -2.762,0 -5,2.238 -5,5 0,2.762 2.238,5 5,5 2.762,0 5,-2.238 5,-5 l -1,0 c 0,2.205 -1.794,4 -4,4 z" + inkscape:connector-curvature="0" + style="fill:#000000;fill-opacity:1" /> + </g> + </g> + <g + id="src/plugins/debugger/images/debugger_stepover_small" + transform="translate(16,0)"> + <rect + id="rect4959-4-5-4" + height="16" + width="16" + y="568" + x="473" + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + id="debugger_function" + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.20000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 483,578 5,0 0,1 -5,0 z m 0,-2 5,0 0,1 -5,0 z m 0,-2 5,0 0,1 -5,0 z m -2,7 7,0 0,2 -7,0 z m 0,-11 7,0 0,2 -7,0 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccsccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 480,570.5 c -5.5,0 -5.5,3 -5.5,4.5 0,0.5 0.5,4 5,7.5" + id="path4741" + inkscape:connector-curvature="0" + sodipodi:nodetypes="csc" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 480,583 0,-4 -4,4 z" + id="path4743" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + <g + style="display:inline" + id="src/plugins/debugger/images/debugger_stepinto_small" + transform="translate(32,0)"> + <rect + id="rect4959-4-5-4-2" + height="16" + width="16" + y="568" + x="473" + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" /> + <use + x="0" + y="0" + xlink:href="#debugger_function" + id="use4745" + width="100%" + height="100%" /> + <g + id="debugger_step_arrow" + transform="translate(-32,0)"> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4755" + d="m 506.5,570 c 0,6.5 0.40625,6.5 5.40625,6.5625" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + id="path4757" + d="m 510,579.5 3,-3 -3,-3 z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + </g> + <g + style="display:inline" + id="src/plugins/debugger/images/debugger_stepout_small" + transform="translate(48,0)"> + <rect + id="rect4959-4-5-4-4" + height="16" + width="16" + y="568" + x="473" + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" /> + <use + x="0" + y="0" + xlink:href="#debugger_function" + id="use4749" + width="100%" + height="100%" /> + <g + transform="matrix(0,1,-1,0,1053.7441,68.755917)" + id="use4766"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 505.74408,571.7441 c 1e-5,4 1,4.5 7,4.5" + id="path4772" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 511.24408,579.2441 3,-3 -3,-3 z" + id="path4774" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> + </g> + <g + style="display:inline" + id="src/plugins/debugger/images/debugger_restart_small" + transform="translate(64,0)"> + <rect + id="rect4959-4-5-4-4-7-0" + height="16" + width="16" + y="568" + x="473" + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4663-0" + width="2" + height="6" + x="480" + y="569" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4665-4" + sodipodi:type="arc" + sodipodi:cx="480.9993" + sodipodi:cy="576.5" + sodipodi:rx="5.4992981" + sodipodi:ry="5" + sodipodi:start="5.2359878" + sodipodi:end="4.1887902" + d="m 483.74895,572.16987 a 5.4992981,5 0 0 1 2.56226,5.62423 5.4992981,5 0 0 1 -5.31191,3.7059 5.4992981,5 0 0 1 -5.31192,-3.7059 5.4992981,5 0 0 1 2.56227,-5.62423" + sodipodi:open="true" /> + <path + sodipodi:open="true" + d="m 480.9993,581.5 a 5.4992981,5 0 0 1 -5.13232,-3.20409 5.4992981,5 0 0 1 1.44544,-5.50579" + sodipodi:end="3.9776054" + sodipodi:start="1.5707963" + sodipodi:ry="5" + sodipodi:rx="5.4992981" + sodipodi:cy="576.5" + sodipodi:cx="480.9993" + sodipodi:type="arc" + id="path4711" + style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 481,583.35937 3.5,-2.72679 -3.5,-0.86696" + id="path4713" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + </g> + <g + id="src/plugins/debugger/images/debugger_singleinstructionmode" + style="display:inline"> + <rect + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" + x="553" + y="568" + width="16" + height="16" + id="rect4749" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4772" + width="12" + height="12" + x="554.5" + y="570.5" /> + <path + id="rect4774-5-6" + style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 557,579 4,0 0,1 -4,0 z m 2,-3 6,0 0,1 -6,0 z m -2,-3 6,0 0,1 -6,0 z" + inkscape:connector-curvature="0" /> + </g> + <g + id="src/leafsort"> + <rect + y="568" + x="824" + height="16" + width="16" + id="rect4660" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4656" + d="m 826.5,581.5 c 2.37618,-0.0867 4.70264,-1.61528 6.19887,-5.39775" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cscsc" + inkscape:connector-curvature="0" + id="path4658" + d="m 835.51831,570.51831 c -2.5,2 -3.61026,2.21949 -4.61389,3.11238 -2.23707,1.99023 -1.43987,3.45325 -0.40442,5.86931 2.81431,0 3.84548,-0.55002 4.45682,-1.80486 0.69202,-1.42043 0.54318,-3.19514 0.56149,-7.17683 z" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <g + style="display:inline" + id="src/sort" + transform="translate(16,0)"> + <rect + y="568" + x="824" + height="16" + width="16" + id="rect4660-6" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <path + id="path4691" + style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" + d="m 833.5,576 0,-4.5 c 0,0 0,-1 1.5,-1 1.5,0 1.5,1 1.5,1 l 0,4.5 m -3,-2.5 3,0" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccscccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-opacity:1" + d="m 833,577.5 3.5,0 -3,5 3.5,0" + id="path4744" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 826,580 2.5,2.5 2.5,-2.5 z" + id="path4774-2" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 828.5,581 0,-10" + id="path4720" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> + <g + style="display:inline" + id="src/expand" + transform="translate(32,0)"> + <rect + y="568" + x="824" + height="16" + width="16" + id="rect4660-6-5" + style="fill:#ffffff;fill-opacity:1;stroke:none" /> + <rect + style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-linejoin:bevel;stroke-opacity:1" + id="expand-rect" + width="8" + height="8" + x="827.5" + y="572.5" + rx="2" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 829,576.5 5,0" + id="path4815" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 831.5,574 0,5" + id="path4817" + inkscape:connector-curvature="0" /> + </g> + <g + id="src/collapse"> + <rect + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" + id="rect4660-6-5-9" + width="16" + height="16" + x="872" + y="568" /> + <use + height="100%" + width="100%" + transform="translate(48,0)" + id="use4808" + xlink:href="#expand-rect" + y="0" + x="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 877,576.5 5,0" + id="path4819" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> + <g + id="src/runselected_overlay"> + <rect + style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none" + width="16" + height="16" + x="888" + y="568" + id="rect4564" /> + <g + id="g4912" + transform="translate(0,-1)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 897.5,572.5 2,2 3,-4" + id="path4853" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <rect + y="571.5" + x="897.5" + height="4" + width="4" + id="rect4908" + style="opacity:0.5;fill:none;fill-opacity:1;stroke:#000000;stroke-linejoin:miter;stroke-opacity:1" /> + </g> + <use + x="0" + y="0" + xlink:href="#g4912" + id="use4916" + transform="translate(0,8)" + width="100%" + height="100%" /> </g> </g> <g @@ -1963,7 +2960,7 @@ x="48" y="552" /> <path - d="m 61.2929,560 a 5.2929,5.2929 0 1 1 -10.5858,0 5.2929,5.2929 0 1 1 10.5858,0 z" + d="M 61.2929,560 A 5.2929001,5.2929001 0 0 1 56,565.2929 5.2929001,5.2929001 0 0 1 50.7071,560 5.2929001,5.2929001 0 0 1 56,554.7071 5.2929001,5.2929001 0 0 1 61.2929,560 Z" sodipodi:ry="5.2929" sodipodi:rx="5.2929" sodipodi:cy="560" @@ -2022,52 +3019,35 @@ <g id="src/plugins/coreplugin/images/compile_error_taskbar" transform="translate(-76,-48)"> - <path - inkscape:connector-curvature="0" - id="path4020" - d="m 77,589 4,-4 6,0 4,4 0,6 -4,4 -6,0 -4,-4 z" - style="fill:#8a0101;fill-opacity:1;stroke:none" /> - <path - inkscape:connector-curvature="0" - id="path4022" - d="m 81.5,586.5 5,0 3,3 0,5 -3,3 -5,0 -3,-3 0,-5 3,-3" - style="fill:url(#radialGradient4553);fill-opacity:1;stroke:#e36565;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> <rect y="584" x="76" height="16" width="16" id="rect4024" - style="fill:none;stroke:none" /> + style="fill:#ffffff" /> + <path + id="path5306-6" + d="M 87.501011,586 80.498989,586 77,592 l 3.498989,6 7.002022,0 L 91,592 Z" + inkscape:connector-curvature="0" + style="display:inline;fill:#000000" + sodipodi:nodetypes="ccccccc" /> </g> <g id="src/plugins/coreplugin/images/warning" transform="translate(-437,-48)"> <rect - style="fill:none;stroke:none" + style="fill:#ffffff;stroke:none" id="use3942" width="16" height="16" x="453" y="584" /> <path - sodipodi:nodetypes="cccc" - inkscape:connector-curvature="0" - id="path3945" - d="m 454,598.5 7,-13 7,13 z" - style="fill:#fcd171;fill-opacity:1;stroke:#493703;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - style="fill:url(#linearGradient3875);fill-opacity:1;stroke:none" - d="m 456.5,597 9,0 -4.5,-8.82322 z" - id="path3974" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - <path + id="path5300-7" + d="m 461.5,586 -1,0 -5.5,11 0,1 12,0 0,-1 -5.5,-11 z m -0.5,11 c -0.553,0 -1,-0.447 -1,-1 0,-0.553 0.447,-1 1,-1 0.553,0 1,0.447 1,1 0,0.553 -0.447,1 -1,1 z m 0.7,-3 -1.4,0 -0.3,-5 2,0 -0.3,5 z" inkscape:connector-curvature="0" - style="fill:#493703;fill-opacity:1;stroke:none" - d="m 460,590 0.5,5 1,0 0.5,-5 z m 0,6 0,1 2,0 0,-1 z" - id="path3959" - sodipodi:nodetypes="cccccccccc" /> + style="display:inline;fill:#000000" /> </g> <g id="src/plugins/coreplugin/images/error" @@ -2081,10 +3061,10 @@ y="0" x="0" /> <path - inkscape:connector-curvature="0" - style="fill:#eea1a1;fill-opacity:1;stroke:none" - d="m 477,588 0.5,5 1,0 0.5,-5 -2,0 z m 0,6 0,2 2,0 0,-2 -2,0 z" - id="path3890" /> + style="display:inline;fill:#ffffff" + d="m 477,588 0.29981,5 1.40038,0 0.29981,-5 -2,0 z m 1,6 c -0.55334,0 -1,0.447 -1,1 0,0.553 0.44666,1 1,1 0.55234,0 1,-0.447 1,-1 0,-0.553 -0.44666,-1 -1,-1 z" + id="path6028" + inkscape:connector-curvature="0" /> </g> <g id="src/plugins/coreplugin/images/info" @@ -2095,32 +3075,12 @@ height="16" width="16" id="rect4024-7" - style="fill:none;stroke:none" /> - <path - sodipodi:type="arc" - style="fill:#01218a;fill-opacity:1;stroke:none" - id="path3203" - sodipodi:cx="56" - sodipodi:cy="544" - sodipodi:rx="7" - sodipodi:ry="7" - d="m 63,544 a 7,7 0 0 1 -7,7 7,7 0 0 1 -7,-7 7,7 0 0 1 7,-7 7,7 0 0 1 7,7 z" - transform="translate(438,48)" /> - <path - sodipodi:type="arc" - style="fill:url(#radialGradient3994);fill-opacity:1;stroke:#6583e3;stroke-opacity:1" - id="path3986" - sodipodi:cx="56" - sodipodi:cy="544" - sodipodi:rx="5.5" - sodipodi:ry="5.5" - d="M 61.5,544 A 5.5,5.5 0 0 1 56,549.5 5.5,5.5 0 0 1 50.5,544 5.5,5.5 0 0 1 56,538.5 5.5,5.5 0 0 1 61.5,544 Z" - transform="translate(438,48)" /> + style="fill:#ffffff;stroke:none" /> <path + id="path5294-7" + d="m 494,586 c -3.314,0 -6,2.686 -6,6 0,3.314 2.686,6 6,6 3.314,0 6,-2.686 6,-6 0,-3.314 -2.686,-6 -6,-6 z m 1,10 -2,0 0,-5 2,0 0,5 z m 0,-6 -2,0 0,-2 2,0 0,2 z" inkscape:connector-curvature="0" - style="fill:#a1acee;fill-opacity:1;stroke:none" - d="m 493,588 0,2 2,0 0,-2 -2,0 z m 0,3 0,5 2,0 0,-5 -2,0 z" - id="path3892-2" /> + style="display:inline;fill:#000000" /> </g> <g id="src/plugins/coreplugin/images/warning_big" @@ -2269,72 +3229,77 @@ </g> <g id="src/plugins/coreplugin/images/editclear" - style="opacity:0.6" - transform="translate(-139,-80)"> - <path - d="m 186,592 c 0,3.86599 -3.13401,7 -7,7 -3.86599,0 -7,-3.13401 -7,-7 0,-3.86599 3.13401,-7 7,-7 3.86599,0 7,3.13401 7,7 z" - sodipodi:ry="7" - sodipodi:rx="7" - sodipodi:cy="592" - sodipodi:cx="179" + transform="translate(-139,-80)" + style=""> + <rect + style="opacity:0.60100002;fill:#ffffff;fill-opacity:1;" + id="rect3817-2-9-1-9-6" + width="16" + height="16" + x="171" + y="584" /> + <circle id="path4284" - style="fill:#505050;fill-opacity:1;stroke:none" - sodipodi:type="arc" /> + style="fill:#000000;fill-opacity:1;stroke:none;" + cx="179" + cy="592" + r="7" /> <g id="g4438" - style="filter:url(#soft_shadow)"> + style=""> <rect y="586.24261" x="173.47487" height="10.952218" width="10.898602" id="rect3817-2-9-1-9-6-5" - style="opacity:0.60100002;fill:#ffffff;fill-opacity:0" /> + style="opacity:0.60100002;fill:#ffffff;fill-opacity:0;" /> <path - style="fill:none;stroke:#ffffff;stroke-width:1.7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + style="fill:none;stroke:#ffffff;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;" d="m 176,589 6,6" id="path4478" inkscape:connector-curvature="0" /> <path - style="fill:none;stroke:#ffffff;stroke-width:1.7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + style="fill:none;stroke:#ffffff;stroke-width:1.70000005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;" d="m 176,595 6,-6" id="path4480" inkscape:connector-curvature="0" /> </g> - <rect - style="opacity:0.60100002;fill:#ffffff;fill-opacity:0" - id="rect3817-2-9-1-9-6" - width="16" - height="16" - x="171" - y="584" /> </g> <g style="display:inline" - id="src/plugins/coreplugin/images/sidebaricon" - clip-path="url(#clipPath3237)" - transform="translate(-170,-64)"> - <use - height="600" - width="800" - transform="matrix(0,-1,1,0,-351,785)" - id="use3223" - xlink:href="#rect3233" - y="0" - x="0" /> + id="src/plugins/coreplugin/images/magnifier" + transform="translate(37,-80)"> <rect - style="fill:none;stroke:none" - id="rect3216" - width="16" - height="16" - x="218" - y="568" /> + style="opacity:0.60100002;fill:#ffffff;fill-opacity:1" + id="rect3817-2-9-1-9-6-0" + width="17" + height="11" + x="171" + y="589" /> + <g + transform="translate(-231.13585,386.05488)" + id="magnifying_lense-1" + style="display:inline;fill:#000000;fill-opacity:1"> + <path + id="path4719-8-0" + d="m 402.25285,212.41599 c -0.156,0.155 -0.156,0.41 0,0.565 l 0.84663,0.84863 c 0.156,0.154 0.41,0.154 0.566,0 L 407.231,210.24 c 0.156,-0.154 0.156,-0.41 0.001,-0.565 l -0.84763,-0.84763 c -0.156,-0.156 -0.41,-0.156 -0.566,0 z" + inkscape:connector-curvature="0" + style="fill-opacity:1" + sodipodi:nodetypes="cccccsscc" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.17697227;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path5669-9" + cx="409" + cy="206.94511" + r="3.4115138" /> + </g> <path - id="rect3241-1" - style="fill:none;stroke:#292929;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" - d="m 225.5,572.5 4,0 0,7 -4,0 z m -6,-2 12,0 0,11 -12,0 z" + sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccc" /> + id="path4784-5" + d="m 186,597 -2.5,2.5 -2.5,-2.5 z" + style="display:inline;fill:#000000;fill-opacity:1;stroke:none" /> </g> <g id="src/plugins/coreplugin/images/panel_button" diff --git a/src/tools/iostool/main.cpp b/src/tools/iostool/main.cpp index f902f761cd..90eed751b3 100644 --- a/src/tools/iostool/main.cpp +++ b/src/tools/iostool/main.cpp @@ -531,34 +531,36 @@ void IosTool::run(const QStringList &args) out.writeStartElement(QLatin1String("query_result")); for (int iarg = 1; iarg < args.size(); ++iarg) { const QString &arg = args[iarg]; - if (arg == QLatin1String("-device-id")) { + if (arg == QLatin1String("-i") || arg == QLatin1String("--id")) { if (++iarg == args.size()) { - writeMsg("missing device id value after -device-id"); + writeMsg(QStringLiteral("missing device id value after ") + arg); printHelp = true; } deviceId = args.value(iarg); - } else if (arg == QLatin1String("-bundle")) { + } else if (arg == QLatin1String("-b") || arg == QLatin1String("--bundle")) { if (++iarg == args.size()) { - writeMsg("missing bundle path after -bundle"); + writeMsg(QStringLiteral("missing bundle path after ") + arg); printHelp = true; } bundlePath = args.value(iarg); - } else if (arg == QLatin1String("-deploy")) { + } else if (arg == QLatin1String("--install")) { appOp = Ios::IosDeviceManager::AppOp(appOp | Ios::IosDeviceManager::Install); - } else if (arg == QLatin1String("-run")) { + } else if (arg == QLatin1String("--run")) { appOp = Ios::IosDeviceManager::AppOp(appOp | Ios::IosDeviceManager::Run); - } else if (arg == QLatin1String("-ipv6")) { + } else if (arg == QLatin1String("--noninteractive")) { + // ignored for compatibility + } else if (arg == QLatin1String("--ipv6")) { ipv6 = true; - } else if (arg == QLatin1String("-verbose")) { + } else if (arg == QLatin1String("-v") || arg == QLatin1String("--verbose")) { echoRelays = true; - } else if (arg == QLatin1String("-debug")) { + } else if (arg == QLatin1String("-d") || arg == QLatin1String("--debug")) { appOp = Ios::IosDeviceManager::AppOp(appOp | Ios::IosDeviceManager::Run); debug = true; - } else if (arg == QLatin1String("-device-info")) { + } else if (arg == QLatin1String("--device-info")) { deviceInfo = true; - } else if (arg == QLatin1String("-timeout")) { + } else if (arg == QLatin1String("-t") || arg == QLatin1String("--timeout")) { if (++iarg == args.size()) { - writeMsg("missing timeout value after -timeout"); + writeMsg(QStringLiteral("missing timeout value after ") + arg); printHelp = true; } bool ok = false; @@ -569,10 +571,10 @@ void IosTool::run(const QStringList &args) writeMsg("timeout value should be an integer"); printHelp = true; } - } else if (arg == QLatin1String("-extra-args")) { + } else if (arg == QLatin1String("-a") || arg == QLatin1String("--args")) { extraArgs = args.mid(iarg + 1, args.size() - iarg - 1); iarg = args.size(); - } else if (arg == QLatin1String("-help") || arg == QLatin1String("--help")) { + } else if (arg == QLatin1String("-h") || arg == QLatin1String("--help")) { printHelp = true; } else { writeMsg(QString::fromLatin1("unexpected argument \"%1\"").arg(arg)); @@ -580,9 +582,9 @@ void IosTool::run(const QStringList &args) } if (printHelp) { out.writeStartElement(QLatin1String("msg")); - out.writeCharacters(QLatin1String("iosTool [-device-id <deviceId>] [-bundle <pathToBundle>] [-deploy] [-run] [-debug]\n")); - out.writeCharacters(QLatin1String(" [-device-info] [-timeout <timeoutIn_ms>] [-verbose]\n")); // to do pass in env as stub does - out.writeCharacters(QLatin1String(" [-extra-args <arguments for the target app>]")); + out.writeCharacters(QLatin1String("iostool [--id <device_id>] [--bundle <bundle.app>] [--install] [--run] [--debug]\n")); + out.writeCharacters(QLatin1String(" [--device-info] [--timeout <timeout_in_ms>] [--verbose]\n")); // to do pass in env as stub does + out.writeCharacters(QLatin1String(" [--args <arguments for the target app>]")); out.writeEndElement(); doExit(-1); return; @@ -611,7 +613,7 @@ void IosTool::run(const QStringList &args) } if (deviceInfo) { if (!bundlePath.isEmpty()) - writeMsg("-device-info overrides bundlePath"); + writeMsg("--device-info overrides --bundle"); ++opLeft; manager->requestDeviceInfo(deviceId, timeout); } else if (!bundlePath.isEmpty()) { |