summaryrefslogtreecommitdiffstats
blob: d8b64c111088a927c35015cf5b80d63f58528550 (plain)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
 * Copyright (c) 2010-2013 Isode Limited.
 * All rights reserved.
 * See the COPYING file for more information.
 */

#include <Swift/QtUI/ChatSnippet.h>

#include <QFile>

#include <Swift/QtUI/QtSwiftUtil.h>

namespace Swift {

ChatSnippet::ChatSnippet(bool appendToPrevious) : appendToPrevious_(appendToPrevious) {
}

ChatSnippet::~ChatSnippet() {
}

QString ChatSnippet::timeToEscapedString(const QDateTime& time) {
	QDate now(QDate::currentDate());
	QString date = "";
	if (time.date().daysTo(now) > 0) {
		date = "ddd ";
	}
	if (time.date().month() != now.month()) {
		date = date + "MMMM ";
	}
	if (time.date().daysTo(now) > 6) {
		date = date + "d ";
	}
	if (time.date().year() != now.year()) {
		date = date + "yy ";
	}
	date += "h:mm";
	return escape(time.toString(date));
}

QString ChatSnippet::wrapResizable(const QString& text) {
	return "<span class='swift_resizable'>" + text + "</span>";
}

QString ChatSnippet::directionToCSS(Direction direction) {
	return direction == RTL ? QString("rtl") : QString("ltr");
}

ChatSnippet::Direction ChatSnippet::getDirection(const ChatWindow::ChatMessage& message) {
	boost::shared_ptr<ChatWindow::ChatTextMessagePart> textPart;
	std::string text = "";
	foreach (boost::shared_ptr<ChatWindow::ChatMessagePart> part, message.getParts()) {
		if ((textPart = boost::dynamic_pointer_cast<ChatWindow::ChatTextMessagePart>(part))) {
			text = textPart->text;
			break;
		}
	}
	return getDirection(text);
}

ChatSnippet::Direction ChatSnippet::getDirection(const std::string& message) {
	return getDirection(P2QSTRING(message));
}

ChatSnippet::Direction ChatSnippet::getDirection(const QString& message) {
	/*
	for (int i = 0; i < message.size(); ++i) {
		switch (message.at(i).direction()) {
			case QChar::DirL:
			case QChar::DirLRE:
			case QChar::DirLRO:
				return ChatSnippet::LTR;
			case QChar::DirR:
			case QChar::DirAL:
			case QChar::DirRLE:
			case QChar::DirRLO:
				return ChatSnippet::RTL;
			case QChar::DirEN:
			case QChar::DirES:
			case QChar::DirET:
			case QChar::DirAN:
			case QChar::DirCS:
			case QChar::DirB:
			case QChar::DirWS:
			case QChar::DirON:
			case QChar::DirS:
			case QChar::DirPDF:
			case QChar::DirNSM:
			case QChar::DirBN:
				break;
		}
	}
	return ChatSnippet::LTR;
	*/
	return message.isRightToLeft() ? ChatSnippet::RTL : ChatSnippet::LTR;
}


}