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

kremotecontrol

  • sources
  • kde-4.12
  • kdeutils
  • kremotecontrol
  • kcmremotecontrol
editdbusaction.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2010 Michael Zanetti <michael_zanetti@gmx.net>
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License along
15  with this program; if not, write to the Free Software Foundation, Inc.,
16  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 
18 */
19 
20 #include "editdbusaction.h"
21 #include <dbusinterface.h>
22 
23 EditDBusAction::EditDBusAction(DBusAction *action, QWidget* parent, Qt::WFlags flags): QWidget(parent, flags) {
24  m_action = action;
25  ui.setupUi(this);
26 
27  // Init DBus services
28  m_dbusServiceModel = new DBusServiceModel(ui.tvDBusApps);
29  ui.tvDBusApps->setModel(m_dbusServiceModel);
30 
31 
32  //Init DBus functions
33  m_dbusFunctionModel = new DBusFunctionModel(ui.tvDBusFunctions);
34  ui.tvDBusFunctions->setModel(m_dbusFunctionModel);
35  connect(ui.tvDBusApps->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(refreshDBusFunctions(QModelIndex)));
36 
37 
38  // Init Arguments View
39  m_argumentsModel = new ArgumentsModel(ui.tvArguments);
40  ui.tvArguments->setModel(m_argumentsModel);
41  ui.tvArguments->setItemDelegate(new ArgumentDelegate(ui.tvArguments));
42  connect(ui.tvDBusFunctions->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(refreshArguments(QModelIndex)));
43 
44 
45  // Load our action here
46  if(!m_action->application().isEmpty()){
47  // Find in or insert into Models and set current selection
48  QModelIndex index = m_dbusServiceModel->findOrInsert(m_action, true);
49  ui.tvDBusApps->selectionModel()->setCurrentIndex(index, QItemSelectionModel::SelectCurrent);
50  index = m_dbusFunctionModel->findOrInsert(m_action, true);
51  ui.tvDBusFunctions->selectionModel()->setCurrentIndex(index, QItemSelectionModel::Rows | QItemSelectionModel::SelectCurrent);
52 
53  // Load Options tab
54  ui.cbAutostart->setChecked(m_action->autostart());
55  ui.cbRepeat->setChecked(m_action->repeat());
56  switch(m_action->destination()){
57  case DBusAction::Unique:
58  ui.gbUnique->setEnabled(false);
59  break;
60  case DBusAction::Top:
61  ui.rbTop->setChecked(true);
62  break;
63  case DBusAction::Bottom:
64  ui.rbBottom->setChecked(true);
65  break;
66  case DBusAction::All:
67  ui.rbAll->setChecked(true);
68  break;
69  case DBusAction::None:
70  ui.rbNone->setChecked(true);
71  break;
72  }
73  } else {
74  // Set default options
75  ui.cbAutostart->setChecked(true);
76  ui.cbRepeat->setChecked(true);
77  ui.rbTop->setChecked(true);
78  }
79  if(!m_action->function().args().isEmpty()){
80  m_argumentsModel->refresh(m_action->function());
81  }
82 }
83 
84 EditDBusAction::~EditDBusAction() {
85 }
86 
87 bool EditDBusAction::checkForComplete() const {
88  if(ui.tvDBusFunctions->selectionModel()->currentIndex().isValid()){
89  return true;
90  }
91  return false;
92 }
93 
94 void EditDBusAction::applyChanges(){
95  m_action->setApplication(m_dbusServiceModel->application(ui.tvDBusApps->selectionModel()->currentIndex()));
96  m_action->setNode(m_dbusServiceModel->node(ui.tvDBusApps->selectionModel()->currentIndex()));
97  Prototype prototype = m_dbusFunctionModel->getPrototype(ui.tvDBusFunctions->selectionModel()->currentIndex().row());
98  prototype.setArgs(m_argumentsModel->arguments());
99  m_action->setFunction(prototype);
100  m_action->setInterface(m_dbusFunctionModel->getInterface(ui.tvDBusFunctions->selectionModel()->currentIndex().row()));
101 
102  m_action->setAutostart(ui.cbAutostart->isChecked());
103  m_action->setRepeat(ui.cbRepeat->isChecked());
104  if(ui.gbUnique->isEnabled()){
105  if(ui.rbAll->isChecked()){
106  m_action->setDestination(DBusAction::All);
107  } else if(ui.rbNone->isChecked()){
108  m_action->setDestination(DBusAction::None);
109  } else if(ui.rbTop->isChecked()){
110  m_action->setDestination(DBusAction::Top);
111  } else if(ui.rbBottom->isChecked()){
112  m_action->setDestination(DBusAction::Bottom);
113  }
114  } else {
115  m_action->setDestination(DBusAction::Unique);
116  }
117 }
118 
119 DBusAction EditDBusAction::action() const {
120  DBusAction action;
121  action.setApplication(m_dbusServiceModel->application(ui.tvDBusApps->selectionModel()->currentIndex()));
122  action.setNode(m_dbusServiceModel->node(ui.tvDBusApps->selectionModel()->currentIndex()));
123  Prototype prototype = m_dbusFunctionModel->getPrototype(ui.tvDBusFunctions->selectionModel()->currentIndex().row());
124  prototype.setArgs(m_argumentsModel->arguments());
125  action.setFunction(prototype);
126  action.setInterface(m_dbusFunctionModel->getInterface(ui.tvDBusFunctions->selectionModel()->currentIndex().row()));
127 
128  action.setAutostart(ui.cbAutostart->isChecked());
129  action.setRepeat(ui.cbRepeat->isChecked());
130  if(ui.gbUnique->isEnabled()){
131  if(ui.rbAll->isChecked()){
132  action.setDestination(DBusAction::All);
133  } else if(ui.rbNone->isChecked()){
134  action.setDestination(DBusAction::None);
135  } else if(ui.rbTop->isChecked()){
136  action.setDestination(DBusAction::Top);
137  } else if(ui.rbBottom->isChecked()){
138  action.setDestination(DBusAction::Bottom);
139  }
140  } else {
141  action.setDestination(DBusAction::Unique);
142  }
143  return action;
144 }
145 
146 void EditDBusAction::refreshDBusFunctions(const QModelIndex& index) {
147  m_dbusFunctionModel->refresh(m_dbusServiceModel->application(index), m_dbusServiceModel->node(index));
148  ui.tvDBusFunctions->resizeColumnToContents(0);
149 
150  if(DBusInterface::getInstance()->isUnique(m_dbusServiceModel->application(index))){
151  ui.gbUnique->setEnabled(false);
152  } else {
153  ui.gbUnique->setEnabled(true);
154  }
155  m_argumentsModel->clear();
156  emit formComplete(index.parent().isValid());
157 }
158 
159 void EditDBusAction::refreshArguments(const QModelIndex &index) {
160  m_argumentsModel->refresh(m_dbusFunctionModel->getPrototype(index.row()));
161  ui.tvArguments->resizeColumnsToContents();
162  ui.tvArguments->horizontalHeader()->setStretchLastSection(true);
163  emit formComplete(index.isValid());
164 }
165 
editdbusaction.h
Action::Bottom
Definition: action.h:34
DBusFunctionModel::findOrInsert
QModelIndex findOrInsert(const DBusAction *action, bool insert=false)
Definition: model.cpp:205
Action::destination
ActionDestination destination() const
Definition: action.cpp:61
EditDBusAction::checkForComplete
bool checkForComplete() const
Definition: editdbusaction.cpp:87
dbusinterface.h
DBusAction::function
Prototype function() const
Definition: dbusaction.cpp:55
Action::autostart
bool autostart() const
Definition: action.cpp:53
QWidget
DBusInterface::getInstance
static DBusInterface * getInstance()
Definition: dbusinterface.cpp:50
DBusServiceModel::findOrInsert
QModelIndex findOrInsert(const DBusAction *action, bool insert=false)
Definition: model.cpp:81
Action::All
Definition: action.h:34
DBusAction::setInterface
void setInterface(const QString &interface)
Definition: dbusaction.cpp:50
DBusAction::setApplication
void setApplication(const QString &application)
Definition: dbusaction.cpp:33
DBusAction
Definition: dbusaction.h:32
DBusAction::setFunction
void setFunction(const Prototype &function)
Definition: dbusaction.cpp:59
Action::setRepeat
void setRepeat(bool repeat)
Definition: action.cpp:49
Action::Unique
Definition: action.h:34
DBusFunctionModel::refresh
void refresh(const QString &app, const QString &node)
Definition: model.cpp:159
Prototype
Definition: prototype.h:28
ArgumentDelegate
Definition: model.h:107
DBusServiceModel
Created on: 01.02.2009.
Definition: model.h:47
Action::Top
Definition: action.h:34
Prototype::setArgs
void setArgs(const QList< Argument > &args)
Definition: prototype.cpp:36
EditDBusAction::action
DBusAction action() const
Definition: editdbusaction.cpp:119
Action::setDestination
void setDestination(ActionDestination destination)
Definition: action.cpp:65
ArgumentsModel
Definition: model.h:88
ArgumentsModel::arguments
QList< Argument > arguments() const
Definition: model.cpp:286
DBusServiceModel::node
QString node(const QModelIndex &index) const
Definition: model.cpp:74
Action::setAutostart
void setAutostart(bool autostart)
Definition: action.cpp:57
DBusFunctionModel
Definition: model.h:70
Prototype::args
QList< Argument > args() const
Definition: prototype.cpp:32
DBusServiceModel::application
QString application(const QModelIndex &index) const
Definition: model.cpp:67
Action::None
Definition: action.h:34
DBusAction::application
QString application() const
Definition: dbusaction.cpp:29
EditDBusAction::formComplete
void formComplete(bool complete)
EditDBusAction::applyChanges
void applyChanges()
Definition: editdbusaction.cpp:94
Action::repeat
bool repeat() const
Definition: action.cpp:45
ArgumentsModel::refresh
void refresh(const Prototype &prototype)
Definition: model.cpp:261
DBusAction::setNode
void setNode(const QString &node)
Definition: dbusaction.cpp:41
EditDBusAction::~EditDBusAction
~EditDBusAction()
Definition: editdbusaction.cpp:84
DBusFunctionModel::getPrototype
Prototype getPrototype(int index) const
Definition: model.cpp:196
DBusFunctionModel::getInterface
QString getInterface(int index) const
Definition: model.cpp:200
EditDBusAction::EditDBusAction
EditDBusAction(DBusAction *action, QWidget *parent=0, Qt::WFlags flags=0)
Definition: editdbusaction.cpp:23
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:07:43 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kremotecontrol

Skip menu "kremotecontrol"
  • Main Page
  • Namespace List
  • Namespace Members
  • 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