- QRegExp regex("\\b([hf]t{1,2}ps?://[^\\s]+)\\b");
- QString str = data(ChatLineModel::DisplayRole).toString();
- int idx = posToCursor(event->pos());
- int mi = 0;
- do {
- mi = regex.indexIn(str, mi);
- if(mi < 0) break;
- if(idx >= mi && idx < mi + regex.matchedLength()) {
- QDesktopServices::openUrl(QUrl(regex.capturedTexts()[1]));
- break;
+void ContentsChatItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {
+ layoutData()->hasDragged = false;
+ ChatItem::mousePressEvent(event);
+}
+
+void ContentsChatItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
+ if(!event->buttons() && !layoutData()->hasDragged) {
+ // got a click
+ Clickable click = layoutData()->currentClickable;
+ if(click.isValid()) {
+ QString str = data(ChatLineModel::DisplayRole).toString().mid(click.start, click.length);
+ switch(click.type) {
+ case Clickable::Url:
+ QDesktopServices::openUrl(str);
+ break;
+ case Clickable::Channel:
+ // TODO join or whatever...
+ break;
+ default:
+ break;
+ }