toolsconfig.cpp
Go to the documentation of this file.00001 #include "toolsconfig.h"
00002
00003 #include <qapplication.h>
00004 #include <qlabel.h>
00005 #include <qlayout.h>
00006 #include <qlistbox.h>
00007 #include <qpushbutton.h>
00008 #include <qheader.h>
00009
00010 #include <kapplication.h>
00011 #include <kdesktopfile.h>
00012 #include <kdialog.h>
00013 #include <kiconloader.h>
00014 #include <klocale.h>
00015
00016 #include "tools_part.h"
00017 #include "kapplicationtree.h"
00018
00019
00020 ToolsConfig::ToolsConfig(QWidget *parent, const char *name)
00021 : QWidget(parent, name), _tree(0)
00022 {
00023 _entries.setAutoDelete(true);
00024 }
00025
00026
00027 void ToolsConfig::showEvent(QShowEvent *e)
00028 {
00029 QWidget::showEvent(e);
00030
00031 if (!_tree)
00032 {
00033 QApplication::setOverrideCursor(Qt::waitCursor);
00034
00035 QHBoxLayout *hbox = new QHBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint());
00036
00037 QVBoxLayout *vbox = new QVBoxLayout(hbox);
00038 _tree = new KDevApplicationTree(this);
00039 _tree->header()->hide();
00040 QLabel *l = new QLabel(_tree, i18n("&Applications:"), this);
00041 l->show();
00042 _tree->show();
00043
00044 vbox->addWidget(l);
00045 vbox->addWidget(_tree);
00046
00047 vbox = new QVBoxLayout(hbox);
00048
00049 _toList = new QPushButton(QApplication::reverseLayout() ? "<<" : ">>", this);
00050 _toList->show();
00051 vbox->addWidget(_toList);
00052
00053 connect(_toList, SIGNAL(clicked()), this, SLOT(toList()));
00054
00055 _toTree = new QPushButton(QApplication::reverseLayout() ? ">>" : "<<", this);
00056 _toTree->show();
00057 vbox->addWidget(_toTree);
00058
00059 connect(_toTree, SIGNAL(clicked()), this, SLOT(toTree()));
00060
00061 vbox = new QVBoxLayout(hbox);
00062 _list = new QListBox(this);
00063 l = new QLabel(_list, i18n("&Tools menu:"), this);
00064 l->show();
00065 _list->show();
00066 vbox->addWidget(l);
00067 vbox->addWidget(_list);
00068
00069 QApplication::restoreOverrideCursor();
00070 }
00071
00072 fill();
00073 checkButtons();
00074
00075 connect(_tree, SIGNAL(selectionChanged()), this, SLOT(checkButtons()));
00076 connect(_list, SIGNAL(selectionChanged()), this, SLOT(checkButtons()));
00077 }
00078
00079
00080 void ToolsConfig::checkButtons()
00081 {
00082 _toList->setEnabled(_tree->selectedItem() && !_tree->selectedItem()->firstChild());
00083 _toTree->setEnabled(_list->currentItem() >= 0 && _list->currentItem() < (int)_list->count());
00084 }
00085
00086
00087 void ToolsConfig::fill()
00088 {
00089 _entries.clear();
00090
00091 KConfig *config = ToolsFactory::instance()->config();
00092 config->setGroup("Tools");
00093
00094 QStringList list = config->readListEntry("Tools");
00095
00096 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it)
00097 add(*it);
00098 }
00099
00100
00101 void ToolsConfig::add(const QString &desktopFile)
00102 {
00103 KDesktopFile df(desktopFile, true);
00104 if (df.readName().isEmpty())
00105 return;
00106
00107 Entry *entry = new Entry;
00108
00109 if (!df.readIcon().isEmpty())
00110 entry->icon = BarIcon(df.readIcon());
00111 entry->name = df.readName();
00112 entry->desktopFile = desktopFile;
00113
00114 _entries.append(entry);
00115
00116 updateList();
00117
00118 checkButtons();
00119 }
00120
00121
00122 void ToolsConfig::toList()
00123 {
00124 KDevAppTreeListItem *item = dynamic_cast<KDevAppTreeListItem*>(_tree->selectedItem());
00125 if (item && !item->desktopEntryPath().isEmpty())
00126 add(item->desktopEntryPath());
00127 checkButtons();
00128 }
00129
00130
00131 void ToolsConfig::toTree()
00132 {
00133 _entries.remove(_list->currentItem());
00134 updateList();
00135 checkButtons();
00136 }
00137
00138
00139 void ToolsConfig::accept()
00140 {
00141 KConfig *config = ToolsFactory::instance()->config();
00142 config->setGroup("Tools");
00143
00144 QStringList l;
00145 QPtrListIterator<Entry> it(_entries);
00146 for ( ; it.current(); ++it)
00147 l.append(it.current()->desktopFile);
00148
00149 config->writeEntry("Tools", l);
00150 config->sync();
00151 }
00152
00153
00154 void ToolsConfig::updateList()
00155 {
00156 _list->setUpdatesEnabled(false);
00157
00158 _list->clear();
00159
00160 QPtrListIterator<Entry> it(_entries);
00161 for ( ; it.current(); ++it)
00162 _list->insertItem(it.current()->icon, it.current()->name);
00163
00164 _list->setUpdatesEnabled(true);
00165 _list->repaint();
00166 }
00167
00168
00169 #include "toolsconfig.moc"
This file is part of the documentation for KDevelop Version 3.1.2.