00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <kdebug.h>
00019 #include "commandentry.h"
00020 #include "commandlist.h"
00021
00022 CommandList::CommandList()
00023 {
00024 setAutoDelete (true);
00025 }
00026
00027 CommandList::~CommandList()
00028 {
00029 }
00030
00031 void CommandList::setCombo (QComboBox* combo, int nIndex)
00032 {
00033 combo->clear ();
00034 for (CommandEntry* pElem = first(); pElem; pElem = next())
00035 {
00036 combo->insertItem (pElem->m_name);
00037 }
00038 if (nIndex >= 0)
00039 {
00040 at (nIndex);
00041 combo->setCurrentItem (nIndex);
00042 }
00043 }
00044
00045 CommandList& CommandList::operator = (CommandList& list)
00046 {
00047 clear ();
00048 int nIndex = list.at ();
00049 for (CommandEntry* item = list.first (); item; item = list.next ())
00050 {
00051 append (new CommandEntry (item));
00052 }
00053 at (nIndex);
00054 return *this;
00055 }
00056
00057 bool CommandList::exec (unsigned int id, ConfigElem* pelem, const char* header, const char* body)
00058 {
00059 bool result = false;
00060 CommandEntry* test = new CommandEntry (NULL, NULL, id, true);
00061 int pos = find (test);
00062 if (pos >= 0)
00063 {
00064 result = at (pos)->exec (pelem, header, body);
00065 }
00066 else
00067 kdError () << "No ID " << id << " found in commandlist." << endl;
00068 delete test;
00069 return result;
00070 }
00071
00072 bool CommandList::exec (unsigned int pos, ConfigElem* pelem)
00073 {
00074
00075 if (pos < count ())
00076 return at (pos)->exec (pelem);
00077 else
00078 return false;
00079 }
00080
00081 int CommandList::compareItems (QCollection::Item item1, QCollection::Item item2 )
00082 {
00083 CommandEntry* entry1 = (CommandEntry*) item1;
00084 CommandEntry* entry2 = (CommandEntry*) item2;
00085 if (entry1->m_id > entry2->m_id)
00086 return 1;
00087 else if (entry1->m_id == entry2->m_id)
00088 return 0;
00089 else return -1;
00090 }
00091
00092 QCollection::Item CommandList::newItem (QCollection::Item d)
00093 {
00094 return new CommandEntry ((CommandEntry*)d);
00095 }
00096
00097 void CommandList::readOptions (KConfig* config)
00098 {
00099 config->setGroup ("usercommands");
00100 bool goon = true;
00101 int i = 0;
00102 while (goon)
00103 {
00104 QString cmd (config->readEntry (QString ("cmd%1").arg(i)));
00105 if (!cmd.isEmpty ())
00106 {
00107 QString path = config->readEntry (QString("path%1").arg(i));
00108 int id = config->readNumEntry (QString("id%1").arg(i));
00109 bool modal = config->readBoolEntry (QString("modal%1").arg(i), true);
00110 append (new CommandEntry (cmd, path, id, modal));
00111 i++;
00112 }
00113 else
00114 goon = false;
00115 }
00116 if (i > 0)
00117 at (0);
00118 }
00119
00120 void CommandList::saveOptions (KConfig* config)
00121 {
00122 kdDebug () << "CommandList::saveOptions" << endl;
00123 config->setGroup ("usercommands");
00124 for (unsigned int i = 0; i < count (); i++)
00125 {
00126 config->writeEntry (QString("cmd%1").arg(i), at(i)->m_name);
00127 config->writeEntry (QString("path%1").arg(i), at(i)->m_path);
00128 config->writeEntry (QString("id%1").arg(i), at(i)->m_id);
00129 config->writeEntry (QString("modal%1").arg(i), at(i)->m_waitForCommand);
00130 }
00131 }