File: DescriptionEditor.cpp

package info (click to toggle)
dyssol 1.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,184 kB
  • sloc: cpp: 53,870; sh: 85; python: 59; makefile: 11
file content (51 lines) | stat: -rw-r--r-- 1,568 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* Copyright (c) 2020, Dyssol Development Team. All rights reserved. This file is part of Dyssol. See LICENSE file for license information. */

#include "DescriptionEditor.h"
#include "StringFunctions.h"
#include "DefinesMDB.h"

CDescriptionEditor::CDescriptionEditor(CDescriptable* _object, QWidget *parent)
	: QDialog(parent),
	m_pObject(_object)
{
	ui.setupUi(this);

	SetText(m_pObject->GetDescription());
	m_sOldText = m_pObject->GetDescription();
	m_bTextChanged = false;

	connect(ui.buttonBox, &QDialogButtonBox::accepted, this, &CDescriptionEditor::OkClicked);
	connect(ui.buttonBox, &QDialogButtonBox::rejected, this, &CDescriptionEditor::reject);
}

bool CDescriptionEditor::IsDescriptionChanged() const
{
	return m_bTextChanged;
}

QString CDescriptionEditor::TextToDisplay(const std::string& _text)
{
	return QString::fromStdString(StringFunctions::ReplaceAll(_text, MDBDescriptors::NEW_LINE_REPLACER, "\n"));
}

std::string CDescriptionEditor::TextToSave(const QString& _text)
{
	return StringFunctions::ReplaceAll(_text.toStdString(), "\n", MDBDescriptors::NEW_LINE_REPLACER);
}

void CDescriptionEditor::SetText(const std::string& _text) const
{
	const QString sWithLineBreaks = TextToDisplay(_text);
	ui.textEdit->setPlainText(sWithLineBreaks);
}

void CDescriptionEditor::OkClicked()
{
	if (!m_pObject) return;
	const QString sNewText = ui.textEdit->toPlainText();
	const std::string sWithoutLineBreaks = TextToSave(sNewText);
	m_bTextChanged = sWithoutLineBreaks != m_sOldText;
	m_pObject->SetDescription(sWithoutLineBreaks);
	QDialog::accept();
}