diff --git a/src/libs/utils/submiteditorwidget.cpp b/src/libs/utils/submiteditorwidget.cpp index 6b50ad3cf10..85c11241490 100644 --- a/src/libs/utils/submiteditorwidget.cpp +++ b/src/libs/utils/submiteditorwidget.cpp @@ -37,11 +37,39 @@ #include #include +#include + enum { debug = 0 }; namespace Core { namespace Utils { +// QActionPushButton: A push button tied to an action +// (similar to a QToolButton) +class QActionPushButton : public QPushButton { + Q_OBJECT +public: + explicit QActionPushButton(QAction *a); + +private slots: + void actionChanged(); +}; + +QActionPushButton::QActionPushButton(QAction *a) : + QPushButton(a->icon(), a->text()) +{ + connect(a, SIGNAL(changed()), this, SLOT(actionChanged())); + connect(this, SIGNAL(clicked()), a, SLOT(trigger())); + setEnabled(a->isEnabled()); +} + +void QActionPushButton::actionChanged() +{ + if (const QAction *a = qobject_cast(sender())) + setEnabled(a->isEnabled()); +} + +// ----------- SubmitEditorWidgetPrivate struct SubmitEditorWidgetPrivate { SubmitEditorWidgetPrivate(); @@ -99,13 +127,15 @@ void SubmitEditorWidget::registerActions(QAction *editorUndoAction, QAction *ed qDebug() << submitAction << m_d->m_ui.fileList->count() << "items" << m_d->m_filesChecked; submitAction->setEnabled(m_d->m_filesChecked); connect(this, SIGNAL(fileCheckStateChanged(bool)), submitAction, SLOT(setEnabled(bool))); + m_d->m_ui.buttonLayout->addWidget(new QActionPushButton(submitAction)); } if (diffAction) { if (debug) qDebug() << diffAction << m_d->m_filesSelected; - diffAction->setEnabled(m_d->m_filesSelected); - connect(this, SIGNAL(fileSelectionChanged(bool)), diffAction, SLOT(setEnabled(bool))); - connect(diffAction, SIGNAL(triggered()), this, SLOT(triggerDiffSelected())); + diffAction->setEnabled(m_d->m_filesSelected); + connect(this, SIGNAL(fileSelectionChanged(bool)), diffAction, SLOT(setEnabled(bool))); + connect(diffAction, SIGNAL(triggered()), this, SLOT(triggerDiffSelected())); + m_d->m_ui.buttonLayout->addWidget(new QActionPushButton(diffAction)); } } @@ -305,3 +335,5 @@ void SubmitEditorWidget::insertTopWidget(QWidget *w) } // namespace Utils } // namespace Core + +#include "submiteditorwidget.moc" diff --git a/src/libs/utils/submiteditorwidget.ui b/src/libs/utils/submiteditorwidget.ui index 4971f7e72d0..69eed91eb32 100644 --- a/src/libs/utils/submiteditorwidget.ui +++ b/src/libs/utils/submiteditorwidget.ui @@ -51,6 +51,23 @@ + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index f7bba284410..6b3eb20ad7f 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -625,7 +625,7 @@ QString GitClient::readConfig(const QString &workingDirectory, const QStringList QByteArray outputText; if (synchronousGit(workingDirectory, arguments, &outputText)) - return outputText; + return QString::fromLocal8Bit(outputText); return QString(); } diff --git a/src/plugins/git/gitconstants.h b/src/plugins/git/gitconstants.h index 935310f68ea..98676249131 100644 --- a/src/plugins/git/gitconstants.h +++ b/src/plugins/git/gitconstants.h @@ -48,10 +48,6 @@ const char * const SUBMIT_CURRENT = "Nokia.Git.SubmitCurrentLog"; const char * const DIFF_SELECTED = "Nokia.Git.DiffSelectedFilesInLog"; const char * const SUBMIT_MIMETYPE = "application/vnd.nokia.text.git.submit"; -// TODO: For the moment, trust p4 is loaded... -const char * const ICON_SUBMIT = ":/trolltech.perforce/images/submit.png"; -const char * const ICON_DIFF = ":/trolltech.perforce/images/diff.png"; - const char * const DIFF_FILE_INDICATOR = "--- "; enum { debug = 0 }; diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp index 6ee7bab39b0..29bca45779a 100644 --- a/src/plugins/git/gitplugin.cpp +++ b/src/plugins/git/gitplugin.cpp @@ -354,12 +354,12 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *error_message) // Submit editor QList submitContext; submitContext.push_back(m_core->uniqueIDManager()->uniqueIdentifier(QLatin1String(Constants::C_GITSUBMITEDITOR))); - m_submitCurrentAction = new QAction(QIcon(Constants::ICON_SUBMIT), tr("Commit"), this); + m_submitCurrentAction = new QAction(VCSBase::VCSBaseSubmitEditor::submitIcon(), tr("Commit"), this); command = actionManager->registerAction(m_submitCurrentAction, Constants::SUBMIT_CURRENT, submitContext); // TODO connect(m_submitCurrentAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); - m_diffSelectedFilesAction = new QAction(QIcon(Constants::ICON_DIFF), tr("Diff Selected Files"), this); + m_diffSelectedFilesAction = new QAction(VCSBase::VCSBaseSubmitEditor::diffIcon(), tr("Diff Selected Files"), this); command = actionManager->registerAction(m_diffSelectedFilesAction, Constants::DIFF_SELECTED, submitContext); m_undoAction = new QAction(tr("&Undo"), this); diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index 99400952f18..5d5cb0a2ef3 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -48,7 +48,6 @@ GitSubmitEditorWidget::GitSubmitEditorWidget(QWidget *parent) : void GitSubmitEditorWidget::setPanelInfo(const GitSubmitEditorPanelInfo &info) { m_gitSubmitPanelUi.repositoryLabel->setText(info.repository); - m_gitSubmitPanelUi.descriptionLabel->setText(info.description); m_gitSubmitPanelUi.branchLabel->setText(info.branch); } diff --git a/src/plugins/git/gitsubmitpanel.ui b/src/plugins/git/gitsubmitpanel.ui index 8a42052a995..d408eeab11d 100644 --- a/src/plugins/git/gitsubmitpanel.ui +++ b/src/plugins/git/gitsubmitpanel.ui @@ -7,7 +7,7 @@ 0 0 201 - 210 + 189 @@ -17,6 +17,9 @@ General Information + + QFormLayout::ExpandingFieldsGrow + @@ -32,30 +35,13 @@ - - - Description: - - - - - - - true - - - description - - - - Branch: - + branch diff --git a/src/plugins/perforce/perforce.qrc b/src/plugins/perforce/perforce.qrc index de0db02a3d9..3605faa03b2 100644 --- a/src/plugins/perforce/perforce.qrc +++ b/src/plugins/perforce/perforce.qrc @@ -1,7 +1,5 @@ - images/diff.png - images/submit.png Perforce.mimetypes.xml diff --git a/src/plugins/perforce/perforceconstants.h b/src/plugins/perforce/perforceconstants.h index 87072a01ad4..95c9f64ca6e 100644 --- a/src/plugins/perforce/perforceconstants.h +++ b/src/plugins/perforce/perforceconstants.h @@ -42,14 +42,10 @@ const char * const C_PERFORCEEDITOR = "Perforce Editor"; const char * const PERFORCEEDITOR_KIND = "Perforce Editor"; const char * const C_PERFORCESUBMITEDITOR = "Perforce Submit Editor"; const char * const PERFORCESUBMITEDITOR_KIND = "Perforce Submit Editor"; -const char * const ICON_SUBMIT = ":/trolltech.perforce/images/submit.png"; -const char * const ICON_DIFF = ":/trolltech.perforce/images/diff.png"; const char * const SUBMIT_CURRENT = "Nokia.Perforce.SubmitCurrentLog"; const char * const DIFF_SELECTED = "Nokia.Perforce.DiffSelectedFilesInLog"; const char * const SUBMIT_MIMETYPE = "application/vnd.nokia.text.p4.submit"; - enum { debug = 0 }; - } // Internal } // Perforce diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 60ffa06e99c..7f71282fbbf 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -366,11 +366,11 @@ bool PerforcePlugin::initialize(const QStringList & /*arguments*/, QString *erro connect(m_filelogAction, SIGNAL(triggered()), this, SLOT(filelog())); mperforce->addAction(command); - m_submitCurrentLogAction = new QAction(QIcon(Constants::ICON_SUBMIT), tr("Submit"), this); + m_submitCurrentLogAction = new QAction(VCSBase::VCSBaseSubmitEditor::submitIcon(), tr("Submit"), this); command = am->registerAction(m_submitCurrentLogAction, Constants::SUBMIT_CURRENT, perforcesubmitcontext); connect(m_submitCurrentLogAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); - m_diffSelectedFiles = new QAction(QIcon(Constants::ICON_DIFF), tr("Diff Selected Files"), this); + m_diffSelectedFiles = new QAction(VCSBase::VCSBaseSubmitEditor::diffIcon(), tr("Diff Selected Files"), this); command = am->registerAction(m_diffSelectedFiles, Constants::DIFF_SELECTED, perforcesubmitcontext); m_undoAction = new QAction(tr("&Undo"), this); diff --git a/src/plugins/subversion/images/diff.png b/src/plugins/subversion/images/diff.png deleted file mode 100644 index b3597f9ff85..00000000000 Binary files a/src/plugins/subversion/images/diff.png and /dev/null differ diff --git a/src/plugins/subversion/images/submit.png b/src/plugins/subversion/images/submit.png deleted file mode 100644 index 4f302302b9e..00000000000 Binary files a/src/plugins/subversion/images/submit.png and /dev/null differ diff --git a/src/plugins/subversion/subversion.qrc b/src/plugins/subversion/subversion.qrc index 7fa3a2a31e1..51c899c701a 100644 --- a/src/plugins/subversion/subversion.qrc +++ b/src/plugins/subversion/subversion.qrc @@ -1,7 +1,5 @@ - images/diff.png - images/submit.png Subversion.mimetypes.xml diff --git a/src/plugins/subversion/subversionconstants.h b/src/plugins/subversion/subversionconstants.h index 9445926d838..6b2e9d34167 100644 --- a/src/plugins/subversion/subversionconstants.h +++ b/src/plugins/subversion/subversionconstants.h @@ -42,8 +42,6 @@ const char * const SUBVERSIONEDITOR = "Subversion Editor"; const char * const SUBVERSIONEDITOR_KIND = "Subversion Editor"; const char * const SUBVERSIONCOMMITEDITOR = "Subversion Commit Editor"; const char * const SUBVERSIONCOMMITEDITOR_KIND = "Subversion Commit Editor"; -const char * const ICON_SUBMIT = ":/trolltech.subversion/images/submit.png"; -const char * const ICON_DIFF = ":/trolltech.subversion/images/diff.png"; const char * const SUBMIT_CURRENT = "Nokia.Subversion.SubmitCurrentLog"; const char * const DIFF_SELECTED = "Nokia.Subversion.DiffSelectedFilesInLog"; enum { debug = 0 }; diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index 63c451f85c0..6532a9d4335 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -382,11 +382,11 @@ bool SubversionPlugin::initialize(const QStringList & /*arguments*/, QString *er QList svncommitcontext; svncommitcontext << m_coreInstance->uniqueIDManager()->uniqueIdentifier(Constants::SUBVERSIONCOMMITEDITOR); - m_submitCurrentLogAction = new QAction(QIcon(Constants::ICON_SUBMIT), tr("Commit"), this); + m_submitCurrentLogAction = new QAction(VCSBase::VCSBaseSubmitEditor::submitIcon(), tr("Commit"), this); command = ami->registerAction(m_submitCurrentLogAction, Constants::SUBMIT_CURRENT, svncommitcontext); connect(m_submitCurrentLogAction, SIGNAL(triggered()), this, SLOT(submitCurrentLog())); - m_submitDiffAction = new QAction(QIcon(Constants::ICON_DIFF), tr("Diff Selected Files"), this); + m_submitDiffAction = new QAction(VCSBase::VCSBaseSubmitEditor::diffIcon(), tr("Diff Selected Files"), this); command = ami->registerAction(m_submitDiffAction , Constants::DIFF_SELECTED, svncommitcontext); m_submitUndoAction = new QAction(tr("&Undo"), this); diff --git a/src/plugins/perforce/images/diff.png b/src/plugins/vcsbase/images/diff.png similarity index 100% rename from src/plugins/perforce/images/diff.png rename to src/plugins/vcsbase/images/diff.png diff --git a/src/plugins/perforce/images/submit.png b/src/plugins/vcsbase/images/submit.png similarity index 100% rename from src/plugins/perforce/images/submit.png rename to src/plugins/vcsbase/images/submit.png diff --git a/src/plugins/vcsbase/vcsbase.qrc b/src/plugins/vcsbase/vcsbase.qrc index 648425980aa..f4fa641bf5d 100644 --- a/src/plugins/vcsbase/vcsbase.qrc +++ b/src/plugins/vcsbase/vcsbase.qrc @@ -1,5 +1,7 @@ - + VCSBase.mimetypes.xml + images/diff.png + images/submit.png diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index f8a89c1eca3..f5a480126ec 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -61,7 +61,7 @@ bool VCSBasePlugin::initialize(const QStringList & /*arguments*/, QString *error { Core::ICore *core = ExtensionSystem::PluginManager::instance()->getObject(); - if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/trolltech.vcsbase/VCSBase.mimetypes.xml"), errorMessage)) + if (!core->mimeDatabase()->addMimeTypes(QLatin1String(":/vcsbase/VCSBase.mimetypes.xml"), errorMessage)) return false; return true; @@ -70,7 +70,7 @@ bool VCSBasePlugin::initialize(const QStringList & /*arguments*/, QString *error void VCSBasePlugin::extensionsInitialized() { } - + VCSBasePlugin *VCSBasePlugin::instance() { return m_instance; diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp index 3960ca6c75f..3ac864f9ab4 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp @@ -51,6 +51,7 @@ #include enum { debug = 0 }; +enum { wantToolBar = 0 }; static inline QAction *actionFromId(const Core::ICore *core, const char *id) { @@ -187,8 +188,27 @@ const char *VCSBaseSubmitEditor::kind() const return m_d->m_parameters->kind; } +static QToolBar *createToolBar(const QWidget *someWidget, QAction *submitAction, QAction *diffAction) +{ + // Create + QToolBar *toolBar = new QToolBar; + toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + const int size = someWidget->style()->pixelMetric(QStyle::PM_SmallIconSize); + toolBar->setIconSize(QSize(size, size)); + toolBar->addSeparator(); + + if (submitAction) + toolBar->addAction(submitAction); + if (diffAction) + toolBar->addAction(diffAction); + return toolBar; +} + QToolBar *VCSBaseSubmitEditor::toolBar() { + if (!wantToolBar) + return 0; + if (m_d->m_toolWidget) return m_d->m_toolWidget; @@ -196,18 +216,8 @@ QToolBar *VCSBaseSubmitEditor::toolBar() return 0; // Create - QToolBar *toolBar = new QToolBar; - toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - const int size = m_d->m_widget->style()->pixelMetric(QStyle::PM_SmallIconSize); - toolBar->setIconSize(QSize(size, size)); - toolBar->addSeparator(); - - if (m_d->m_submitAction) - toolBar->addAction(m_d->m_submitAction); - if (m_d->m_diffAction) - toolBar->addAction(m_d->m_diffAction); - m_d->m_toolWidget = toolBar; - return toolBar; + m_d->m_toolWidget = createToolBar(m_d->m_widget, m_d->m_submitAction, m_d->m_diffAction); + return m_d->m_toolWidget; } QList VCSBaseSubmitEditor::context() const @@ -279,4 +289,14 @@ bool VCSBaseSubmitEditor::setFileContents(const QString &contents) return true; } -} // namespace VCSBase +QIcon VCSBaseSubmitEditor::diffIcon() +{ + return QIcon(QLatin1String(":/vcsbase/images/diff.png")); +} + +QIcon VCSBaseSubmitEditor::submitIcon() +{ + return QIcon(QLatin1String(":/vcsbase/images/submit.png")); +} + +} diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h index 796f5c6129f..dcaf7cf89d0 100644 --- a/src/plugins/vcsbase/vcsbasesubmiteditor.h +++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h @@ -40,6 +40,10 @@ #include +QT_BEGIN_NAMESPACE +class QIcon; +QT_END_NAMESPACE + namespace Core { namespace Utils { class SubmitEditorWidget; @@ -118,6 +122,10 @@ public: void setFileList(const QStringList&); void addFiles(const QStringList&, bool checked = true, bool userCheckable = true); + // Utilities returning some predefined icons for actions + static QIcon diffIcon(); + static QIcon submitIcon(); + signals: void diffSelectedFiles(const QStringList &files);