/* $Id: service.cpp,v 1.2 2003/09/28 18:13:14 dymo Exp $
 * Copyright (C) 2001-2002 by Bernd Gehrmann
 * bernd@kdevelop.org
 * Copyright (C) 2003 Oliver Kellogg
 * okellogg@users.sourceforge.net
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */
#include <qcombobox.h>
#include <qvaluelist.h>

#include <kservice.h>
#include <kdebug.h>

#include "service.h"


void ServiceComboBox::insertStringList(QComboBox *combo, const QValueList<KService::Ptr> &list,
                            QStringList *names, QStringList *execs)
{
    QValueList<KService::Ptr>::ConstIterator it;
    for (it = list.begin(); it != list.end(); ++it) {
        combo->insertItem((*it)->comment());
        (*names) << (*it)->desktopEntryName();
        (*execs) << (*it)->exec();
        kdDebug() << "insertStringList item " << (*it)->name() << "," << (*it)->exec() << endl;
    }
}

QString ServiceComboBox::currentText(QComboBox *combo, const QStringList &names)
{
    if (combo->currentItem() == -1)
        return QString::null;
    return names[combo->currentItem()];
}

void ServiceComboBox::setCurrentText(QComboBox *combo, const QString &str, const QStringList &names)
{
    QStringList::ConstIterator it;
    int i = 0;
    for (it = names.begin(); it != names.end(); ++it) {
        if (*it == str) {
            combo->setCurrentItem(i);
            break;
        }
        ++i;
    }
}

int ServiceComboBox::itemForText(const QString &str, const QStringList &names)
{
    QStringList::ConstIterator it;
    int i = 0;
    for (it = names.begin(); it != names.end(); ++it) {
        if (*it == str) {
            return i;
        }
        ++i;
    }
    return 0;
}

QString ServiceComboBox::defaultCompiler()
{
    KTrader::OfferList offers = KTrader::self()->query("KDevelop/CompilerOptions", "[X-KDevelop-Language] == 'Ada'");
    QValueList<KService::Ptr>::ConstIterator it;
    for (it = offers.begin(); it != offers.end(); ++it) {
        if ((*it)->property("X-KDevelop-Default").toBool()) {
            return (*it)->name();;
        }
    }
    return "";
}
