Resize column, otherwise when text is translated it can be cut
[kdenetwork.git] / kget / conf / dlgdirectories.cpp
blobf53c3c689bd9142c75d3c181f47cfdb7e1d85e18
1 /* This file is part of the KDE project
3 Copyright (C) 2007 Urs Wolfer <uwolfer @ kde.org>
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9 */
11 #include "dlgdirectories.h"
12 #include "selectdirectoryitemdelegate.h"
14 #include "settings.h"
16 #include <QHeaderView>
18 #include <KMessageBox>
20 DlgDirectories::DlgDirectories(QWidget *parent)
21 : QWidget(parent)
23 setupUi(this);
24 addButton->setIcon(KIcon("list-add"));
25 removeButton->setIcon(KIcon("list-remove"));
26 changeButton->setIcon(KIcon("edit-rename"));
28 defaultFolderRequester->setMode(KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly);
30 folderForExtensionList->verticalHeader()->setVisible(false);
31 folderForExtensionList->horizontalHeader()->setClickable(false);
32 folderForExtensionList->horizontalHeader()->setMovable(false);
33 folderForExtensionList->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
34 folderForExtensionList->resizeColumnToContents (0 );
35 folderForExtensionList->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
36 folderForExtensionList->setItemDelegateForColumn(1, new SelectDirectoryItemDelegate(parent));
39 connect(addButton, SIGNAL(clicked()), SLOT(addButtonClicked()));
40 connect(removeButton, SIGNAL(clicked()), SLOT(removeButtonClicked()));
41 connect(changeButton, SIGNAL(clicked()), SLOT(changeButtonClicked()));
42 connect(kcfg_EnableExceptions, SIGNAL(toggled(bool)), defaultFolderGroupBox, SLOT(setEnabled(bool)));
43 connect(kcfg_UseDefaultDirectory, SIGNAL(toggled(bool)), defaultFolderRequester, SLOT(setEnabled(bool)));
44 connect(folderForExtensionList->selectionModel(),
45 SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection&)),
46 SLOT(listItemClicked(const QItemSelection &, const QItemSelection&)));
47 connect(folderForExtensionList, SIGNAL(cellChanged(int, int)), SLOT(slotExtensionDataChanged(int, int)));
49 readConfig();
52 DlgDirectories::~DlgDirectories()
56 void DlgDirectories::readConfig()
58 QStringList list = Settings::extensionsFolderList();
59 QStringList::Iterator it = list.begin();
60 QStringList::Iterator end = list.end();
61 while (it != end) {
62 // odd list items are regular expressions for extensions
63 QString rexp = *it;
64 ++it;
65 QString path = *it;
66 ++it;
67 addFolderForExtensionItem(rexp, path);
70 if (Settings::useDefaultDirectory())
71 kcfg_UseDefaultDirectory->click();
72 else
73 askRadioButton->click();
75 defaultFolderRequester->setUrl(Settings::defaultDirectory());
76 connect(defaultFolderRequester, SIGNAL(textChanged(QString)), SLOT(saveSettings()));
79 void DlgDirectories::saveSettings()
81 Settings::setDefaultDirectory(defaultFolderRequester->url().url());
83 QStringList list;
85 for(int row=0;row<folderForExtensionList->rowCount();row++) {
86 QString extension = folderForExtensionList->item(row, 0)->text();
87 QString path = folderForExtensionList->item(row, 1)->text();
89 if (!extension.isEmpty() && !path.isEmpty()) {
90 list.append(extension);
91 list.append(path);
95 Settings::setExtensionsFolderList(list);
96 Settings::self()->writeConfig();
99 void DlgDirectories::addButtonClicked()
101 int newRow = folderForExtensionList->rowCount();
102 folderForExtensionList->setRowCount(newRow + 1);
104 folderForExtensionList->setItem(newRow, 0, new QTableWidgetItem("*.*"));
105 folderForExtensionList->setItem(newRow, 1, new QTableWidgetItem(""));
107 folderForExtensionList->edit(folderForExtensionList->model()->index(newRow, 0));
108 folderForExtensionList->selectRow(newRow);
111 void DlgDirectories::removeButtonClicked()
113 int row = folderForExtensionList->currentRow();
114 folderForExtensionList->removeRow(row);
115 saveSettings();
117 folderForExtensionList->clearSelection();
118 changeButton->setEnabled(false);
119 removeButton->setEnabled(false);
122 void DlgDirectories::changeButtonClicked()
124 int row = folderForExtensionList->currentRow();
125 int column = folderForExtensionList->currentColumn();
126 folderForExtensionList->edit(folderForExtensionList->model()->index(row, column));
129 void DlgDirectories::listItemClicked(const QItemSelection &selected, const QItemSelection &deselected)
131 Q_UNUSED(selected)
132 Q_UNUSED(deselected)
134 changeButton->setEnabled(true);
135 removeButton->setEnabled(true);
138 void DlgDirectories::addFolderForExtensionItem(const QString &extension, const QString &folder)
140 if (extension.isEmpty() || folder.isEmpty()) {
141 KMessageBox::error(this, i18n("Folder and extension can not be empty."), i18n("Error"));
142 return;
145 int newRow = folderForExtensionList->rowCount();
146 folderForExtensionList->setRowCount(newRow + 1);
148 folderForExtensionList->setItem(newRow, 0, new QTableWidgetItem(extension));
149 folderForExtensionList->setItem(newRow, 1, new QTableWidgetItem(folder));
151 folderForExtensionList->clearSelection();
152 folderForExtensionList->sortItems(0, Qt::AscendingOrder);
154 changeButton->setEnabled(false);
155 removeButton->setEnabled(false);
158 void DlgDirectories::slotExtensionDataChanged(int row, int column)
160 Q_UNUSED(column)
162 if(folderForExtensionList->item(row, 0) && folderForExtensionList->item(row, 1)) {
163 // we check if the extension isn't empty and the path is correct before call saveSettings
164 QString extension = folderForExtensionList->item(row, 0)->text();
165 QString path = folderForExtensionList->item(row, 1)->text();
167 if (!extension.isEmpty() && !path.isEmpty()) {
168 saveSettings();
173 #include "dlgdirectories.moc"