• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdenetwork
  • Sitemap
  • Contact Us
 

kget

dlgdirectories.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE project
00002 
00003    Copyright (C) 2007 Urs Wolfer <uwolfer @ kde.org>
00004 
00005    This program is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 */
00010 
00011 #include "dlgdirectories.h"
00012 #include "selectdirectoryitemdelegate.h"
00013 
00014 #include "settings.h"
00015 
00016 #include <QHeaderView>
00017 
00018 #include <KMessageBox>
00019 
00020 DlgDirectories::DlgDirectories(QWidget *parent)
00021     : QWidget(parent)
00022 {
00023     setupUi(this);
00024     addButton->setIcon(KIcon("list-add"));
00025     removeButton->setIcon(KIcon("list-remove"));
00026     changeButton->setIcon(KIcon("edit-rename"));
00027 
00028     defaultFolderRequester->setMode(KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly);
00029 
00030     folderForExtensionList->verticalHeader()->setVisible(false);
00031     folderForExtensionList->horizontalHeader()->setClickable(false);
00032     folderForExtensionList->horizontalHeader()->setMovable(false);
00033     folderForExtensionList->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
00034     folderForExtensionList->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
00035     folderForExtensionList->setItemDelegateForColumn(1, new SelectDirectoryItemDelegate(parent));
00036 
00037 
00038     connect(addButton, SIGNAL(clicked()), SLOT(addButtonClicked()));
00039     connect(removeButton, SIGNAL(clicked()), SLOT(removeButtonClicked()));
00040     connect(changeButton, SIGNAL(clicked()), SLOT(changeButtonClicked()));
00041     connect(kcfg_EnableExceptions, SIGNAL(toggled(bool)), defaultFolderGroupBox, SLOT(setEnabled(bool)));
00042     connect(kcfg_UseDefaultDirectory, SIGNAL(toggled(bool)), defaultFolderRequester, SLOT(setEnabled(bool)));
00043     connect(folderForExtensionList->selectionModel(),
00044                         SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection&)),
00045                         SLOT(listItemClicked(const QItemSelection &, const QItemSelection&)));
00046     connect(folderForExtensionList, SIGNAL(cellChanged(int, int)), SLOT(slotExtensionDataChanged(int, int)));
00047 
00048     readConfig();
00049 }
00050 
00051 DlgDirectories::~DlgDirectories()
00052 {
00053 }
00054 
00055 void DlgDirectories::readConfig()
00056 {
00057     QStringList list = Settings::extensionsFolderList();
00058     QStringList::Iterator it = list.begin();
00059     QStringList::Iterator end = list.end();
00060     while (it != end) {
00061         // odd list items are regular expressions for extensions
00062         QString rexp = *it;
00063         ++it;
00064         QString path = *it;
00065         ++it;
00066         addFolderForExtensionItem(rexp, path);
00067     }
00068 
00069     if (Settings::useDefaultDirectory())
00070         kcfg_UseDefaultDirectory->click();
00071     else
00072         askRadioButton->click();
00073 
00074     defaultFolderRequester->setUrl(Settings::defaultDirectory());
00075     connect(defaultFolderRequester, SIGNAL(textChanged(QString)), SLOT(saveSettings()));
00076 }
00077 
00078 void DlgDirectories::saveSettings()
00079 {
00080     Settings::setDefaultDirectory(defaultFolderRequester->url().url());
00081 
00082     QStringList list;
00083 
00084     for(int row=0;row<folderForExtensionList->rowCount();row++) {
00085         QString extension = folderForExtensionList->item(row, 0)->text();
00086         QString path = folderForExtensionList->item(row, 1)->text();
00087 
00088         if (!extension.isEmpty() && !path.isEmpty()) {
00089             list.append(extension);
00090             list.append(path);
00091         }
00092     }
00093 
00094     Settings::setExtensionsFolderList(list);
00095     Settings::self()->writeConfig();
00096 }
00097 
00098 void DlgDirectories::addButtonClicked()
00099 {
00100     int newRow = folderForExtensionList->rowCount();
00101     folderForExtensionList->setRowCount(newRow + 1);
00102 
00103     folderForExtensionList->setItem(newRow, 0, new QTableWidgetItem("*.*"));
00104     folderForExtensionList->setItem(newRow, 1, new QTableWidgetItem(""));
00105 
00106     folderForExtensionList->edit(folderForExtensionList->model()->index(newRow, 0));
00107     folderForExtensionList->selectRow(newRow);
00108 }
00109 
00110 void DlgDirectories::removeButtonClicked()
00111 {
00112     int row = folderForExtensionList->currentRow();
00113     folderForExtensionList->removeRow(row);
00114     saveSettings();
00115 
00116     folderForExtensionList->clearSelection();
00117     changeButton->setEnabled(false);
00118     removeButton->setEnabled(false);
00119 }
00120 
00121 void DlgDirectories::changeButtonClicked()
00122 {
00123     int row = folderForExtensionList->currentRow();
00124     int column = folderForExtensionList->currentColumn();
00125     folderForExtensionList->edit(folderForExtensionList->model()->index(row, column));
00126 }
00127 
00128 void DlgDirectories::listItemClicked(const QItemSelection &selected, const QItemSelection &deselected)
00129 {
00130     Q_UNUSED(selected)
00131     Q_UNUSED(deselected)
00132 
00133     changeButton->setEnabled(true);
00134     removeButton->setEnabled(true);
00135 }
00136 
00137 void DlgDirectories::addFolderForExtensionItem(const QString &extension, const QString &folder)
00138 {
00139     if (extension.isEmpty() || folder.isEmpty()) {
00140         KMessageBox::error(this, i18n("Folder and extension can not be empty."), i18n("Error"));
00141         return;
00142     }
00143 
00144     int newRow = folderForExtensionList->rowCount();
00145     folderForExtensionList->setRowCount(newRow + 1);
00146 
00147     folderForExtensionList->setItem(newRow, 0, new QTableWidgetItem(extension));
00148     folderForExtensionList->setItem(newRow, 1, new QTableWidgetItem(folder));
00149 
00150     folderForExtensionList->clearSelection();
00151     folderForExtensionList->sortItems(0, Qt::AscendingOrder);
00152 
00153     changeButton->setEnabled(false);
00154     removeButton->setEnabled(false);
00155 }
00156 
00157 void DlgDirectories::slotExtensionDataChanged(int row, int column)
00158 {
00159     Q_UNUSED(column)
00160 
00161     if(folderForExtensionList->item(row, 0) && folderForExtensionList->item(row, 1)) {
00162         // we check if the extension isn't empty and the path is correct before call saveSettings
00163         QString extension = folderForExtensionList->item(row, 0)->text();
00164         QString path = folderForExtensionList->item(row, 1)->text();
00165 
00166         if (!extension.isEmpty() && !path.isEmpty()) {
00167             saveSettings();
00168         }
00169     }
00170 }
00171 
00172 #include "dlgdirectories.moc"

kget

Skip menu "kget"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

kdenetwork

Skip menu "kdenetwork"
  • kget
  • kopete
  •   kopete
  •   libkopete
  •       libpapillon
  • krfb
Generated for kdenetwork by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal