#include "tmsocket.h"
#include "tmeditorwidget.h"
+#include "tmservice.h"
#include "settings.h"
#include "html.h"
return false;
}
+// TextSentence ---------------------------------------------------------------
+
+TM::TextSentence::TextSentence(Text::pointer source_sentence)
+ : m_source_sentence(source_sentence)
+{
+}
+
+Text::pointer TM::TextSentence::source_sentence() { return m_source_sentence; }
+
+Text::pointer TM::TextSentence::target_sentence() { return m_target_sentence; }
+
+void TM::TextSentence::set_terget_sentence(Text::pointer target_sentence)
+{
+ m_target_sentence = target_sentence;
+}
+
+QJsonArray TM::TextSentence::link_data() { return m_link_data; }
+
+void TM::TextSentence::set_link_data(QJsonArray json) { m_link_data = json; }
+
+TM::TextSentence::pointer TM::TextSentence::create(Text::pointer source_sentence)
+{
+ return pointer(new TextSentence(source_sentence));
+}
+
+// TextSegment ----------------------------------------------------------------
+
+TM::TextSegment::TextSegment(
+ Service *service, int scode, int segment_id, QString source)
+ : m_segment_id(segment_id)
+ , m_document(source.toUtf8())
+{
+ HtmlNode body = m_document.first("html").first("body");
+ TextConverter tc;
+ m_text = tc.to_text(HtmlRange(body, body));
+
+ Text::pointer sentences = service->divide_into_sentences(scode, m_text->to_string());
+ for(Text::pointer s = sentences->begin(); s; s = s->next()) // s: sentence
+ {
+ Text::pointer words = service->divide_into_words(scode, s);
+ m_sentences.append(TextSentence::create(words));
+ }
+}
+
+int TM::TextSegment::segment_id() const { return m_segment_id; }
+
+TM::TextSentence::pointer TM::TextSegment::at(int index)
+{
+ return m_sentences.at(index);
+}
+
+TM::TextSegment::iterator TM::TextSegment::begin() { return m_sentences.begin(); }
+
+TM::TextSegment::iterator TM::TextSegment::end() { return m_sentences.end(); }
+
+TM::TextSegment::pointer TM::TextSegment::create(
+ Service *service, int scode, int segment_id, QString source)
+{
+ return pointer(new TextSegment(service, scode, segment_id, source));
+}
+
// SocketConnection -----------------------------------------------------------
TM::SocketConnection::SocketConnection(Settings *settings, Service *service,
send_message(doc.toJson().data());
}
+void TM::SocketConnection::save_sentence(int segment_id, int index,
+ Text::pointer target_sentence, QJsonArray link)
+{
+ segment_map_iterator it = m_segments.find(segment_id);
+ assert(it != m_segments.end());
+ TextSentence::pointer sentence = it.value()->at(index);
+ sentence->set_terget_sentence(target_sentence);
+ sentence->set_link_data(link);
+}
+
void TM::SocketConnection::changeEditMode(bool edit_mode)
{
set_edit_mode(edit_mode);
*/
void TM::SocketConnection::do_edit(QJsonObject const &json)
{
- m_document.set_content(json["source"].toString().toUtf8());
- HtmlNode body = m_document.first("html").first("body");
+ int scode = m_editor_widget->source_language();
- TextConverter tc;
- m_text = tc.to_text(HtmlRange(body, body));
- m_editor_widget->set_string(m_text->to_string(), json["target"].toString());
- //emit editCmd(json["id"].toInt(), m_document.to_string());
- /*
- QJsonObject reply;
- reply["cmd"] = "doedit";
- reply["id"] = json["id"].toString();
- reply["html"] = "test2";
- QJsonDocument doc;
- doc.setObject(reply);
- send_message(doc.toJson().data());
- */
+ assert(json.contains("segment_id"));
+ int segment_id = json["segment_id"].toString().toInt();
+
+ segment_map_iterator it = m_segments.find(segment_id);
+ if(it == m_segments.end())
+ {
+ assert(json.contains("source"));
+ QString source = json["source"].toString();
+ m_current_segment = TextSegment::create(m_service, scode, segment_id, source);
+ m_segments.insert(segment_id, m_current_segment);
+ }
+ else m_current_segment = it.value();
+
+ m_editor_widget->set_segment(m_current_segment);
}
/*!
m_edit_mode = edit_mode;
m_editor_widget->set_edit_mode(edit_mode);
- if(m_text) m_editor_widget->set_string(m_text->to_string(), "");
+ if(m_current_segment) m_editor_widget->set_segment(m_current_segment);
}
void TM::SocketConnection::do_blur(QJsonObject const &)