]> Some of my projects - aniplayer2.git/commitdiff
Draw a marker where marking as watched kicks in.
authorAPTX <marek321@gmail.com>
Sun, 16 Feb 2014 13:37:51 +0000 (14:37 +0100)
committerAPTX <marek321@gmail.com>
Sun, 16 Feb 2014 13:37:51 +0000 (14:37 +0100)
player/mainwindow.cpp
player/seekslider.cpp
player/seekslider.h

index 2a1e0dc190921c7be5867d52ee1bc2561aea72a5..065833d45edc775b19f70bdcad71aeb1d79d354b 100644 (file)
@@ -107,6 +107,7 @@ MainWindow::MainWindow(QWidget *parent) :
        connect(menu->volumeSlider(), SIGNAL(volumeChangedByUser(double)), player, SLOT(setVolume(double)));
        connect(player, SIGNAL(mutedChanged(bool)), menu->volumeSlider(), SLOT(setMuted(bool)));
        connect(menu->volumeSlider(), SIGNAL(mutedChangedByUser(bool)), player, SLOT(setMuted(bool)));
+       connect(player, SIGNAL(automarkChanged(int)), menu->seekSlider(), SLOT(setAutomark(int)));
 
        connect(player, SIGNAL(message(QString)), menu, SLOT(showMessage(QString)));
 
index f9130113c8104c390459672fdebcf687a4a92e69..bb05c34cb199a169a28df5ed44b981385d708881 100644 (file)
@@ -16,7 +16,6 @@ SeekSlider::SeekSlider(QWidget *parent) : QWidget(parent)
 
 void SeekSlider::init()
 {
-       ticking = false;
        m_length = 1000;
        m_seekPosition = 20;
        markerWidth = 2;
@@ -88,6 +87,7 @@ void SeekSlider::paintEvent(QPaintEvent *event)
        const QColor unwatchedPartColor(0, 255, 0, 100);
        const QColor toolTipBackgroundColor(0, 0, 0, 150);
        const QColor toolTipForegroundColor(255, 255, 255);
+       const QColor automarkPositionColor(255, 255, 0, 150);
 
 
        // border
@@ -98,6 +98,13 @@ void SeekSlider::paintEvent(QPaintEvent *event)
        // unwatched part
        p.fillRect(markerPos + markerWidth / 2, seekerTop + 1, seekerWidth - markerPos, seekerHeight - 1, unwatchedPartColor);
 
+       // automark position
+       if (m_automark)
+       {
+               const int automarkPos = (seekerWidth * m_automark) / 100;
+               p.fillRect(automarkPos - markerWidth / 2, seekerTop + 1, markerWidth, seekerHeight - 1, automarkPositionColor);
+       }
+
        // previous locations before seeking
        int i = 1;
        for (auto it = previuousPos.constBegin(); it != previuousPos.constEnd(); ++it)
@@ -176,17 +183,18 @@ void SeekSlider::seek(qint64 msec)
 
 void SeekSlider::tick(qint64 msec)
 {
-       ticking = true;
        setSeekPosition(msec);
-       ticking = false;
 }
 
 void SeekSlider::totalTimeChanged(qint64 msec)
 {
-       ticking = true;
        setLength(msec);
        previuousPos.clear();
-       ticking = false;
+}
+
+void SeekSlider::setAutomark(int percent)
+{
+       m_automark = percent;
 }
 
 void SeekSlider::seekableChanged(bool isSeekable)
@@ -215,10 +223,8 @@ void SeekSlider::seek(int x)
        while (!previuousPos.isEmpty() && previuousPos.count() + 1 > maxPreviousPos) previuousPos.dequeue();
        previuousPos.enqueue(m_seekPosition);
 
-       ticking = true;
        setSeekPosition(newSeekPos);
        emit seekRequested(newSeekPos);
-       ticking = false;
        seek(newSeekPos);
 }
 
@@ -239,3 +245,8 @@ qint64 SeekSlider::seekPosition() const
 {
        return m_seekPosition;
 }
+
+int SeekSlider::automark() const
+{
+       return m_automark;
+}
index 09dd954e282d8cea92b45c8be62901622aee6754..83937e4d4ae78d6e0363ee5e1dc4d451f3fae616 100644 (file)
@@ -8,6 +8,7 @@ class SeekSlider : public QWidget
 {
        Q_OBJECT
        Q_PROPERTY(qint64 seekPosition READ seekPosition WRITE setSeekPosition NOTIFY seekPositionChanged USER true)
+       Q_PROPERTY(int automark READ automark WRITE setAutomark)
 
        Q_DISABLE_COPY(SeekSlider)
 
@@ -43,7 +44,7 @@ public:
        bool event(QEvent *event);
 */
        qint64 seekPosition() const;
-
+       int automark() const;
 
 public slots:
 //     void setOrientation(Qt::Orientation o);
@@ -52,6 +53,8 @@ public slots:
        void tick(qint64 msec);
        void totalTimeChanged(qint64 msec);
 
+       void setAutomark(int percent);
+
 signals:
        void seekPositionChanged(qint64 arg);
        void seekRequested(qint64 position);
@@ -81,7 +84,6 @@ private:
        qint64 pos2time(int pos) const;
        int time2pos(qint64 msec) const;
 
-       bool ticking;
        bool markerShadowEnabled;
 
        qint64 m_length;
@@ -95,6 +97,7 @@ private:
 
        QQueue<qint64> previuousPos;
        int maxPreviousPos;
+       int m_automark;
 
        // Seeker Geometry
        int seekerTop;