CheckOutDialog.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "EditorDefs.h"
  9. #include "CheckOutDialog.h"
  10. #include "ui_CheckOutDialog.h"
  11. // Qt
  12. #include <QStyle>
  13. // AzToolsFramework
  14. #include <AzToolsFramework/SourceControl/SourceControlAPI.h> // for AzToolsFramework::SourceControlConnectionRequestBus
  15. // CCheckOutDialog dialog
  16. int CCheckOutDialog::m_lastResult = CCheckOutDialog::CANCEL;
  17. CCheckOutDialog::CCheckOutDialog(const QString& file, QWidget* pParent)
  18. : QDialog(pParent)
  19. , m_ui(new Ui::CheckOutDialog)
  20. {
  21. m_ui->setupUi(this);
  22. setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
  23. m_file = file;
  24. m_ui->icon->setPixmap(style()->standardIcon(QStyle::SP_MessageBoxQuestion).pixmap(m_ui->icon->width()));
  25. OnInitDialog();
  26. connect(m_ui->buttonCancel, &QPushButton::clicked, this, &CCheckOutDialog::OnBnClickedCancel);
  27. connect(m_ui->buttonCheckout, &QPushButton::clicked, this, &CCheckOutDialog::OnBnClickedCheckout);
  28. connect(m_ui->buttonOverwrite, &QPushButton::clicked, this, &CCheckOutDialog::OnBnClickedOverwrite);
  29. }
  30. CCheckOutDialog::~CCheckOutDialog()
  31. {
  32. }
  33. //////////////////////////////////////////////////////////////////////////
  34. void CCheckOutDialog::OnBnClickedCancel()
  35. {
  36. // Cancel operation
  37. HandleResult(CANCEL);
  38. }
  39. //////////////////////////////////////////////////////////////////////////
  40. // CCheckOutDialog message handlers
  41. void CCheckOutDialog::OnBnClickedCheckout()
  42. {
  43. // Check out this file.
  44. HandleResult(CHECKOUT);
  45. }
  46. //////////////////////////////////////////////////////////////////////////
  47. void CCheckOutDialog::OnBnClickedOverwrite()
  48. {
  49. // Overwrite this file.
  50. HandleResult(OVERWRITE);
  51. }
  52. //////////////////////////////////////////////////////////////////////////
  53. void CCheckOutDialog::HandleResult(int result)
  54. {
  55. m_lastResult = result;
  56. InstanceIsForAll() = m_ui->chkForAll->isChecked();
  57. done(result);
  58. }
  59. //////////////////////////////////////////////////////////////////////////
  60. void CCheckOutDialog::OnInitDialog()
  61. {
  62. setWindowTitle(tr("Source Control"));
  63. using namespace AzToolsFramework;
  64. SourceControlState state = SourceControlState::Disabled;
  65. SourceControlConnectionRequestBus::BroadcastResult(state, &SourceControlConnectionRequestBus::Events::GetSourceControlState);
  66. bool sccAvailable = state == SourceControlState::Active ? true : false;
  67. QString text(tr("%1\n\nis read-only, and needs to be writable to continue.").arg(m_file));
  68. if (!sccAvailable)
  69. {
  70. text.append("\nEnable and connect to source control for more options.");
  71. }
  72. m_ui->m_text->setText(text);
  73. m_ui->chkForAll->setEnabled(InstanceEnableForAll());
  74. m_ui->chkForAll->setChecked(InstanceIsForAll());
  75. m_ui->buttonCheckout->setEnabled(sccAvailable);
  76. adjustSize();
  77. }
  78. //static ////////////////////////////////////////////////////////////////
  79. bool& CCheckOutDialog::InstanceEnableForAll()
  80. {
  81. static bool isEnableForAll = false;
  82. return isEnableForAll;
  83. }
  84. //static ////////////////////////////////////////////////////////////////
  85. bool& CCheckOutDialog::InstanceIsForAll()
  86. {
  87. static bool isForAll = false;
  88. return isForAll;
  89. }
  90. //static ////////////////////////////////////////////////////////////////
  91. bool CCheckOutDialog::EnableForAll(bool isEnable)
  92. {
  93. bool bPrevEnable = InstanceEnableForAll();
  94. InstanceEnableForAll() = isEnable;
  95. if (!bPrevEnable || !isEnable)
  96. {
  97. InstanceIsForAll() = false;
  98. m_lastResult = CANCEL;
  99. }
  100. return bPrevEnable;
  101. }
  102. #include <moc_CheckOutDialog.cpp>