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