Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

tonleiterdata.cpp

Go to the documentation of this file.
00001 #include "tonleiterdata.h"
00002 using namespace Data;
00003 
00004 /* OPIE */
00005 #include <opie2/odebug.h>
00006 #include <qpe/config.h>
00007 using namespace Opie::Core;
00008 
00009 TonleiterData::TonleiterData(QObject* parent)
00010 :QObject(parent)
00011 {
00012     drawnames=true;
00013     loadData();
00014 }
00015 //****************************************************************************
00016 TonleiterData::~TonleiterData()
00017 {
00018     saveData();
00019 }
00020 //****************************************************************************
00021 void TonleiterData::setCurrentInstrumetID(int id)
00022 {
00023     if(id>=0 && id<noOfInstruments())
00024     {
00025         currentInstrumentID=id;
00026         emit dataChange();
00027     }
00028 }
00029 //****************************************************************************
00030 void TonleiterData::setCurrentScaleID(int id)
00031 {
00032     if(id>=0 && id<noOfScales())
00033     {
00034         currentScaleID=id;
00035         emit dataChange();
00036     }
00037 }
00038 //****************************************************************************
00039 void TonleiterData::setCurrentNote(int id)
00040 {
00041     if(id>=0 && id<12)
00042     {
00043         currentNote=id;
00044         emit dataChange();
00045     }
00046 }
00047 //****************************************************************************
00048 void TonleiterData::setDrawNames(bool dn)
00049 {
00050     drawnames=dn;
00051     emit dataChange();
00052 }
00053 //****************************************************************************
00054 void TonleiterData::loadData()
00055 {
00056     Config load("Tonleiter");
00057     if(!load.isValid())
00058     {
00059         //write some default values
00060         load.setGroup("General");
00061         load.writeEntry("currentInstrumentID",1);
00062         load.writeEntry("currentNote",3);
00063         load.writeEntry("currentScaleID",0);
00064         load.writeEntry("drawnames",1);
00065         load.setGroup("Instrument");
00066         load.writeEntry("Inst0","Thumb6;26;14;19;24;29;34;39;");
00067         load.writeEntry("Inst1","Bass 4;12;19;24;29;34;");
00068         load.writeEntry("noOfInstruments",2);
00069         load.setGroup("Scale");
00070         load.writeEntry("Scale0","ionian;0;2;4;5;7;9;11;");
00071         load.writeEntry("Scale1","aeolian;0;2;3;5;7;8;10;");
00072         load.writeEntry("Scale2","dorian;0;2;3;5;7;9;10;");
00073         load.writeEntry("Scale3","phrygian;0;1;3;5;7;8;10;");
00074         load.writeEntry("Scale4","lydian;0;2;4;6;7;9;11;");
00075         load.writeEntry("Scale5","mixolydian;0;2;4;5;7;9;10;");
00076         load.writeEntry("noOfScales",6);
00077 
00078     }
00079 
00080     load.setGroup("General");
00081     currentNote=load.readNumEntry("currentNote");
00082     drawnames=load.readBoolEntry("drawnames");
00083     currentInstrumentID=load.readNumEntry("currentInstrumentID");
00084     currentScaleID=load.readNumEntry("currentScaleID");
00085 
00086     load.setGroup("Instrument");
00087     int noOfInstr=load.readNumEntry("noOfInstruments",0);
00088     for(int i=0;i<noOfInstr;i++)
00089     {
00090         QStringList instlist=load.readListEntry("Inst"+QString::number(i),';');
00091         QValueList<int> strings;
00092         for(int st=2;st<(int)instlist.count();st++)
00093             strings.append(instlist[st].toInt());
00094         instruments.append(Instrument(instlist[0],instlist[1].toInt(),strings));
00095     }
00096 
00097     load.setGroup("Scale");
00098     int scaleno=load.readNumEntry("noOfScales",0);
00099     for(int s=0;s<scaleno;s++)
00100     {
00101         QStringList scalelist=load.readListEntry("Scale"+QString::number(s),';');
00102         QValueList<int> halftones;
00103         for(int ht=1;ht<(int)scalelist.count();ht++)
00104             halftones.append(scalelist[ht].toInt());
00105         scales.append(Scale(scalelist[0],halftones));
00106     }
00107 
00108 }
00109 //****************************************************************************
00110 void TonleiterData::saveData()
00111 {
00112     Config save("Tonleiter");
00113     save.setGroup("General");
00114     save.writeEntry("currentNote",currentNote);
00115     save.writeEntry("drawnames",drawnames);
00116     save.writeEntry("currentInstrumentID",currentInstrumentID);
00117     save.writeEntry("currentScaleID",currentScaleID);
00118 
00119     save.setGroup("Instrument");
00120     save.writeEntry("noOfInstruments",noOfInstruments());
00121     for(int i=0;i<noOfInstruments();i++)
00122     {
00123         QStringList instlist;
00124         Instrument inst=getInstrument(i);
00125         instlist.append(inst.instName());
00126         instlist.append(QString::number(inst.noOfFrets()));
00127         for(int st=0;st<inst.noOfStrings();st++)
00128             instlist.append(QString::number(inst.string(st)));
00129         save.writeEntry("Inst"+QString::number(i),instlist,';');
00130     }
00131 
00132     save.setGroup("Scale");
00133     save.writeEntry("noOfScales",noOfScales());
00134     for(int s=0;s<noOfScales();s++)
00135     {
00136         QStringList scalelist;
00137         Scale scale=getScale(s);
00138         scalelist.append(scale.scaleName());
00139         for(int ht=0;ht<scale.noOfHaltones();ht++)
00140             scalelist.append(QString::number(scale.getHalfTone(ht)));
00141         save.writeEntry("Scale"+QString::number(s),scalelist,';');
00142     }
00143 }
00144 //****************************************************************************
00145 int TonleiterData::noOfInstruments()
00146 {
00147     return (int)instruments.count();
00148 }
00149 //****************************************************************************
00150 Instrument TonleiterData::getInstrument(int id)
00151 {
00152     if(id>=0 && id<noOfInstruments())
00153         return instruments[id];
00154     else
00155     {
00156         odebug << "undefined insrtument " << id << " of " << instruments.count() << "" << oendl; 
00157         return Instrument();
00158     }
00159 
00160 }
00161 //****************************************************************************
00162 int TonleiterData::getCurrentInstrumentID()
00163 {
00164     return currentInstrumentID;
00165 }
00166 //****************************************************************************
00167 int TonleiterData::noOfScales()
00168 {
00169     return (int)scales.count();
00170 }
00171 //****************************************************************************
00172 Scale TonleiterData::getScale(int id)
00173 {
00174     if(id>=0 && id<noOfScales())
00175         return scales[id];
00176     else
00177     {
00178         odebug << "Undefined scale" << oendl; 
00179         return Scale();
00180     }
00181 }
00182 //****************************************************************************
00183 int TonleiterData::getCurrentScaleID()
00184 {
00185     return currentScaleID;
00186 }
00187 //****************************************************************************
00188 int TonleiterData::getCurrentBaseNote()
00189 {
00190     return currentNote;
00191 }
00192 //****************************************************************************
00193 bool TonleiterData::isDrawNames()
00194 {
00195     return drawnames;
00196 }
00197 //****************************************************************************
00198 //****************************************************************************
00199 

Generated on Sat Nov 5 16:17:35 2005 for OPIE by  doxygen 1.4.2