summaryrefslogtreecommitdiff
path: root/muse2/muse/keyevent.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-04-17 15:11:10 +0000
committerFlorian Jung <flo@windfisch.org>2011-04-17 15:11:10 +0000
commitaab05a914e357938f0ccb3d592186320e0646366 (patch)
treeeab02b40786718aa3c83b5d9361c10a8856d3d44 /muse2/muse/keyevent.cpp
parent7afee6563e1b620f06b567ff19e428c6dd203835 (diff)
changed keymap to my needs, and removed all that ugly pointer
stuff from the keymap (still to do for the other *maps)
Diffstat (limited to 'muse2/muse/keyevent.cpp')
-rw-r--r--muse2/muse/keyevent.cpp66
1 files changed, 27 insertions, 39 deletions
diff --git a/muse2/muse/keyevent.cpp b/muse2/muse/keyevent.cpp
index de872c9c..865aef01 100644
--- a/muse2/muse/keyevent.cpp
+++ b/muse2/muse/keyevent.cpp
@@ -24,9 +24,8 @@ KeyList keymap;
KeyList::KeyList()
{
- _key = 0;
- insert(std::pair<const unsigned, KeyEvent*> (MAX_TICK+1, new KeyEvent(_key, 0)));
-// _keySN = 1;
+ _key = KEY_C;
+ insert(std::pair<const unsigned, KeyEvent> (MAX_TICK+1, KeyEvent(_key, 0)));
useList = true;
}
@@ -34,20 +33,20 @@ KeyList::KeyList()
// add
//---------------------------------------------------------
-void KeyList::add(unsigned tick, int key)
+void KeyList::add(unsigned tick, key_enum key)
{
if (tick > MAX_TICK)
tick = MAX_TICK;
iKeyEvent e = upper_bound(tick);
- if (tick == e->second->tick)
- e->second->key = key;
+ if (tick == e->second.tick)
+ e->second.key = key;
else {
- KeyEvent* ne = e->second;
- KeyEvent* ev = new KeyEvent(ne->key, ne->tick);
- ne->key = key;
- ne->tick = tick;
- insert(std::pair<const unsigned, KeyEvent*> (tick, ev));
+ KeyEvent& ne = e->second;
+ KeyEvent ev = KeyEvent(ne.key, ne.tick);
+ ne.key = key;
+ ne.tick = tick;
+ insert(std::pair<const unsigned, KeyEvent> (tick, ev));
}
}
@@ -60,7 +59,7 @@ void KeyList::dump() const
printf("\nKeyList:\n");
for (ciKeyEvent i = begin(); i != end(); ++i) {
printf("%6d %06d key %6d\n",
- i->first, i->second->tick, i->second->key);
+ i->first, i->second.tick, i->second.key);
}
}
@@ -71,26 +70,23 @@ void KeyList::dump() const
void KeyList::clear()
{
- for (iKeyEvent i = begin(); i != end(); ++i)
- delete i->second;
KEYLIST::clear();
- insert(std::pair<const unsigned, KeyEvent*> (MAX_TICK+1, new KeyEvent(0, 0)));
-// ++_keySN;
+ insert(std::pair<const unsigned, KeyEvent> (MAX_TICK+1, KeyEvent(_key, 0)));
}
//---------------------------------------------------------
-// key
+// keyAtTick
//---------------------------------------------------------
-int KeyList::key(unsigned tick) const
+key_enum KeyList::keyAtTick(unsigned tick) const
{
if (useList) {
ciKeyEvent i = upper_bound(tick);
if (i == end()) {
printf("no key at tick %d,0x%x\n", tick, tick);
- return 1000;
+ return _key;
}
- return i->second->key;
+ return i->second.key;
}
else
return _key;
@@ -102,14 +98,12 @@ int KeyList::key(unsigned tick) const
void KeyList::del(unsigned tick)
{
-// printf("KeyList::del(%d)\n", tick);
iKeyEvent e = find(tick);
if (e == end()) {
printf("KeyList::del(%d): not found\n", tick);
return;
}
del(e);
-// ++_keySN;
}
void KeyList::del(iKeyEvent e)
@@ -120,21 +114,19 @@ void KeyList::del(iKeyEvent e)
printf("KeyList::del() HALLO\n");
return;
}
- ne->second->key = e->second->key;
- ne->second->tick = e->second->tick;
+ ne->second.key = e->second.key;
+ ne->second.tick = e->second.tick;
erase(e);
-// ++_keySN;
}
//---------------------------------------------------------
// change
//---------------------------------------------------------
-void KeyList::change(unsigned tick, int newkey)
+void KeyList::change(unsigned tick, key_enum newkey)
{
iKeyEvent e = find(tick);
- e->second->key = newkey;
-// ++_keySN;
+ e->second.key = newkey;
}
//---------------------------------------------------------
@@ -156,10 +148,9 @@ void KeyList::change(unsigned tick, int newkey)
// addKey
//---------------------------------------------------------
-void KeyList::addKey(unsigned t, int key)
+void KeyList::addKey(unsigned t, key_enum key)
{
add(t, key);
-// ++_keySN;
}
//---------------------------------------------------------
@@ -169,7 +160,6 @@ void KeyList::addKey(unsigned t, int key)
void KeyList::delKey(unsigned tick)
{
del(tick);
-// ++_keySN;
}
//---------------------------------------------------------
@@ -190,7 +180,6 @@ bool KeyList::setMasterFlag(unsigned /*tick*/, bool val)
{
if (useList != val) {
useList = val;
-// ++_keySN;
return true;
}
return false;
@@ -206,7 +195,7 @@ void KeyList::write(int level, Xml& xml) const
{
xml.put(level++, "<keylist fix=\"%d\">", _key);
for (ciKeyEvent i = begin(); i != end(); ++i)
- i->second->write(level, xml, i->first);
+ i->second.write(level, xml, i->first);
xml.tag(level, "/keylist");
}
@@ -225,23 +214,22 @@ void KeyList::read(Xml& xml)
return;
case Xml::TagStart:
if (tag == "key") {
- KeyEvent* t = new KeyEvent();
- unsigned tick = t->read(xml);
+ KeyEvent t;
+ unsigned tick = t.read(xml);
iKeyEvent pos = find(tick);
if (pos != end())
erase(pos);
- insert(std::pair<const int, KeyEvent*> (tick, t));
+ insert(std::pair<const int, KeyEvent> (tick, t));
}
else
xml.unknown("keyList");
break;
case Xml::Attribut:
if (tag == "fix")
- _key = xml.s2().toInt();
+ _key = key_enum(xml.s2().toInt());
break;
case Xml::TagEnd:
if (tag == "keylist") {
- //++_keySN;
return;
}
default:
@@ -280,7 +268,7 @@ int KeyEvent::read(Xml& xml)
if (tag == "tick")
tick = xml.parseInt();
else if (tag == "val")
- key = xml.parseInt();
+ key = key_enum(xml.parseInt());
else
xml.unknown("KeyEvent");
break;