bool ContactsModelProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const { if (!SourceContactModel) return QSortFilterProxyModel::lessThan(left, right); Contact leftContact = SourceContactModel->contact(left); Contact rightContact = SourceContactModel->contact(right); Account *leftAccount = leftContact.prefferedAccount(); Account *rightAccount = rightContact.prefferedAccount(); ContactAccountData *leftContactAccountData = leftContact.accountData(leftAccount); ContactAccountData *rightContactAccountData = rightContact.accountData(rightAccount); Status leftStatus = leftContactAccountData ? leftContactAccountData->status() : Status(); Status rightStatus = rightContactAccountData ? rightContactAccountData->status() : Status(); if (leftStatus.isDisconnected() && !rightStatus.isDisconnected()) return false; if (!leftStatus.isDisconnected() && rightStatus.isDisconnected()) return true; int displayCompare = compareNames(leftContact.display(), rightContact.display()); return displayCompare < 0; }
void ChatEditBox::openInsertImageDialog() { ChatImageService *chatImageService = CurrentChat.chatAccount().protocolHandler()->chatImageService(); if (!chatImageService) return; // QTBUG-849 QString selectedFile = QFileDialog::getOpenFileName(this, tr("Insert image"), configuration()->deprecatedApi()->readEntry("Chat", "LastImagePath"), tr("Images (*.png *.PNG *.jpg *.JPG *.jpeg *.JPEG *.gif *.GIF *.bmp *.BMP);;All Files (*)")); if (!selectedFile.isEmpty()) { QFileInfo f(selectedFile); configuration()->deprecatedApi()->writeEntry("Chat", "LastImagePath", f.absolutePath()); if (!f.isReadable()) { MessageDialog::show(m_iconsManager->iconByPath(KaduIcon("dialog-warning")), tr("Kadu"), tr("This file is not readable"), QMessageBox::Ok, this); return; } Error imageSizeError = chatImageService->checkImageSize(f.size()); if (!imageSizeError.message().isEmpty()) { MessageDialog *dialog = MessageDialog::create(m_iconsManager->iconByPath(KaduIcon("dialog-warning")), tr("Kadu"), imageSizeError.message(), this); dialog->addButton(QMessageBox::Yes, tr("Send anyway")); dialog->addButton(QMessageBox::No, tr("Cancel")); switch (imageSizeError.severity()) { case NoError: break; case ErrorLow: if (dialog->ask()) return; break; case ErrorHigh: MessageDialog::show(m_iconsManager->iconByPath(KaduIcon("dialog-error")), tr("Kadu"), imageSizeError.message(), QMessageBox::Ok, this); return; default: break; } } int tooBigCounter = 0; int disconnectedCounter = 0; foreach (const Contact &contact, CurrentChat.contacts()) { if (contact.currentStatus().isDisconnected()) disconnectedCounter++; else if (contact.maximumImageSize() == 0 || contact.maximumImageSize() * 1024 < f.size()) tooBigCounter++; } QString message; if (1 == CurrentChat.contacts().count()) { Contact contact = *CurrentChat.contacts().constBegin(); if (tooBigCounter > 0) message = tr("This image has %1 KiB and may be too big for %2.") .arg((f.size() + 1023) / 1024).arg(contact.display(true)) + '\n'; else if (disconnectedCounter > 0) message = tr("%1 appears to be offline and may not receive images.").arg(contact.display(true)) + '\n'; } else { if (tooBigCounter > 0) message = tr("This image has %1 KiB and may be too big for %2 of %3 contacts in this conference.") .arg((f.size() + 1023) / 1024).arg(tooBigCounter).arg(CurrentChat.contacts().count()) + '\n'; if (disconnectedCounter > 0) message += tr("%1 of %2 contacts appear to be offline and may not receive images.").arg(disconnectedCounter).arg(CurrentChat.contacts().count()) + '\n'; } if (tooBigCounter > 0 || disconnectedCounter > 0) message += tr("Do you really want to send this image?"); MessageDialog *dialog = MessageDialog::create(m_iconsManager->iconByPath(KaduIcon("dialog-question")), tr("Kadu"), message, this); dialog->addButton(QMessageBox::Yes, tr("Send anyway")); dialog->addButton(QMessageBox::No, tr("Cancel")); if (!message.isEmpty() && !dialog->ask()) return; InputBox->insertHtml(QString("<img src='%1' />").arg(selectedFile)); }
void OtrNotifier::notifyStillSecure(const Contact &contact) { notify( contact, normalizeHtml(HtmlString{tr("%1: conversation is still private")}.arg(plainToHtml(contact.display(true))))); }
void OtrNotifier::notifyGoneInsecure(const Contact &contact) { notify( contact, normalizeHtml(HtmlString{tr("%1: private conversation stopped")}.arg(plainToHtml(contact.display(true))))); }
void OtrNotifier::notifyPeerEndedSession(const Contact &contact) { notify( contact, normalizeHtml(HtmlString{tr("%1: peer ended private conversation; you should do the same")}.arg( plainToHtml(contact.display(true))))); }
void OtrNotifier::notifyTryingToRefreshSession(const Contact &contact) { notify( contact, normalizeHtml(HtmlString{tr("%1: trying to refresh private conversation")}.arg( plainToHtml(contact.display(true))))); }