コード例 #1
0
MojErr UpSyncDraftsCommand::GetDraftsResponse(MojObject& response, MojErr err)
{
	CommandTraceFunction();

	try {
		ErrorToException(err);

		// Store all draft emails in a vector.
		BOOST_FOREACH(const MojObject& emailObj, DatabaseAdapter::GetResultsIterators(response))
		{
			EmailPtr email = boost::make_shared<ImapEmail>();

			EmailAdapter::ParseDatabaseObject(emailObj, *email);

			MojObject id;
			err = emailObj.getRequired(DatabaseAdapter::ID, id);
			ErrorToException(err);
			email->SetId(id);

			// Parse UID (only exists for IMAP emails already on server)
			bool hasUID = false;
			UID uid = 0;
			err = emailObj.get(ImapEmailAdapter::UID, uid, hasUID);
			ErrorToException(err);

			if(hasUID && uid > 0) {
				email->SetUID(uid);
			}

			m_drafts.push_back(email);
		}

		// Check for more results
		bool hasMoreResults = DatabaseAdapter::GetNextPage(response, m_draftsPage);

		if(hasMoreResults) {
			GetDrafts();
		} else {
			if(!m_drafts.empty()) {
				MojLogInfo(m_log, "uploading %d draft emails to the server", m_drafts.size());
				m_emailP = m_drafts.back();
				CreateAndRunAppendCommand();
			} else {
				SetupWatchDraftsActivity();
			}
		}

	} CATCH_AS_FAILURE
コード例 #2
0
MojErr UpSyncDraftsCommand::GetDraftsFolderNameResponse(MojObject& response, MojErr err)
{
	CommandTraceFunction();

	try {
		ErrorToException(err);

		MojObject folderObj;
		DatabaseAdapter::GetOneResult(response, folderObj);

		MojString draftsFolderName;
		err = folderObj.getRequired(ImapFolderAdapter::SERVER_FOLDER_NAME, draftsFolderName);
		ErrorToException(err);

		m_draftsFolderName.assign(draftsFolderName);

		GetDrafts();

	} CATCH_AS_FAILURE

	return MojErrNone;
}
コード例 #3
0
void CheckDraftsCommand::RunImpl()
{
	CommandTraceFunction();

	GetDrafts();
}