// ############# Invokable API ######################## void EmailMessage::send() { buildMessage(); bool stored = false; if (!m_msg.id().isValid()) { // Message present only on the local device until we externalise or send it m_msg.setStatus(QMailMessage::LocalOnly, true); stored = QMailStore::instance()->addMessage(&m_msg); } else { stored = QMailStore::instance()->updateMessage(&m_msg); m_newMessage = false; } EmailAgent *emailAgent = EmailAgent::instance(); if (stored) { connect(emailAgent, SIGNAL(sendCompleted()), this, SLOT(onSendCompleted())); emailAgent->sendMessages(m_msg.parentAccountId()); emitSignals(); } else qWarning() << "Error: queuing message, stored: " << stored; }
void EmailMessage::saveDraft() { buildMessage(); QMailAccount account(m_msg.parentAccountId()); QMailFolderId draftFolderId = account.standardFolder(QMailFolder::DraftsFolder); if (draftFolderId.isValid()) { m_msg.setParentFolderId(draftFolderId); //local storage set on buildMessage step qWarning() << "Drafts folder not found, saving to local storage(Outbox)!"; } bool saved = false; // Unset outgoing and outbox so it wont really send // when we sync to the server Drafts folder m_msg.setStatus(QMailMessage::Outgoing, false); m_msg.setStatus(QMailMessage::Outbox, false); m_msg.setStatus(QMailMessage::Draft, true); // This message is present only on the local device until we externalise or send it m_msg.setStatus(QMailMessage::LocalOnly, true); if (!m_msg.id().isValid()) { saved = QMailStore::instance()->addMessage(&m_msg); } else { saved = QMailStore::instance()->updateMessage(&m_msg); m_newMessage = false; } // Sync to the server, so the message will be in the remote Drafts folder if (saved) { QMailDisconnected::flagMessage(m_msg.id(), QMailMessage::Draft, QMailMessage::Temporary, "Flagging message as draft"); QMailDisconnected::moveToFolder(QMailMessageIdList() << m_msg.id(), m_msg.parentFolderId()); EmailAgent::instance()->exportUpdates(m_msg.parentAccountId()); emitSignals(); } else { qWarning() << "Failed to save message!"; } }
void KLineEdit::keyPressEvent( QKeyEvent *e ) { KKey key( e ); if ( KStdAccel::copy().contains( key ) ) { copy(); return; } else if ( KStdAccel::paste().contains( key ) ) { paste(); return; } else if ( KStdAccel::pasteSelection().contains( key ) ) { QString text = QApplication::clipboard()->text( QClipboard::Selection); insert( text ); deselect(); return; } else if ( KStdAccel::cut().contains( key ) ) { cut(); return; } else if ( KStdAccel::undo().contains( key ) ) { undo(); return; } else if ( KStdAccel::redo().contains( key ) ) { redo(); return; } else if ( KStdAccel::deleteWordBack().contains( key ) ) { cursorWordBackward(true); if ( hasSelectedText() ) del(); e->accept(); return; } else if ( KStdAccel::deleteWordForward().contains( key ) ) { // Workaround for QT bug where cursorWordForward(true); if ( hasSelectedText() ) del(); e->accept(); return; } else if ( KStdAccel::backwardWord().contains( key ) ) { cursorWordBackward(false); e->accept(); return; } else if ( KStdAccel::forwardWord().contains( key ) ) { cursorWordForward(false); e->accept(); return; } else if ( KStdAccel::beginningOfLine().contains( key ) ) { home(false); e->accept(); return; } else if ( KStdAccel::endOfLine().contains( key ) ) { end(false); e->accept(); return; } // Filter key-events if EchoMode is normal and // completion mode is not set to CompletionNone if ( echoMode() == QLineEdit::Normal && completionMode() != KGlobalSettings::CompletionNone ) { KeyBindingMap keys = getKeyBindings(); KGlobalSettings::Completion mode = completionMode(); bool noModifier = (e->state() == NoButton || e->state() == ShiftButton || e->state() == Keypad); if ( (mode == KGlobalSettings::CompletionAuto || mode == KGlobalSettings::CompletionPopupAuto || mode == KGlobalSettings::CompletionMan) && noModifier ) { if ( !d->userSelection && hasSelectedText() && ( e->key() == Key_Right || e->key() == Key_Left ) && e->state()==NoButton ) { QString old_txt = text(); d->disableRestoreSelection = true; int start,end; getSelection(&start, &end); deselect(); QLineEdit::keyPressEvent ( e ); int cPosition=cursorPosition(); if (e->key() ==Key_Right && cPosition > start ) validateAndSet(old_txt, cPosition, cPosition, old_txt.length()); else validateAndSet(old_txt, cPosition, start, old_txt.length()); d->disableRestoreSelection = false; return; } if ( e->key() == Key_Escape ) { if (hasSelectedText() && !d->userSelection ) { del(); setUserSelection(true); } // Don't swallow the Escape press event for the case // of dialogs, which have Escape associated to Cancel e->ignore(); return; } } if ( (mode == KGlobalSettings::CompletionAuto || mode == KGlobalSettings::CompletionMan) && noModifier ) { QString keycode = e->text(); if ( !keycode.isEmpty() && (keycode.unicode()->isPrint() || e->key() == Key_Backspace || e->key() == Key_Delete ) ) { bool hasUserSelection=d->userSelection; bool hadSelection=hasSelectedText(); bool cursorNotAtEnd=false; int start,end; getSelection(&start, &end); int cPos = cursorPosition(); // When moving the cursor, we want to keep the autocompletion as an // autocompletion, so we want to process events at the cursor position // as if there was no selection. After processing the key event, we // can set the new autocompletion again. if ( hadSelection && !hasUserSelection && start>cPos ) { del(); setCursorPosition(cPos); cursorNotAtEnd=true; } d->disableRestoreSelection = true; QLineEdit::keyPressEvent ( e ); d->disableRestoreSelection = false; QString txt = text(); int len = txt.length(); if ( !hasSelectedText() && len /*&& cursorPosition() == len */) { if ( e->key() == Key_Backspace ) { if ( hadSelection && !hasUserSelection && !cursorNotAtEnd ) { backspace(); txt = text(); len = txt.length(); } if ( !d->backspacePerformsCompletion || !len ) d->autoSuggest = false; } if (e->key() == Key_Delete ) d->autoSuggest=false; if ( emitSignals() ) emit completion( txt ); if ( handleSignals() ) makeCompletion( txt ); if( (e->key() == Key_Backspace || e->key() == Key_Delete) ) d->autoSuggest=true; e->accept(); } return; } } else if (( mode == KGlobalSettings::CompletionPopup || mode == KGlobalSettings::CompletionPopupAuto ) && noModifier && !e->text().isEmpty() ) { QString old_txt = text(); bool hasUserSelection=d->userSelection; bool hadSelection=hasSelectedText(); bool cursorNotAtEnd=false; int start,end; getSelection(&start, &end); int cPos = cursorPosition(); QString keycode = e->text(); // When moving the cursor, we want to keep the autocompletion as an // autocompletion, so we want to process events at the cursor position // as if there was no selection. After processing the key event, we // can set the new autocompletion again. if (hadSelection && !hasUserSelection && start>cPos && ( (!keycode.isEmpty() && keycode.unicode()->isPrint()) || e->key() == Key_Backspace || e->key() == Key_Delete ) ) { del(); setCursorPosition(cPos); cursorNotAtEnd=true; } uint selectedLength=selectedText().length(); d->disableRestoreSelection = true; QLineEdit::keyPressEvent ( e ); d->disableRestoreSelection = false; if (( selectedLength != selectedText().length() ) && !hasUserSelection ) slotRestoreSelectionColors(); // and set userSelection to true QString txt = text(); int len = txt.length(); if ( txt != old_txt && len/* && ( cursorPosition() == len || force )*/ && ( (!keycode.isEmpty() && keycode.unicode()->isPrint()) || e->key() == Key_Backspace || e->key() == Key_Delete) ) { if ( e->key() == Key_Backspace ) { if ( hadSelection && !hasUserSelection && !cursorNotAtEnd ) { backspace(); txt = text(); len = txt.length(); } if ( !d->backspacePerformsCompletion ) d->autoSuggest = false; } if (e->key() == Key_Delete ) d->autoSuggest=false; if ( d->completionBox ) d->completionBox->setCancelledText( txt ); if ( emitSignals() ) emit completion( txt ); // emit when requested... if ( handleSignals() ) { makeCompletion( txt ); // handle when requested... } if ( (e->key() == Key_Backspace || e->key() == Key_Delete ) && mode == KGlobalSettings::CompletionPopupAuto ) d->autoSuggest=true; e->accept(); } else if (!len && d->completionBox && d->completionBox->isVisible()) d->completionBox->hide(); return; } else if ( mode == KGlobalSettings::CompletionShell ) { // Handles completion. KShortcut cut; if ( keys[TextCompletion].isNull() ) cut = KStdAccel::shortcut(KStdAccel::TextCompletion); else cut = keys[TextCompletion]; if ( cut.contains( key ) ) { // Emit completion if the completion mode is CompletionShell // and the cursor is at the end of the string. QString txt = text(); int len = txt.length(); if ( cursorPosition() == len && len != 0 ) { if ( emitSignals() ) emit completion( txt ); if ( handleSignals() ) makeCompletion( txt ); return; } } else if ( d->completionBox ) d->completionBox->hide(); } // handle rotation if ( mode != KGlobalSettings::CompletionNone ) { // Handles previous match KShortcut cut; if ( keys[PrevCompletionMatch].isNull() ) cut = KStdAccel::shortcut(KStdAccel::PrevCompletion); else cut = keys[PrevCompletionMatch]; if ( cut.contains( key ) ) { if ( emitSignals() ) emit textRotation( KCompletionBase::PrevCompletionMatch ); if ( handleSignals() ) rotateText( KCompletionBase::PrevCompletionMatch ); return; } // Handles next match if ( keys[NextCompletionMatch].isNull() ) cut = KStdAccel::shortcut(KStdAccel::NextCompletion); else cut = keys[NextCompletionMatch]; if ( cut.contains( key ) ) { if ( emitSignals() ) emit textRotation( KCompletionBase::NextCompletionMatch ); if ( handleSignals() ) rotateText( KCompletionBase::NextCompletionMatch ); return; } } // substring completion if ( compObj() ) { KShortcut cut; if ( keys[SubstringCompletion].isNull() ) cut = KStdAccel::shortcut(KStdAccel::SubstringCompletion); else cut = keys[SubstringCompletion]; if ( cut.contains( key ) ) { if ( emitSignals() ) emit substringCompletion( text() ); if ( handleSignals() ) { setCompletedItems( compObj()->substringCompletion(text())); e->accept(); } return; } } } uint selectedLength = selectedText().length(); // Let QLineEdit handle any other keys events. QLineEdit::keyPressEvent ( e ); if ( selectedLength != selectedText().length() ) slotRestoreSelectionColors(); // and set userSelection to true }
CachedHttpReply::CachedHttpReply(const QByteArray &body, const HttpRequest &req) : bytes(body), req(req) { QTimer::singleShot(0, this, SLOT(emitSignals())); }
ImageViewer::ImageViewer(QDeclarativeItem *item) : QDeclarativeItem(item) { QTimer::singleShot(0, this, SLOT(emitSignals())); }