void SignalRelay::timerEvent(QTimerEvent *event) { if (event->timerId() != m_timerId) { QObject::timerEvent(event); return; } if (m_resetTimer) { killTimer(m_timerId); m_timerId = startTimer(m_interval); m_resetTimer = false; } if (m_align != Plasma::NoAlignment) { checkAlignment(); } emit dc->updateRequested(dc); if (d->hasUpdates()) { //kDebug() << "emitting data updated directly" << d->data; emit dataUpdated(dc->objectName(), d->data); m_queued = false; } else { // the source wasn't actually updated; so let's put ourselves in the queue // so we get a dataUpdated() call when the data does arrive //kDebug() << "queued"; m_queued = true; } }
SignalRelay::SignalRelay(DataContainer *parent, DataContainerPrivate *data, uint ival, Plasma::IntervalAlignment align, bool immediateUpdate) : QObject(parent), dc(parent), d(data), m_interval(ival), m_align(align), m_resetTimer(true), m_queued(true) { //kDebug() << "signal relay with time of" << m_timerId << "being set up"; m_timerId = startTimer(immediateUpdate ? 0 : m_interval); if (m_align != Plasma::NoAlignment) { checkAlignment(); } }
void TextField2::preRender(float dt) { Renderable::preRender(dt); mTextPosition = 0; if (mTextDirty) { parseRawText(); } mCurrXpos = 0.0f; mCurrYpos = -mLineScroll * (mFont->getCharHeight() + mFont->getLeading()); checkAlignment(mText.c_str()); mInWord = false; mCurrentNode = mRootNode->firstChild(); }
bool PartResizerWidget::updateLastSector(qint64 newLastSector) { if (minimumLastSector(align()) > -1 && newLastSector < minimumLastSector(align())) newLastSector = minimumLastSector(align()); if (maximumLastSector(align()) > 0 && newLastSector > maximumLastSector(align())) newLastSector = maximumLastSector(align()); const qint64 newLength = newLastSector - partition().firstSector() + 1; if (newLength < minimumLength()) newLastSector += minimumLength() - newLength; if (newLength > maximumLength()) newLastSector -= newLength - maximumLength(); if (align()) newLastSector = PartitionAlignment::alignedLastSector(device(), partition(), newLastSector, minimumLastSector(align()), maximumLastSector(align()), minimumLength(), maximumLength()); if (newLastSector != partition().lastSector() && (partition().children().size() == 0 || checkAlignment(*partition().children().last(), partition().lastSector() - newLastSector))) { const qint64 deltaLast = newLastSector - partition().lastSector(); partition().setLastSector(newLastSector); partition().fileSystem().setLastSector(newLastSector); resizeLogicals(0, deltaLast); updatePositions(); emit lastSectorChanged(partition().lastSector()); return true; } return false; }
bool PartResizerWidget::movePartition(qint64 newFirstSector) { const qint64 originalLength = partition().length(); const bool isLengthAligned = PartitionAlignment::isLengthAligned(device(), partition()); if (maximumFirstSector(align()) > -1 && newFirstSector > maximumFirstSector(align())) newFirstSector = maximumFirstSector(align()); if (minimumFirstSector(align()) > 0 && newFirstSector < minimumFirstSector(align())) newFirstSector = minimumFirstSector(align()); if (align()) newFirstSector = PartitionAlignment::alignedFirstSector(device(), partition(), newFirstSector, minimumFirstSector(align()), maximumFirstSector(align()), -1, -1); qint64 delta = newFirstSector - partition().firstSector(); if (delta == 0) return false; qint64 newLastSector = partition().lastSector() + delta; if (minimumLastSector(align()) > -1 && newLastSector < minimumLastSector(align())) { const qint64 deltaLast = minimumLastSector(align()) - newLastSector; newFirstSector += deltaLast; newLastSector += deltaLast; } if (maximumLastSector(align()) > 0 && newLastSector > maximumLastSector(align())) { const qint64 deltaLast = newLastSector - maximumLastSector(align()); newFirstSector -= deltaLast; newLastSector -= deltaLast; } if (align()) newLastSector = PartitionAlignment::alignedLastSector(device(), partition(), newLastSector, minimumLastSector(align()), maximumLastSector(align()), -1, -1, originalLength, isLengthAligned); if (newLastSector == partition().lastSector()) return false; if (isLengthAligned && newLastSector - newFirstSector + 1 != partition().length()) { qDebug() << "length changes while trying to move partition " << partition().deviceNode() << ". new first: " << newFirstSector << ", new last: " << newLastSector << ", old length: " << partition().length() << ", new length: " << newLastSector - newFirstSector + 1; return false; } if (!checkConstraints(newFirstSector, newLastSector)) { qDebug() << "constraints not satisfied while trying to move partition " << partition().deviceNode() << ". new first: " << newFirstSector << ", new last: " << newLastSector; return false; } if (align() && !PartitionAlignment::isAligned(device(), partition(), newFirstSector, newLastSector, true)) { qDebug() << "partition " << partition().deviceNode() << " not aligned but supposed to be. new first: " << newFirstSector << " delta: " << PartitionAlignment::firstDelta(device(), partition(), newFirstSector) << ", new last: " << newLastSector << ", delta: " << PartitionAlignment::lastDelta(device(), partition(), newLastSector); return false; } if (partition().children().size() > 0 && (!checkAlignment(*partition().children().first(), partition().firstSector() - newFirstSector) || !checkAlignment(*partition().children().last(), partition().lastSector() - newLastSector))) { qDebug() << "cannot align children while trying to move partition " << partition().deviceNode(); return false; } partition().setFirstSector(newFirstSector); partition().fileSystem().setFirstSector(newFirstSector); partition().setLastSector(newLastSector); partition().fileSystem().setLastSector(newLastSector); updatePositions(); emit firstSectorChanged(partition().firstSector()); emit lastSectorChanged(partition().lastSector()); return true; }
void TextField2::renderText(const string &text) { int len = static_cast<int>(text.size()); for (int i = 0; i < len; i++, mTextPosition++) { char ch = text[i]; if (ch <= ' ' && mInWord) { mInWord = false; } if (ch == ' ') { mCurrXpos += mFont->getSpaceWidth(); continue; } else if(ch == '\t') { mCurrXpos = mFont->getVariableTabPosition(mCurrXpos); continue; } else if(ch == '\n') { newLine(); checkAlignment(text.c_str() + i + 1); continue; } else if (mWidth > 0.0f && ch > ' ' && !mInWord) { mInWord = true; float wordWidth = 0.0f; float wordHeight = 0.0f; mFont->measureWord(text.c_str() + i, wordWidth, wordHeight); if (mCurrXpos + wordWidth > mWidth) { newLine(); checkAlignment(text.c_str() + i); } } TextureWindow charRender; mFont->getTextureWindow(ch, charRender); bool display = mCurrentLine >= mLineScroll && (mCurrentLine < (mLineScroll + mDisplayNumLines) || mDisplayNumLines == 0); if (display) { glTexCoord2f(charRender.getLeftX(), charRender.getTopY()); glVertex2f(mCurrXpos, mCurrYpos); glTexCoord2f(charRender.getRightX(), charRender.getTopY()); glVertex2f(mCurrXpos + charRender.getWidth(), mCurrYpos); glTexCoord2f(charRender.getRightX(), charRender.getBottomY()); glVertex2f(mCurrXpos + charRender.getWidth(), mCurrYpos + charRender.getHeight()); glTexCoord2f(charRender.getLeftX(), charRender.getBottomY()); glVertex2f(mCurrXpos, mCurrYpos + charRender.getHeight()); } mCurrXpos += charRender.getWidth(); if (text[i + 1] > ' ') { mCurrXpos += mFont->getKerning(); } if (mNewLineDirty) { Node::NodeHitboxList &list = mCurrentNode->getHitboxes(); Handle<Renderable> hitbox = list[list.size() - 1]; hitbox->setWidth(mCurrXpos - hitbox->getPositionX()); } } }