File indexing completed on 2024-04-28 16:26:33

0001 /********************************************************************************
0002  *   Copyright (C) 2007-2012 by Michel Ludwig (michel.ludwig@kdemail.net)       *
0003  ********************************************************************************/
0004 
0005 /**************************************************************************
0006 *                                                                         *
0007 *   This program is free software; you can redistribute it and/or modify  *
0008 *   it under the terms of the GNU General Public License as published by  *
0009 *   the Free Software Foundation; either version 2 of the License, or     *
0010 *   (at your option) any later version.                                   *
0011 *                                                                         *
0012 ***************************************************************************/
0013 
0014 #include "widgets/quicktoolconfigwidget.h"
0015 #include "kiletoolmanager.h"
0016 #include <KSharedConfig>
0017 
0018 QuickToolConfigWidget::QuickToolConfigWidget(QWidget *parent) : QWidget(parent)
0019 {
0020     setupUi(this);
0021     connect(m_pshbAdd, SIGNAL(clicked()), this, SLOT(add()));
0022     connect(m_pshbRemove, SIGNAL(clicked()), this, SLOT(remove()));
0023     connect(m_pshbUp, SIGNAL(clicked()), this, SLOT(up()));
0024     connect(m_pshbDown, SIGNAL(clicked()), this, SLOT(down()));
0025 }
0026 
0027 QuickToolConfigWidget::~QuickToolConfigWidget()
0028 {
0029 }
0030 
0031 void QuickToolConfigWidget::updateSequence(const QString &sequence)
0032 {
0033     QStringList toollist = KileTool::toolList(KSharedConfig::openConfig().data(), true);
0034     toollist.sort();
0035     m_cbTools->clear();
0036     m_cbTools->addItems(toollist);
0037 
0038     updateConfigs(m_cbTools->currentText());
0039     connect(m_cbTools, SIGNAL(activated(QString)), this, SLOT(updateConfigs(QString)));
0040 
0041     m_sequence = sequence;
0042     QStringList list = sequence.split(',', Qt::SkipEmptyParts);
0043     QString tl, cfg;
0044     m_lstbSeq->clear();
0045     for(QStringList::iterator i = list.begin(); i != list.end(); ++i) {
0046         KileTool::extract(*i, tl, cfg);
0047         if(!cfg.isEmpty()) {
0048             m_lstbSeq->addItem(tl + " (" + cfg + ')');
0049         }
0050         else {
0051             m_lstbSeq->addItem(tl);
0052         }
0053     }
0054 }
0055 
0056 void QuickToolConfigWidget::updateConfigs(const QString &tool)
0057 {
0058     m_cbConfigs->clear();
0059     QString currentConfig = KileTool::configName(tool, KSharedConfig::openConfig().data());
0060     if(!currentConfig.isEmpty()) {
0061         m_currentDefaultConfig = i18n("Current Default (%1)",currentConfig);
0062     }
0063     else {
0064         m_currentDefaultConfig = i18n("Current Default");
0065     }
0066     m_cbConfigs->addItem(m_currentDefaultConfig);
0067     m_cbConfigs->addItems(KileTool::configNames(tool, KSharedConfig::openConfig().data()));
0068 }
0069 
0070 void QuickToolConfigWidget::down()
0071 {
0072     QList<QListWidgetItem*> selectedItems = m_lstbSeq->selectedItems();
0073     if(selectedItems.isEmpty()) {
0074         return;
0075     }
0076     QListWidgetItem *selectedItem = selectedItems.first();
0077     int row = m_lstbSeq->row(selectedItem);
0078     if(row < m_lstbSeq->count() - 1) {
0079         QListWidgetItem *nextItem = m_lstbSeq->item(row + 1);
0080         QString text = selectedItem->text();
0081         selectedItem->setText(nextItem->text());
0082         nextItem->setText(text);
0083         nextItem->setSelected(true);
0084         changed();
0085     }
0086 }
0087 
0088 void QuickToolConfigWidget::up()
0089 {
0090     QList<QListWidgetItem*> selectedItems = m_lstbSeq->selectedItems();
0091     if(selectedItems.isEmpty()) {
0092         return;
0093     }
0094     QListWidgetItem *selectedItem = selectedItems.first();
0095     int row = m_lstbSeq->row(selectedItem);
0096     if(row > 0) {
0097         QListWidgetItem *previousItem = m_lstbSeq->item(row - 1);
0098         QString text = selectedItem->text();
0099         selectedItem->setText(previousItem->text());
0100         previousItem->setText(text);
0101         previousItem->setSelected(true);
0102         changed();
0103     }
0104 }
0105 
0106 void QuickToolConfigWidget::remove()
0107 {
0108     QList<QListWidgetItem*> selectedItems = m_lstbSeq->selectedItems();
0109     if(selectedItems.isEmpty()) {
0110         return;
0111     }
0112     QListWidgetItem *selectedItem = selectedItems.first();
0113     delete selectedItem;
0114     changed();
0115 }
0116 
0117 void QuickToolConfigWidget::add()
0118 {
0119     QString entry = m_cbTools->currentText();
0120     if(m_cbConfigs->currentText() != m_currentDefaultConfig) {
0121         entry += " (" + m_cbConfigs->currentText() + ')';
0122     }
0123 
0124     m_lstbSeq->addItem(entry);
0125     changed();
0126 }
0127 
0128 
0129 void QuickToolConfigWidget::changed()
0130 {
0131     QString sequence, tool, cfg;
0132     for(int i = 0; i < m_lstbSeq->count(); ++i) {
0133         KileTool::extract(m_lstbSeq->item(i)->text(), tool, cfg);
0134         sequence += KileTool::format(tool, cfg) + ',';
0135     }
0136     if(sequence.endsWith(',')) {
0137         sequence = sequence.left(sequence.length()-1);
0138     }
0139     m_sequence = sequence;
0140     emit sequenceChanged(m_sequence);
0141 }
0142