bool Directory::ensureExistsAndEmpty(const std::string& name, bool needEraseContent) { assert(!name.empty()); ensureExists(name); if (!needEraseContent) return !empty(name); eraseContent(name); return 1; }
void Directory::eraseContent(const std::string& name) { assert(!name.empty()); Iterator::Ptr it = enumerate(name); while(it->moveNext()) { if (it->name() == "." || it->name() == "..") continue; const std::string& path = it->fullPath(); if (File::isDir(path)) { eraseContent(path); remove(path); continue; } File::unlink(path); } }
void ScrollViewBase::updateScrollSize() { if (mClient == nullptr) return; eraseContent(); IntSize contentSize = getContentSize(); IntSize viewSize = getViewSize(); // вертикальный контент не помещается if (contentSize.height > viewSize.height) { if (mVScroll != nullptr) { if (!mVScroll->getVisible() && mVisibleVScroll) { mVScroll->setVisible(true); mClient->setSize(mClient->getWidth() - mVScroll->getWidth(), mClient->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } if (mHScroll != nullptr) { mHScroll->setSize(mHScroll->getWidth() - mVScroll->getWidth(), mHScroll->getHeight()); // если показали вертикальный скрол бар, уменьшилось вью по горизонтали, // пересчитываем горизонтальный скрол на предмет показа if ((contentSize.width > viewSize.width) && ( ! mHScroll->getVisible()) && (mVisibleHScroll)) { mHScroll->setVisible(true); mClient->setSize(mClient->getWidth(), mClient->getHeight() - mHScroll->getHeight()); mVScroll->setSize(mVScroll->getWidth(), mVScroll->getHeight() - mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } } } } } } // вертикальный контент помещается else { if (mVScroll != nullptr) { if (mVScroll->getVisible()) { mVScroll->setVisible(false); mClient->setSize(mClient->getWidth() + mVScroll->getWidth(), mClient->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } if (mHScroll != nullptr) { mHScroll->setSize(mHScroll->getWidth() + mVScroll->getWidth(), mHScroll->getHeight()); // если скрыли вертикальный скрол бар, увеличилось вью по горизонтали, // пересчитываем горизонтальный скрол на предмет скрытия if ((contentSize.width <= viewSize.width) && (mHScroll->getVisible())) { mHScroll->setVisible(false); mClient->setSize(mClient->getWidth(), mClient->getHeight() + mHScroll->getHeight()); mVScroll->setSize(mVScroll->getWidth(), mVScroll->getHeight() + mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } } } } } } // горизонтальный контент не помещается if (contentSize.width > viewSize.width) { if (mHScroll != nullptr) { if (!mHScroll->getVisible() && mVisibleHScroll) { mHScroll->setVisible(true); mClient->setSize(mClient->getWidth(), mClient->getHeight() - mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } if (mVScroll != nullptr) { mVScroll->setSize(mVScroll->getWidth(), mVScroll->getHeight() - mHScroll->getHeight()); // если показали горизонтальный скрол бар, уменьшилось вью по вертикали, // пересчитываем вертикальный скрол на предмет показа if ((contentSize.height > viewSize.height) && ( ! mVScroll->getVisible()) && (mVisibleVScroll)) { mVScroll->setVisible(true); mClient->setSize(mClient->getWidth() - mVScroll->getWidth(), mClient->getHeight()); mHScroll->setSize(mHScroll->getWidth() - mVScroll->getWidth(), mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } } } } } } // горизонтальный контент помещается else { if (mHScroll != nullptr) { if (mHScroll->getVisible()) { mHScroll->setVisible(false); mClient->setSize(mClient->getWidth(), mClient->getHeight() + mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } if (mVScroll != nullptr) { mVScroll->setSize(mVScroll->getWidth(), mVScroll->getHeight() + mHScroll->getHeight()); // если скрыли горизонтальный скрол бар, увеличилось вью по вертикали, // пересчитываем вертикальный скрол на предмет скрытия if ((contentSize.height <= viewSize.height) && (mVScroll->getVisible())) { mVScroll->setVisible(false); mClient->setSize(mClient->getWidth() + mVScroll->getWidth(), mClient->getHeight()); mHScroll->setSize(mHScroll->getWidth() + mVScroll->getWidth(), mHScroll->getHeight()); // размер может измениться if (mChangeContentByResize) { eraseContent(); contentSize = getContentSize(); viewSize = getViewSize(); } } } } } } mVRange = (viewSize.height >= contentSize.height) ? 0 : contentSize.height - viewSize.height; mHRange = (viewSize.width >= contentSize.width) ? 0 : contentSize.width - viewSize.width; if (mVScroll != nullptr) { size_t page = getVScrollPage(); mVScroll->setScrollPage(page); mVScroll->setScrollViewPage(viewSize.width > (int)page ? viewSize.width : page); mVScroll->setScrollRange(mVRange + 1); if (contentSize.height) mVScroll->setTrackSize(int (float(mVScroll->getLineSize() * viewSize.height) / float(contentSize.height))); } if (mHScroll != nullptr) { size_t page = getHScrollPage(); mHScroll->setScrollPage(page); mHScroll->setScrollViewPage(viewSize.height > (int)page ? viewSize.height : page); mHScroll->setScrollRange(mHRange + 1); if (contentSize.width) mHScroll->setTrackSize(int (float(mHScroll->getLineSize() * viewSize.width) / float(contentSize.width))); } }
void clear() { eraseContent(); std::string::clear(); }
~SecureString() { eraseContent(); }