/* * Copyright (C) 2001 Rik Hemsley (rikkus) * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ #include #include #include #include "seeker.h" #include "seeker.moc" Seeker::Seeker(TQWidget * parent) : TQSlider(0, 60, 10, 0,TQt::Horizontal, parent), adjusting_(false) { delayedUpdateTimer_ = new TQTimer(this); connect(this, TQ_SIGNAL(sliderPressed()), TQ_SLOT(slotSliderPressed())); connect(this, TQ_SIGNAL(sliderReleased()), TQ_SLOT(slotSliderReleased())); connect(this, TQ_SIGNAL(valueChanged(int)), TQ_SLOT(slotValueChanged(int))); connect(napp->player(), TQ_SIGNAL(timeout()), TQ_SLOT(slotTimeout())); connect(delayedUpdateTimer_, TQ_SIGNAL(timeout()), TQ_SLOT(slotDelayedUpdate())); } Seeker::~Seeker() { } void Seeker::slotSliderPressed() { adjusting_ = true; } void Seeker::slotValueChanged(int) { if (adjusting_) delayedUpdateTimer_->start(100, true); } void Seeker::slotDelayedUpdate() { napp->player()->skipTo(value()); } void Seeker::slotSliderReleased() { delayedUpdateTimer_->stop(); adjusting_ = false; napp->player()->skipTo(value()); } void Seeker::wheelEvent(TQWheelEvent *) { // Ignore. } void Seeker::slotTimeout() { blockSignals(true); { delayedUpdateTimer_->stop(); int currentLength = int(napp->player()->getLength()); int currentTime = int(napp->player()->getTime()); if (currentLength != maxValue()) setMaxValue(currentLength); if (!adjusting_) { if (currentTime != value()) setValue(currentTime); } } blockSignals(false); update(); }