source: smplayer/trunk/src/chapters.cpp@ 188

Last change on this file since 188 was 188, checked in by Silvan Scherrer, 8 years ago

SMPlayer: update trunk to version 17.1.0

File size: 2.7 KB
Line 
1/* smplayer, GUI front-end for mplayer.
2 Copyright (C) 2006-2017 Ricardo Villalba <rvm@escomposlinux.org>
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17*/
18
19#include "chapters.h"
20
21Chapters::Chapters() {
22 clear();
23}
24
25Chapters::~Chapters() {
26}
27
28void Chapters::clear() {
29 cm.clear();
30}
31
32void Chapters::addName(int ID, QString name) {
33 cm[ID].setName(name);
34 cm[ID].setID(ID);
35}
36
37void Chapters::addStart(int ID, double start) {
38 cm[ID].setStart(start);
39 cm[ID].setID(ID);
40}
41
42void Chapters::addEnd(int ID, double end) {
43 cm[ID].setEnd(end);
44 cm[ID].setID(ID);
45}
46
47void Chapters::addID(int ID) {
48 cm[ID].setID(ID);
49}
50
51int Chapters::numItems() {
52 return cm.count();
53}
54
55bool Chapters::existsItemAt(int n) {
56 return ((n > 0) && (n < numItems()));
57}
58
59ChapterData Chapters::itemAt(int n) {
60 return cm.values()[n];
61}
62
63ChapterData Chapters::item(int ID) {
64 return cm[ID];
65}
66
67ChapterData Chapters::itemFromTime(double sec)
68{
69 QMapIterator<int, ChapterData> i(cm);
70 while(i.hasNext()) {
71 i.next();
72 ChapterData d = i.value();
73 if(d.start() <= sec && d.end() >= sec)
74 return d;
75 }
76 return cm[-1];
77}
78
79ChapterData Chapters::itemAfterTime(double sec)
80{
81 QMapIterator<int, ChapterData> i(cm);
82 int ID = -1;
83 double min_time = 1.7976931348623158e+308;
84 while(i.hasNext()) {
85 i.next();
86 ChapterData d = i.value();
87 if(d.start() > sec && d.start() < min_time)
88 {
89 ID = d.ID();
90 min_time = d.start();
91 }
92 }
93 return cm[ID];
94}
95
96ChapterData Chapters::itemBeforeTime(double sec)
97{
98 QMapIterator<int, ChapterData> i(cm);
99 int ID = -1;
100 double max_time = 0;
101 while(i.hasNext()) {
102 i.next();
103 ChapterData d = i.value();
104 if(d.end() < sec && d.end() > max_time)
105 {
106 ID = d.ID();
107 max_time = d.end();
108 }
109 }
110 return cm[ID];
111}
112
113int Chapters::find(int ID) {
114 for (int n=0; n < numItems(); n++) {
115 if (itemAt(n).ID() == ID) return n;
116 }
117 return -1;
118}
119
120void Chapters::list() {
121 QMapIterator<int, ChapterData> i(cm);
122 while (i.hasNext()) {
123 i.next();
124 ChapterData d = i.value();
125 qDebug("Chapters::list: item %d: ID: %d name: '%s' start: %g end: %g",
126 i.key(), d.ID(), d.name().toUtf8().constData(), d.start(), d.end() );
127 }
128}
Note: See TracBrowser for help on using the repository browser.