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

kopete/kopete

  • sources
  • kde-4.14
  • kdenetwork
  • kopete
  • kopete
  • config
  • status
statusconfig_manager.cpp
Go to the documentation of this file.
1 /*
2  statusconfig_manager.cpp
3 
4  Copyright (c) 2008 by Roman Jarosz <kedgedev@centrum.cz>
5  Kopete (c) 2008 by the Kopete developers <kopete-devel@kde.org>
6 
7  *************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  *************************************************************************
15 */
16 
17 #include "statusconfig_manager.h"
18 
19 #include <QtGui/QHeaderView>
20 
21 #include "kopeteonlinestatusmanager.h"
22 #include "statusmodel.h"
23 #include "kopetestatusmanager.h"
24 #include "kopetestatusitems.h"
25 
26 class StatusConfig_Manager::Private
27 {
28 public:
29  Private() {}
30  KopeteStatusModel *statusModel;
31  Kopete::Status::StatusGroup *rootGroup;
32 };
33 
34 StatusConfig_Manager::StatusConfig_Manager( QWidget *parent )
35 : QWidget( parent ), d( new Private() )
36 {
37  setupUi( this );
38 
39  pbAddStatus->setIcon( KIcon("list-add") );
40  pbRemove->setIcon( KIcon("edit-delete") );
41  pbAddGroup->setIcon( KIcon("folder-new") );
42 
43  connect( pbAddStatus, SIGNAL(clicked()), SLOT(addStatus()) );
44  connect( pbRemove, SIGNAL(clicked()), SLOT(removeStatus()) );
45  connect( pbAddGroup, SIGNAL(clicked()), SLOT(addGroup()) );
46 
47  d->rootGroup = Kopete::StatusManager::self()->copyRootGroup();
48  d->statusModel = new KopeteStatusModel( d->rootGroup );
49  d->statusModel->setSupportedDragActions( Qt::MoveAction );
50  statusView->setModel( d->statusModel );
51  connect( d->statusModel, SIGNAL(changed()), this, SIGNAL(changed()) );
52 
53  KIcon icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Online );
54  cbStatusCategory->addItem( icon, i18n("Online"), Kopete::OnlineStatusManager::Online );
55  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::FreeForChat );
56  cbStatusCategory->addItem( icon, i18n("Free For Chat"), Kopete::OnlineStatusManager::FreeForChat );
57  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Away );
58  cbStatusCategory->addItem( icon, i18n("Away"), Kopete::OnlineStatusManager::Away );
59  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::ExtendedAway );
60  cbStatusCategory->addItem( icon, i18n("Extended Away"), Kopete::OnlineStatusManager::ExtendedAway );
61  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Busy );
62  cbStatusCategory->addItem( icon, i18n("Busy"), Kopete::OnlineStatusManager::Busy );
63  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Idle );
64  cbStatusCategory->addItem( icon, i18n("Idle"), Kopete::OnlineStatusManager::Idle );
65  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Invisible );
66  cbStatusCategory->addItem( icon, i18n("Invisible"), Kopete::OnlineStatusManager::Invisible );
67  icon = Kopete::OnlineStatusManager::pixmapForCategory( Kopete::OnlineStatusManager::Offline );
68  cbStatusCategory->addItem( icon, i18n("Offline"), Kopete::OnlineStatusManager::Offline );
69  icon = Kopete::OnlineStatusManager::pixmapForCategory( 0x00 );
70  cbStatusCategory->addItem( icon, i18n("Do Not Change"), 0x00 );
71 
72  statusView->expandAll();
73 
74  connect( leStatusTitle, SIGNAL(textEdited(QString)), this, SLOT(editTitleEdited(QString)) );
75  connect( cbStatusCategory, SIGNAL(currentIndexChanged(int)), this, SLOT(editTypeChanged(int)) );
76  connect( teStatusMessage, SIGNAL(textChanged()), this, SLOT(editMessageChanged()) );
77 
78  QItemSelectionModel *selectionModel = statusView->selectionModel();
79  //TODO change currentChanged to currentRowChanged when TT Bug 162986 is fixed
80  connect( selectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)),
81  this, SLOT(currentRowChanged(QModelIndex,QModelIndex)) );
82 
83  currentRowChanged( selectionModel->currentIndex(), QModelIndex() );
84 }
85 
86 StatusConfig_Manager::~StatusConfig_Manager()
87 {
88  delete d->statusModel;
89  delete d->rootGroup;
90  delete d;
91 }
92 
93 void StatusConfig_Manager::load()
94 {
95 }
96 
97 void StatusConfig_Manager::save()
98 {
99  Kopete::Status::StatusGroup *group = qobject_cast<Kopete::Status::StatusGroup *>(d->rootGroup->copy());
100  Kopete::StatusManager::self()->setRootGroup( group );
101  Kopete::StatusManager::self()->saveXML();
102 }
103 
104 void StatusConfig_Manager::addStatus()
105 {
106  Kopete::Status::Status *status = new Kopete::Status::Status();
107  status->setTitle( i18n( "New Status" ) );
108  status->setCategory( Kopete::OnlineStatusManager::Online );
109 
110  QModelIndex index = statusView->selectionModel()->currentIndex();
111  QModelIndex newIndex = d->statusModel->insertItem( index, status );
112 
113  if ( newIndex.isValid() )
114  statusView->setCurrentIndex( newIndex );
115  else
116  delete status;
117 }
118 
119 void StatusConfig_Manager::addGroup()
120 {
121  Kopete::Status::StatusGroup *group = new Kopete::Status::StatusGroup();
122  group->setTitle( i18n( "New Group" ) );
123  group->setCategory( Kopete::OnlineStatusManager::Online );
124 
125  QModelIndex index = statusView->selectionModel()->currentIndex();
126  QModelIndex newIndex = d->statusModel->insertItem( index, group );
127 
128  if ( newIndex.isValid() )
129  {
130  statusView->setCurrentIndex( newIndex );
131  statusView->setExpanded( newIndex, true );
132  }
133  else
134  delete group;
135 }
136 
137 void StatusConfig_Manager::removeStatus()
138 {
139  QModelIndex index = statusView->selectionModel()->currentIndex();
140 
141  if ( index.isValid() )
142  d->statusModel->removeRow( index.row(), index.parent() );
143 }
144 
145 void StatusConfig_Manager::currentRowChanged( const QModelIndex &current, const QModelIndex& )
146 {
147  leStatusTitle->blockSignals( true );
148  cbStatusCategory->blockSignals( true );
149  teStatusMessage->blockSignals( true );
150 
151  if ( current.isValid() )
152  {
153  statusGroupBox->setEnabled( true );
154  pbRemove->setEnabled( true );
155  int categoryIndex = cbStatusCategory->findData( d->statusModel->data( current, KopeteStatusModel::Category ).toInt() );
156  cbStatusCategory->setCurrentIndex( categoryIndex );
157  leStatusTitle->setText( d->statusModel->data( current, KopeteStatusModel::Title ).toString() );
158 
159  if ( d->statusModel->data( current, KopeteStatusModel::Group ).toBool() )
160  {
161  lblStatusMessage->setEnabled( false );
162  teStatusMessage->setEnabled( false );
163  teStatusMessage->clear();
164  }
165  else
166  {
167  lblStatusMessage->setEnabled( true );
168  teStatusMessage->setEnabled( true );
169  teStatusMessage->setPlainText( d->statusModel->data( current, KopeteStatusModel::Message ).toString() );
170  }
171  }
172  else
173  {
174  statusGroupBox->setEnabled( false );
175  pbRemove->setEnabled( false );
176  cbStatusCategory->setCurrentIndex( 0 );
177  leStatusTitle->clear();
178  teStatusMessage->clear();
179  }
180 
181  leStatusTitle->blockSignals( false );
182  cbStatusCategory->blockSignals( false );
183  teStatusMessage->blockSignals( false );
184 }
185 
186 void StatusConfig_Manager::editTitleEdited( const QString &text )
187 {
188  QModelIndex modelIndex = statusView->selectionModel()->currentIndex();
189  d->statusModel->setData( modelIndex, text, KopeteStatusModel::Title );
190 }
191 
192 void StatusConfig_Manager::editMessageChanged()
193 {
194  QModelIndex modelIndex = statusView->selectionModel()->currentIndex();
195  d->statusModel->setData( modelIndex, teStatusMessage->toPlainText(), KopeteStatusModel::Message );
196 }
197 
198 void StatusConfig_Manager::editTypeChanged( int index )
199 {
200  QModelIndex modelIndex = statusView->selectionModel()->currentIndex();
201  d->statusModel->setData( modelIndex, cbStatusCategory->itemData(index), KopeteStatusModel::Category );
202 }
203 
204 #include "statusconfig_manager.moc"
QModelIndex
QWidget
QWidget::setupUi
void setupUi(QWidget *widget)
StatusConfig_Manager::~StatusConfig_Manager
~StatusConfig_Manager()
Definition: statusconfig_manager.cpp:86
QItemSelectionModel::currentIndex
QModelIndex currentIndex() const
KopeteStatusModel::Message
Definition: statusmodel.h:44
QWidget::icon
const QPixmap * icon() const
statusmodel.h
KopeteStatusModel::Category
Definition: statusmodel.h:42
QModelIndex::isValid
bool isValid() const
StatusConfig_Manager::removeStatus
void removeStatus()
Definition: statusconfig_manager.cpp:137
statusconfig_manager.h
StatusConfig_Manager::changed
void changed()
QModelIndex::row
int row() const
StatusConfig_Manager::save
void save()
Definition: statusconfig_manager.cpp:97
QString
KopeteStatusModel::Group
Definition: statusmodel.h:45
QModelIndex::parent
QModelIndex parent() const
StatusConfig_Manager::StatusConfig_Manager
StatusConfig_Manager(QWidget *parent=0)
Definition: statusconfig_manager.cpp:34
StatusConfig_Manager::load
void load()
Definition: statusconfig_manager.cpp:93
StatusConfig_Manager::addGroup
void addGroup()
Definition: statusconfig_manager.cpp:119
KopeteStatusModel::Title
Definition: statusmodel.h:43
StatusConfig_Manager::addStatus
void addStatus()
Definition: statusconfig_manager.cpp:104
QItemSelectionModel
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KopeteStatusModel
Definition: statusmodel.h:33
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:29:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kopete/kopete

Skip menu "kopete/kopete"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

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