• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeutils API Reference
  • KDE Home
  • Contact Us
 

kdf

  • sources
  • kde-4.12
  • kdeutils
  • kdf
mntconfig.cpp
Go to the documentation of this file.
1 /*
2  * mntconfig.cpp
3  *
4  * Copyright (c) 1999 Michael Kropfberger <michael.kropfberger@gmx.net>
5  * 2009 Dario Andres Rodriguez <andresbajotierra@gmail.com>
6 
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  */
21 
22 //
23 // 1999-11-29 Espen Sand
24 // Converted to QLayout and QListView + cleanups
25 //
26 
27 #include "mntconfig.h"
28 
29 #include <QtGui/QGroupBox>
30 #include <QtGui/QLabel>
31 #include <QtGui/QPixmap>
32 #include <QtGui/QHBoxLayout>
33 #include <QtGui/QFormLayout>
34 #include <QtGui/QCloseEvent>
35 #include <QtGui/QTreeWidget>
36 #include <QtGui/QTreeWidgetItem>
37 
38 #include <kfiledialog.h>
39 #include <kicondialog.h>
40 #include <kmessagebox.h>
41 #include <kglobal.h>
42 #include <kdebug.h>
43 #include <klocale.h>
44 #include <klineedit.h>
45 #include <kcmodule.h>
46 #include <kconfig.h>
47 #include <kiconloader.h>
48 
49 #ifndef KDE_USE_FINAL
50 static bool GUI;
51 #endif
52 
53 MntConfigWidget::MntConfigWidget(QWidget *parent, bool init)
54  : QWidget(parent)
55 {
56  mInitializing = false;
57 
58  GUI = !init;
59  if (GUI)
60  {
61  setupUi(this);
62 
63  //tabList fillup waits until disklist.readDF() is done...
64  mDiskList.readFSTAB();
65  mDiskList.readDF();
66  mInitializing = true;
67  connect( &mDiskList, SIGNAL(readDFDone()), this, SLOT(readDFDone()));
68 
69  connect ( m_listWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)) , this, SLOT(clicked(QTreeWidgetItem*,int)) );
70  m_listWidget->setHeaderLabels( QStringList() << QLatin1String( "" ) << i18n("Device")
71  << i18n("Mount Point") << i18n("Mount Command") << i18n("Unmount Command") );
72  m_listWidget->setColumnWidth( 0, 20 );
73 
74  QString text = QString::fromLatin1("%1: %2 %3: %4").
75  arg(i18n("Device")).
76  arg(i18nc("No device is selected", "None")).
77  arg(i18n("Mount Point")).
78  arg(i18nc("No mount point is selected", "None"));
79 
80  mGroupBox->setEnabled( false );
81  mGroupBox->setTitle(text);
82 
83  connect( mIconLineEdit, SIGNAL(textEdited(QString)),
84  this,SLOT(iconChanged(QString)));
85  connect( mIconLineEdit, SIGNAL(textEdited(QString)),
86  this,SLOT(slotChanged()));
87 
88  mIconButton->setIconType(KIconLoader::Small, KIconLoader::Device);
89  mIconButton->setFixedHeight( mIconButton->sizeHint().height() );
90 
91  connect( mIconButton, SIGNAL(iconChanged(QString)), this, SLOT(iconChangedButton(QString)));
92  connect( mIconButton, SIGNAL(iconChanged(QString)), this, SLOT(slotChanged()));
93 
94  connect( mDefaultIconButton, SIGNAL(clicked()), this, SLOT(iconDefault()) );
95  connect( mDefaultIconButton, SIGNAL(clicked()), this, SLOT(slotChanged()) );
96 
97  connect( mMountLineEdit,SIGNAL(textChanged(QString)),
98  this,SLOT(mntCmdChanged(QString)));
99  connect( mMountLineEdit, SIGNAL(textChanged(QString)),
100  this,SLOT(slotChanged()));
101 
102  connect( mMountButton, SIGNAL(clicked()), this, SLOT(selectMntFile()) );
103 
104  connect( mUmountLineEdit, SIGNAL(textChanged(QString)),
105  this,SLOT(umntCmdChanged(QString)));
106  connect( mUmountLineEdit, SIGNAL(textChanged(QString)),
107  this,SLOT(slotChanged()));
108 
109  connect( mUmountButton,SIGNAL(clicked()),this,SLOT(selectUmntFile()));
110  }
111 
112  loadSettings();
113  if(init)
114  {
115  applySettings();
116  }
117 }
118 
119 
120 MntConfigWidget::~MntConfigWidget( void )
121 {
122  delete m_listWidget;
123 }
124 
125 
126 void MntConfigWidget::readDFDone( void )
127 {
128  mInitializing = false;
129  m_listWidget->clear();
130 
131  QTreeWidgetItem *item = 0;
132 
133  DisksConstIterator itr = mDiskList.disksConstIteratorBegin();
134  DisksConstIterator end = mDiskList.disksConstIteratorEnd();
135  for (; itr != end; ++itr)
136  {
137  DiskEntry * disk = *itr;
138  item = new QTreeWidgetItem( m_listWidget, QStringList() << QString() << disk->deviceName()
139  << disk->mountPoint() << disk->mountCommand() << disk->umountCommand() );
140  item->setIcon( IconCol, SmallIcon( disk->iconName() ) );
141  }
142 
143  /*
144  //Adjust dialog size (?)
145  m_listWidget->resizeColumnToContents( 2 );
146  m_listWidget->resize(m_listWidget->sizeHint());
147  m_listWidget->adjustSize();
148  */
149 
150  loadSettings();
151  applySettings();
152 }
153 
154 
155 void MntConfigWidget::applySettings( void )
156 {
157  mDiskList.applySettings();
158 
159  KConfigGroup config(KGlobal::config(), "MntConfig");
160  if( GUI )
161  {
162  config.writeEntry("Width", width() );
163  config.writeEntry("Height", height() );
164  }
165  config.sync();
166 }
167 
168 
169 void MntConfigWidget::loadSettings( void )
170 {
171  KConfigGroup config = KGlobal::config()->group("MntConfig");
172  if( mInitializing == false && GUI )
173  {
174  if( isTopLevel() )
175  {
176  int w = config.readEntry("Width",this->width() );
177  int h = config.readEntry("Height",this->height() );
178  resize(w,h);
179  }
180 
181  QList<QTreeWidgetItem*> list = m_listWidget->selectedItems();
182  if( list.size() == 1 )
183  clicked( list.at(0), 0 );
184  }
185 }
186 
187 
188 void MntConfigWidget::clicked( QTreeWidgetItem * item , int col )
189 {
190  Q_UNUSED(col);
191 
192  QTreeWidgetItem * header = m_listWidget->headerItem();
193 
194  mGroupBox->setEnabled( true );
195  mGroupBox->setTitle( QString::fromLatin1("%1: %2 %3: %4").
196  arg(header->text( DeviceCol )).
197  arg(item->text( DeviceCol )).
198  arg(header->text( MountPointCol )).
199  arg(item->text( MountPointCol )) );
200 
201 
202  const QIcon icon = item->icon( IconCol );
203  if( !icon.isNull() )
204  mIconButton->setIcon( icon );
205 
206  DiskEntry * disk = selectedDisk( item );
207  if (!disk)
208  return;
209 
210  mIconLineEdit->setText( disk->iconName() );
211 
212  mMountLineEdit->setText( item->text( MountCommandCol ) );
213  mUmountLineEdit->setText( item->text( UmountCommandCol ) );
214 }
215 
216 
217 void MntConfigWidget::iconChangedButton(const QString &iconName)
218 {
219  iconChanged(iconName);
220 }
221 
222 void MntConfigWidget::iconChanged(const QString &iconName)
223 {
224  QList<QTreeWidgetItem*> list = m_listWidget->selectedItems();
225  QTreeWidgetItem * item = list.at(0);
226 
227  DiskEntry * disk = selectedDisk( item );
228  if ( !disk )
229  return;
230 
231  disk->setIconName(iconName);
232  mIconLineEdit->setText(iconName);
233 
234  QPixmap icon = SmallIcon( iconName );
235  item->setIcon( IconCol, icon );
236  mIconButton->setIcon( icon );
237 
238  slotChanged();
239 }
240 
241 void MntConfigWidget::iconDefault()
242 {
243  QList<QTreeWidgetItem*> list = m_listWidget->selectedItems();
244  QTreeWidgetItem * item = list.at(0);
245 
246  DiskEntry * disk = selectedDisk( item );
247  if ( !disk )
248  return;
249 
250  iconChanged(disk->guessIconName());
251 }
252 
253 void MntConfigWidget::selectMntFile()
254 {
255  KUrl url = KFileDialog::getOpenUrl( KUrl(),QLatin1String( "*" ), this );
256 
257  if( url.isEmpty() )
258  return;
259 
260  if( !url.isLocalFile() )
261  {
262  KMessageBox::sorry( 0L, i18n( "Only local files supported." ) );
263  return;
264  }
265 
266  mMountLineEdit->setText( url.path() );
267 }
268 
269 void MntConfigWidget::selectUmntFile()
270 {
271  KUrl url = KFileDialog::getOpenUrl( KUrl(), QLatin1String( "*" ), this );
272 
273  if( url.isEmpty() )
274  return;
275 
276  if( !url.isLocalFile() )
277  {
278  KMessageBox::sorry( 0L, i18n( "Only local files are currently supported." ) );
279  return;
280  }
281 
282  mUmountLineEdit->setText( url.path() );
283 }
284 
285 void MntConfigWidget::mntCmdChanged( const QString &data )
286 {
287 
288  QList<QTreeWidgetItem*> list = m_listWidget->selectedItems();
289  QTreeWidgetItem * item = list.at(0);
290 
291  DiskEntry * disk = selectedDisk( item );
292  if ( !disk )
293  return;
294 
295  disk->setMountCommand( data );
296  item->setText( MountCommandCol , data );
297 
298 }
299 
300 
301 void MntConfigWidget::umntCmdChanged( const QString &data )
302 {
303  QList<QTreeWidgetItem*> list = m_listWidget->selectedItems();
304  QTreeWidgetItem * item = list.at(0);
305 
306  DiskEntry * disk = selectedDisk( item );
307  if ( !disk )
308  return;
309 
310  disk->setUmountCommand( data );
311  item->setText( UmountCommandCol , data );
312 
313 }
314 
315 DiskEntry * MntConfigWidget::selectedDisk( QTreeWidgetItem * item )
316 {
317  if( item == 0 )
318  {
319  QList<QTreeWidgetItem*> selected = m_listWidget->selectedItems();
320  if ( selected.size() == 1 )
321  item = selected.at(0);
322  else
323  return 0;
324  }
325 
326  DiskEntry * tmpDisk = new DiskEntry(item->text( DeviceCol ));
327  tmpDisk->setMountPoint(item->text( MountPointCol ));
328 
329  int pos = mDiskList.find(tmpDisk);
330 
331  delete tmpDisk;
332 
333  return mDiskList.at(pos);
334 }
335 
336 void MntConfigWidget::closeEvent(QCloseEvent *)
337 {
338 }
339 
340 void MntConfigWidget::slotChanged()
341 {
342  emit configChanged();
343 }
344 
345 #include "mntconfig.moc"
346 
MntConfigWidget::DeviceCol
Definition: mntconfig.h:40
DiskEntry
Definition: disks.h:30
MntConfigWidget::~MntConfigWidget
~MntConfigWidget()
Definition: mntconfig.cpp:120
DiskEntry::iconName
QString iconName()
Definition: disks.cpp:206
DisksConstIterator
QList< DiskEntry * >::const_iterator DisksConstIterator
Definition: disklist.h:53
MntConfigWidget::configChanged
void configChanged()
DiskEntry::mountCommand
QString mountCommand() const
sets the used mountCommand for the actual DiskEntry.
Definition: disks.h:57
DiskList::disksConstIteratorBegin
DisksConstIterator disksConstIteratorBegin()
Definition: disklist.h:75
DiskEntry::setIconName
void setIconName(const QString &iconName)
Definition: disks.cpp:187
DiskList::at
DiskEntry * at(uint index)
Definition: disklist.h:69
DiskEntry::umountCommand
QString umountCommand() const
sets the used umountCommand for the actual DiskEntry.
Definition: disks.h:67
QWidget
MntConfigWidget::MountPointCol
Definition: mntconfig.h:41
MntConfigWidget::slotChanged
void slotChanged()
Definition: mntconfig.cpp:340
DiskEntry::guessIconName
QString guessIconName()
Definition: disks.cpp:215
MntConfigWidget::closeEvent
void closeEvent(QCloseEvent *)
Definition: mntconfig.cpp:336
MntConfigWidget::IconCol
Definition: mntconfig.h:39
DiskList::disksConstIteratorEnd
DisksConstIterator disksConstIteratorEnd()
Definition: disklist.h:76
DiskEntry::setUmountCommand
void setUmountCommand(const QString &umnt)
Definition: disks.cpp:182
MntConfigWidget::MountCommandCol
Definition: mntconfig.h:42
GUI
static bool GUI
Definition: mntconfig.cpp:50
DiskEntry::setMountCommand
void setMountCommand(const QString &mnt)
Definition: disks.cpp:177
mntconfig.h
DiskEntry::mountPoint
QString mountPoint() const
Definition: disks.h:42
MntConfigWidget::applySettings
void applySettings(void)
Definition: mntconfig.cpp:155
DiskList::find
int find(DiskEntry *disk)
Definition: disklist.cpp:476
DiskList::readDF
int readDF()
Definition: disklist.cpp:326
DiskList::applySettings
void applySettings()
Definition: disklist.cpp:110
MntConfigWidget::loadSettings
void loadSettings(void)
Definition: mntconfig.cpp:169
MntConfigWidget::UmountCommandCol
Definition: mntconfig.h:43
DiskEntry::deviceName
QString deviceName() const
Definition: disks.h:39
MntConfigWidget::MntConfigWidget
MntConfigWidget(QWidget *parent=0, bool init=false)
Definition: mntconfig.cpp:53
DiskList::readFSTAB
int readFSTAB()
Definition: disklist.cpp:200
DiskEntry::setMountPoint
void setMountPoint(const QString &mountPoint)
Definition: disks.cpp:355
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:08:03 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kdf

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

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • kremotecontrol
  • ktimer
  • kwallet
  • superkaramba
  • sweeper

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal