/** * Queries the medium state. Call this and then read the state field instead * of calling GetState() on medium directly as it will properly handle the * situation when GetState() itself fails by setting state to Inaccessible * and memorizing the error info describing why GetState() failed. * * As the last step, this method calls #refresh() to refresh all precomposed * strings. * * @note This method blocks for the duration of the state check. Since this * check may take quite a while (e.g. for a medium located on a * network share), the calling thread must not be the UI thread. You * have been warned. */ void UIMedium::blockAndQueryState() { if (mMedium.isNull()) return; mState = mMedium.RefreshState(); /* Save the result to distinguish between inaccessible and e.g. uninitialized objects */ mResult = COMResult (mMedium); if (!mResult.isOk()) { mState = KMediumState_Inaccessible; mLastAccessError = QString::null; } else mLastAccessError = mMedium.GetLastAccessError(); refresh(); }
void UIMedium::blockAndQueryState() { /* Ignore for NULL medium: */ if (m_medium.isNull()) return; /* Acquire actual medium state: */ m_state = m_medium.RefreshState(); /* Save the result to distinguish between * inaccessible and e.g. uninitialized objects: */ m_result = COMResult(m_medium); if (!m_result.isOk()) { m_state = KMediumState_Inaccessible; m_strLastAccessError = QString(); } else m_strLastAccessError = m_medium.GetLastAccessError(); /* Refresh finally: */ refresh(); }