[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso resources/themes/default/traversotheme...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso resources/themes/default/traversotheme... |
Date: |
Fri, 23 Nov 2007 14:21:08 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/11/23 14:21:08
Modified files:
resources/themes/default: traversotheme.xml
src/core : Marker.cpp Marker.h SnapList.cpp Song.cpp
TimeLine.cpp TimeLine.h
src/traverso/dialogs: MarkerDialog.cpp
src/traverso/songcanvas: MarkerView.cpp TimeLineView.cpp
Log message:
Using QMap<position, Marker*> as storage format introduced a couple of
problems, which are hard to solve, so:
* Moving back to QList<Marker*>
* Use qSort to sort the Markers in the list when adding or moving a
marker
General improvements:
* Make it impossible to remove the End marker, unless the 'clear all
markers' is used.
* Distinguish the end marker by giving it another color
* Some cleanups in Marker related code.
@ Nicola, sorry for messing so much with your latest commits.... But
your commit count did go up :P
Please have a look to see if everything is still how you intended it to
be!
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/themes/default/traversotheme.xml?cvsroot=traverso&r1=1.45&r2=1.46
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Marker.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Marker.h?cvsroot=traverso&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/SnapList.cpp?cvsroot=traverso&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.cpp?cvsroot=traverso&r1=1.157&r2=1.158
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/TimeLine.cpp?cvsroot=traverso&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/TimeLine.h?cvsroot=traverso&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/MarkerDialog.cpp?cvsroot=traverso&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/MarkerView.cpp?cvsroot=traverso&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.55&r2=1.56
Patches:
Index: resources/themes/default/traversotheme.xml
===================================================================
RCS file:
/sources/traverso/traverso/resources/themes/default/traversotheme.xml,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -b -r1.45 -r1.46
--- resources/themes/default/traversotheme.xml 17 Oct 2007 14:46:17 -0000
1.45
+++ resources/themes/default/traversotheme.xml 23 Nov 2007 14:21:07 -0000
1.46
@@ -174,6 +174,8 @@
<color name="Workcursor:default" red="255" green="0" blue="0"
alpha="255" />
<color name="Marker:default" red="128" green="0" blue="128"
alpha="255" />
+ <color name="Marker:end" red="50" green="0" blue="255"
alpha="255" />
+ <color name="Marker:blinkend" red="128" green="0" blue="255"
alpha="255" />
<color name="Marker:blink" red="255" green="0" blue="128"
alpha="255" />
</colors>
</Themer>
Index: src/core/Marker.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Marker.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/core/Marker.cpp 22 Nov 2007 20:02:14 -0000 1.16
+++ src/core/Marker.cpp 23 Nov 2007 14:21:08 -0000 1.17
@@ -80,12 +80,6 @@
case ENDMARKER:
domNode.setAttribute("type", "ENDMARKER");
break;
- case TEMP_CDTRACK:
- domNode.setAttribute("type", "TEMP_CDTRACK");
- break;
- case TEMP_ENDMARKER:
- domNode.setAttribute("type", "TEMP_ENDMARKER");
- break;
}
return domNode;
@@ -110,17 +104,10 @@
if (tp == "CDTRACK") m_type = CDTRACK;
if (tp == "ENDMARKER") m_type = ENDMARKER;
- if (tp == "TEMP_CDTRACK") m_type = TEMP_CDTRACK;
- if (tp == "TEMP_ENDMARKER") m_type = TEMP_ENDMARKER;
return 1;
}
-void Marker::was_updated()
-{
- emit wasDragged(this);
-}
-
void Marker::set_when(const TimeRef& when)
{
m_when = when;
Index: src/core/Marker.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Marker.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/core/Marker.h 22 Nov 2007 20:02:14 -0000 1.14
+++ src/core/Marker.h 23 Nov 2007 14:21:08 -0000 1.15
@@ -38,8 +38,6 @@
enum Type {
CDTRACK,
ENDMARKER,
- TEMP_CDTRACK,
- TEMP_ENDMARKER
};
Marker(TimeLine* tl, const TimeRef when, Type type = CDTRACK);
@@ -49,8 +47,6 @@
QDomNode get_state(QDomDocument doc);
int set_state(const QDomNode& node);
- void was_updated();
-
void set_when (const TimeRef& when);
void set_description(const QString &);
void set_performer(const QString &);
@@ -92,8 +88,6 @@
signals:
void positionChanged(Snappable*);
void descriptionChanged();
- void wasDragged(Marker*);
-
};
#endif
Index: src/core/SnapList.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/SnapList.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- src/core/SnapList.cpp 22 Nov 2007 22:01:05 -0000 1.23
+++ src/core/SnapList.cpp 23 Nov 2007 14:21:08 -0000 1.24
@@ -98,7 +98,7 @@
}
// add all on-screen markers
- QList<Marker*> markerList =
m_song->get_timeline()->get_markers().values();
+ QList<Marker*> markerList = m_song->get_timeline()->get_markers();
for (int i = 0; i < markerList.size(); ++i) {
if (markerList.at(i)->is_snappable() &&
markerList.at(i)->get_when() >= m_rangeStart && markerList.at(i)->get_when() <=
m_rangeEnd) {
m_xposList.append(markerList.at(i)->get_when());
Index: src/core/Song.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.cpp,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -b -r1.157 -r1.158
--- src/core/Song.cpp 22 Nov 2007 22:01:05 -0000 1.157
+++ src/core/Song.cpp 23 Nov 2007 14:21:08 -0000 1.158
@@ -392,7 +392,7 @@
}
if (spec->isCdExport) {
- QMap<TimeRef, Marker*> markers = m_timeline->get_markers();
+ QList<Marker*> markers = m_timeline->get_markers();
if (m_timeline->get_start_location(startlocation)) {
PMESG2(" Start marker found at %s",
QS_C(timeref_to_ms(startlocation)));
@@ -825,7 +825,8 @@
{
QString output;
- QMap<TimeRef, Marker*> mlist = m_timeline->get_markers();
+ QList<Marker*> mlist = m_timeline->get_markers();
+ QList<Marker*> tempmarkers;
//Â Here we make the marker-stuff idiot-proof ;-). Traverso doesn't
insist on having any
//Â marker at all, so we need to handle cases like:
@@ -833,49 +834,57 @@
// - one marker (doesn't make sense)
// - enough markers, but no end marker
+ Marker* temp;
+
if (mlist.size() < 2) {
switch (mlist.size()) {
case 0:
// no markers present. We add one at the
beginning and one at the
// end of the render area.
- mlist.insertMulti(spec->startLocation, new
Marker(m_timeline, spec->startLocation, Marker::TEMP_CDTRACK));
- mlist.insertMulti(spec->endLocation, new
Marker(m_timeline, spec->endLocation, Marker::TEMP_ENDMARKER));
+ temp = new Marker(m_timeline,
spec->startLocation, Marker::CDTRACK);
+ tempmarkers.append(temp);
+ mlist.prepend(temp);
+ temp = new Marker(m_timeline,
spec->endLocation, Marker::ENDMARKER);
+ tempmarkers.append(temp);
+ mlist.append(temp);
break;
case 1:
- // one marker is present. We add two more at
the beginning
- // and at the end of the render area. If the
present marker
+ // one marker is present. We add two more, one
at the beginning
+ // and one at the end of the render area. If
the present marker
// happened to be at either the start or the
end position,
// it will now be overwritten, so we will never
end up with
- // two markers at the same position. just make
sure NOT to
- // use 'insertMulti', use 'insert' instead.
+ // two markers at the same position.
//Â deactivate the next if-condition (only the
first one) if you want the
// stuff before the first marker to go into the
pre-gap
- mlist.insert(spec->startLocation, new
Marker(m_timeline, spec->startLocation, Marker::TEMP_CDTRACK));
- mlist.insert(spec->endLocation, new
Marker(m_timeline, spec->endLocation, Marker::TEMP_ENDMARKER));
+ if (mlist.at(0)->get_when() !=
(spec->startLocation)) {
+ temp = new Marker(m_timeline,
spec->startLocation, Marker::CDTRACK);
+ tempmarkers.append(temp);
+ mlist.prepend(temp);
+ }
+ if (mlist.at(0)->get_when() !=
(spec->startLocation)) {
+ temp = new Marker(m_timeline,
spec->endLocation, Marker::ENDMARKER);
+ tempmarkers.append(temp);
+ mlist.append(temp);
+ }
break;
}
} else {
- //Â would be ok, but let's add a marker at the end anyway, and
overwrite
- // the one that could be there already.
- mlist.insert(spec->endLocation, new Marker(m_timeline,
spec->endLocation, Marker::TEMP_ENDMARKER));
+ // would be ok, but let's check if there is an end marker
present. If not,
+ // add one to spec->end_frame
+ if (!m_timeline->has_end_marker()) {
+ temp = new Marker(m_timeline, spec->endLocation,
Marker::ENDMARKER);
+ tempmarkers.append(temp);
+ mlist.append(temp);
+ }
}
TimeRef start;
- QMapIterator<TimeRef, Marker*> istart(mlist);
- QMapIterator<TimeRef, Marker*> iend(mlist);
- // istart is element 0
- iend.next(); // set this one to element 1
+ for(int i = 0; i < mlist.size()-1; ++i) {
- bool isFirstTrack = true;
-
- while (iend.hasNext()) {
- istart.next();
- iend.next();
-
- Marker* startmarker = istart.value();
- Marker* endmarker = iend.value();
+ Marker* startmarker = mlist.at(i);
+ Marker* endmarker = mlist.at(i+1);
output += "TRACK AUDIO\n";
@@ -898,8 +907,7 @@
output += " MESSAGE \"" + startmarker->get_message() +
"\"\n }\n }\n";
//Â add some stuff only required for the first track (e.g.
pre-gap)
- if (isFirstTrack && pregap) {
- isFirstTrack = false;
+ if ((i == 0) && pregap) {
//if (start == 0) {
// standard pregap, because we have a track
marker at the beginning
output += " PREGAP 00:02:00\n";
@@ -920,17 +928,15 @@
start += length;
// check if the second marker is of type "Endmarker"
- if ((endmarker->get_type() == Marker::ENDMARKER) ||
(endmarker->get_type() == Marker::TEMP_ENDMARKER)) {
+ if (endmarker->get_type() == Marker::ENDMARKER) {
break;
}
}
//Â delete all temporary markers
- foreach(Marker* marker, mlist) {
- if ((marker->get_type() == Marker::TEMP_CDTRACK) ||
(marker->get_type() == Marker::TEMP_ENDMARKER)) {
+ foreach(Marker* marker, tempmarkers) {
delete marker;
}
- }
return output;
}
Index: src/core/TimeLine.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/TimeLine.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- src/core/TimeLine.cpp 22 Nov 2007 22:01:05 -0000 1.12
+++ src/core/TimeLine.cpp 23 Nov 2007 14:21:08 -0000 1.13
@@ -25,8 +25,11 @@
#include "Marker.h"
#include <AddRemove.h>
#include "AudioDevice.h"
-#include <QMultiMap>
+static bool smallerMarker(const Marker* left, const Marker* right )
+{
+ return left->get_when() < right->get_when();
+}
TimeLine::TimeLine(Song * song)
: ContextItem(song)
@@ -57,16 +60,20 @@
while (!markerNode.isNull()) {
Marker* marker = new Marker(this, markerNode);
- m_markers.insertMulti(marker->get_when(), marker);
- connect(marker, SIGNAL(wasDragged(Marker*)), this,
SLOT(marker_dragged(Marker*)));
+ connect(marker, SIGNAL(positionChanged(Snappable*)), this,
SLOT(marker_position_changed(Snappable*)));
+ m_markers.append(marker);
markerNode = markerNode.nextSibling();
}
+ qSort(m_markers.begin(), m_markers.end(), smallerMarker);
+
return 1;
}
Command * TimeLine::add_marker(Marker* marker, bool historable)
{
+ connect(marker, SIGNAL(positionChanged(Snappable*)), this,
SLOT(marker_position_changed(Snappable*)));
+
AddRemove* cmd;
cmd = new AddRemove(this, marker, historable, m_song,
"private_add_marker(Marker*)", "markerAdded(Marker*)",
@@ -101,25 +108,17 @@
void TimeLine::private_add_marker(Marker * marker)
{
- m_markers.insertMulti(marker->get_when(), marker);
- connect(marker, SIGNAL(wasDragged(Marker*)), this,
SLOT(marker_dragged(Marker*)));
+ m_markers.append(marker);
+ qSort(m_markers.begin(), m_markers.end(), smallerMarker);
}
void TimeLine::private_remove_marker(Marker * marker)
{
- QMultiMap<TimeRef, Marker*>::iterator i = QMultiMap<TimeRef,
Marker*>(m_markers).find(marker->get_when(), marker);
- m_markers.erase(i);
+ m_markers.removeAll(marker);
}
Marker * TimeLine::get_marker(qint64 id)
{
- // What about using a QHash instead of QList for storing our markers ?
- // Then this function would be as simple as return m_markers.value(id);
- // And most likely faster too :-)
- // On the other hand, QList concumes less memory, and when marker count
- // keeps below a certain value (< 100 or so), it perhaps doesn't make
much sense
- // The get_state() would use the foreach macro, as used below, to make
things real easy ;-)
-
foreach(Marker* marker, m_markers) {
if (marker->get_id() == id) {
return marker;
@@ -143,18 +142,8 @@
bool TimeLine::get_start_location(TimeRef & location)
{
- TimeRef result(LONG_LONG_MAX);
-
- foreach(Marker* marker, m_markers) {
- if ( ! (marker->get_type() == Marker::ENDMARKER) ) {
- if (marker->get_when() < result) {
- result = marker->get_when();
- }
- }
- }
-
- if (result != LONG_LONG_MAX) {
- location = result;
+ if (m_markers.size() > 0) {
+ location = m_markers.first()->get_when();
return true;
}
@@ -173,8 +162,9 @@
return false;
}
-void TimeLine::marker_dragged(Marker *marker)
+void TimeLine::marker_position_changed(Snappable* snap)
{
- emit markerDragged(marker);
+ qSort(m_markers.begin(), m_markers.end(), smallerMarker);
+ emit markerPositionChanged((Marker*)snap);
}
Index: src/core/TimeLine.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/TimeLine.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/core/TimeLine.h 22 Nov 2007 22:01:05 -0000 1.10
+++ src/core/TimeLine.h 23 Nov 2007 14:21:08 -0000 1.11
@@ -24,11 +24,12 @@
#include "ContextItem.h"
#include <QDomNode>
+#include <QList>
#include "defines.h"
-#include <QMap>
class Song;
class Marker;
+class Snappable;
class Command;
class TimeLine : public ContextItem
@@ -41,7 +42,7 @@
QDomNode get_state(QDomDocument doc);
int set_state(const QDomNode& node);
- QMap<TimeRef, Marker*> get_markers() const {return m_markers;}
+ QList<Marker*> get_markers() const {return m_markers;}
Song *get_song() const {return m_song;}
Marker* get_marker(qint64 id);
@@ -54,17 +55,17 @@
private:
Song* m_song;
- QMap<TimeRef, Marker*> m_markers;
+ QList<Marker*> m_markers;
private slots:
void private_add_marker(Marker* marker);
void private_remove_marker(Marker* marker);
- void marker_dragged(Marker* marker);
+ void marker_position_changed(Snappable* snap);
signals:
void markerAdded(Marker*);
void markerRemoved(Marker*);
- void markerDragged(Marker*);
+ void markerPositionChanged(Marker*);
};
#endif
Index: src/traverso/dialogs/MarkerDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/MarkerDialog.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- src/traverso/dialogs/MarkerDialog.cpp 22 Nov 2007 22:01:05 -0000
1.18
+++ src/traverso/dialogs/MarkerDialog.cpp 23 Nov 2007 14:21:08 -0000
1.19
@@ -37,7 +37,7 @@
#include <QFileDialog>
#include <QDateTime>
#include <AddRemove.h>
-#include <QMap>
+#include "Information.h"
MarkerDialog::MarkerDialog(QWidget * parent)
: QDialog(parent)
@@ -115,7 +115,7 @@
comboBoxDisplaySong->addItem(m_songlist.at(i)->get_title());
connect(m_songlist.at(i)->get_timeline(),
SIGNAL(markerAdded(Marker*)), this, SLOT(update_marker_treeview()));
connect(m_songlist.at(i)->get_timeline(),
SIGNAL(markerRemoved(Marker*)), this, SLOT(update_marker_treeview()));
- connect(m_songlist.at(i)->get_timeline(),
SIGNAL(markerDragged(Marker*)), this, SLOT(update_marker_treeview()));
+ connect(m_songlist.at(i)->get_timeline(),
SIGNAL(markerPositionChanged(Marker*)), this, SLOT(update_marker_treeview()));
}
// Fill dialog with marker stuff....
@@ -481,6 +481,11 @@
return;
}
+ if (m_marker->get_type() == Marker::ENDMARKER) {
+ info().information(tr("It's not possible to remove the
endmarker!!"));
+ return;
+ }
+
Song *song = m_songlist.at(comboBoxDisplaySong->currentIndex());
TimeLine* tl = song->get_timeline();
Index: src/traverso/songcanvas/MarkerView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/MarkerView.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- src/traverso/songcanvas/MarkerView.cpp 5 Nov 2007 15:49:32 -0000
1.25
+++ src/traverso/songcanvas/MarkerView.cpp 23 Nov 2007 14:21:08 -0000
1.26
@@ -121,7 +121,11 @@
void MarkerView::load_theme_data()
{
+ if (m_marker->get_type() == Marker::ENDMARKER) {
+ m_fillColor = themer()->get_color("Marker:end");
+ } else {
m_fillColor = themer()->get_color("Marker:default");
+ }
calculate_bounding_rect();
}
@@ -130,10 +134,18 @@
m_active = b;
if (b) {
+ if (m_marker->get_type() == Marker::ENDMARKER) {
+ m_fillColor = themer()->get_color("Marker:blinkend");
+ } else {
m_fillColor = themer()->get_color("Marker:blink");
+ }
m_line->set_color(QColor(0, 0, 0, 140));
} else {
+ if (m_marker->get_type() == Marker::ENDMARKER) {
+ m_fillColor = themer()->get_color("Marker:end");
+ } else {
m_fillColor = themer()->get_color("Marker:default");
+ }
m_line->set_color(QColor(0, 0, 0, 45));
}
Index: src/traverso/songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- src/traverso/songcanvas/TimeLineView.cpp 22 Nov 2007 22:01:05 -0000
1.55
+++ src/traverso/songcanvas/TimeLineView.cpp 23 Nov 2007 14:21:08 -0000
1.56
@@ -39,8 +39,8 @@
#include <defines.h>
#include <AddRemove.h>
#include <CommandGroup.h>
-#include <InputEngine.h>
-#include "AudioDevice.h"
+#include "Information.h"
+#include "InputEngine.h"
#include <QFont>
#include <QDebug>
@@ -83,13 +83,13 @@
d->view->get_songview()->start_shuttle(false);
d->view->set_dragging(false);
delete d;
- return do_action();
+
+ return 1;
}
int DragMarker::do_action()
{
m_marker->set_when(m_newWhen);
- m_marker->was_updated();
return 1;
}
@@ -378,6 +378,10 @@
{
if (m_blinkingMarker) {
Marker* marker = m_blinkingMarker->get_marker();
+ if (marker->get_type() == Marker::ENDMARKER) {
+ info().information(tr("It's not possible to remove the
endmarker!!"));
+ return ie().failure();
+ }
return m_timeline->remove_marker(marker);
}
@@ -472,11 +476,9 @@
Command * TimeLineView::clear_markers()
{
- QMap<TimeRef, Marker*> lst = m_timeline->get_markers();
-
CommandGroup* group = new CommandGroup(m_timeline, tr("Clear Markers"));
- foreach(Marker *m, lst) {
+ foreach(Marker *m, m_timeline->get_markers()) {
group->add_command(m_timeline->remove_marker(m));
}
- [Traverso-commit] traverso resources/themes/default/traversotheme...,
Remon Sijrier <=