20 #include "kopeteproperty.h"
21 #include "kopeteglobal.h"
22 #include "kopeteappearancesettings.h"
24 #include <QStringList>
25 #include <QApplication>
26 #include <QToolButton>
27 #include <QStandardItemModel>
28 #include <QSortFilterProxyModel>
30 #include <kiconloader.h>
36 setCaption( i18n(
"Tooltip Editor") );
37 setButtons( KDialog::Ok | KDialog::Cancel );
38 setDefaultButton(KDialog::Ok);
39 showButtonSeparator(
true);
41 mMainWidget =
new QWidget(
this);
42 mMainWidget->setObjectName(
"TooltipEditDialog::mMainWidget");
45 setMainWidget(mMainWidget);
50 mUnusedEntries =
new QStandardItemModel(
this);
51 mUsedEntries =
new QStandardItemModel(
this);
53 const Kopete::PropertyTmpl::Map propmap(
54 Kopete::Global::Properties::self()->templateMap());
55 const QStringList usedKeys = Kopete::AppearanceSettings::self()->toolTipContents();
58 foreach(
const QString &usedProp, usedKeys)
60 if(propmap.contains(usedProp) && !propmap[usedProp].isPrivate())
62 QStandardItem *item =
new QStandardItem( propmap[usedProp].label() );
63 item->setData( usedProp );
64 mUsedEntries->appendRow( item );
70 Kopete::PropertyTmpl::Map::ConstIterator it;
71 for(it = propmap.begin(); it != propmap.end(); ++it)
73 if((usedKeys.contains(it.key())==0) && (!it.value().isPrivate()))
75 QStandardItem *item =
new QStandardItem( it.value().label() );
76 item->setData( it.key() );
77 mUnusedEntries->appendRow( item );
83 proxyModel->setSourceModel( mUnusedEntries );
84 proxyModel->sort( 0, Qt::AscendingOrder );
85 unusedItemsListView->setModel( proxyModel );
86 usedItemsListView->setModel( mUsedEntries );
91 connect(unusedItemsListView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
92 this, SLOT(slotUnusedSelected(QItemSelection)));
93 connect(usedItemsListView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
94 this, SLOT(slotUsedSelected(QItemSelection)));
95 connect(unusedItemsListView, SIGNAL(doubleClicked(QModelIndex)),
this, SLOT(slotAddButton()));
96 connect(usedItemsListView, SIGNAL(doubleClicked(QModelIndex)),
this, SLOT(slotRemoveButton()));
98 tbUp->setIcon(KIcon(
"go-up"));
99 tbUp->setEnabled(
false);
100 tbUp->setAutoRepeat(
true);
101 connect(tbUp, SIGNAL(clicked()), SLOT(slotUpButton()));
103 tbDown->setIcon(KIcon(
"go-down"));
104 tbDown->setEnabled(
false);
105 tbDown->setAutoRepeat(
true);
106 connect(tbDown, SIGNAL(clicked()), SLOT(slotDownButton()));
108 KIcon left = KIcon(
"go-previous");
109 KIcon right = KIcon(
"go-next");
111 tbAdd->setIcon(QApplication::isRightToLeft() ? left : right);
112 tbAdd->setEnabled(
false);
113 connect(tbAdd, SIGNAL(clicked()), SLOT(slotAddButton()));
115 tbRemove->setIcon(QApplication::isRightToLeft() ? right : left);
116 tbRemove->setEnabled(
false);
117 connect(tbRemove, SIGNAL(clicked()), SLOT(slotRemoveButton()));
119 connect(
this, SIGNAL(okClicked()),
this, SLOT(slotOkClicked()));
121 resize(QSize(450, 450));
124 void TooltipEditDialog::slotOkClicked()
126 QStringList oldList = Kopete::AppearanceSettings::self()->toolTipContents();
131 int max = mUsedEntries->rowCount( );
132 for (
int i=0; i < max; i++ )
134 QStandardItem *item = mUsedEntries->item( i, 0 );
135 keyname = item->data().value<QString>();
141 if(oldList != newList)
143 Kopete::AppearanceSettings::self()->setToolTipContents(newList);
145 kDebug(14000) <<
"tooltip fields changed, emitting changed()";
150 void TooltipEditDialog::slotUnusedSelected(
const QItemSelection& selected)
152 tbAdd->setEnabled(selected.indexes().count());
155 void TooltipEditDialog::slotUsedSelected(
const QItemSelection& selected)
157 tbRemove->setEnabled( selected.indexes().count() );
158 tbUp->setEnabled( selected.indexes().count() );
159 tbDown->setEnabled( selected.indexes().count() );
161 if ( !selected.indexes().count() )
165 if ( selected.indexes().first().row() == 0 )
166 tbUp->setEnabled(
false );
168 tbUp->setEnabled(
true );
170 if ( selected.indexes().last().row() == mUsedEntries->rowCount() - 1 )
171 tbDown->setEnabled(
false );
173 tbDown->setEnabled(
true );
176 void TooltipEditDialog::slotUpButton()
178 QModelIndexList indexList = usedItemsListView->selectionModel()->selectedIndexes();
179 usedItemsListView->selectionModel()->clear();
181 foreach(
const QModelIndex &index, indexList )
183 int row = index.row();
189 mUsedEntries->insertRow( row - 1, mUsedEntries->takeRow( row ) );
192 usedItemsListView->selectionModel()->select( mUsedEntries->index( row - 1, 0 ) , QItemSelectionModel::Select );
193 usedItemsListView->scrollTo( mUsedEntries->index( row - 1, 0 ) );
197 tbUp->setEnabled(
false );
198 tbDown->setEnabled(
true );
202 void TooltipEditDialog::slotDownButton()
204 QModelIndexList indexList = usedItemsListView->selectionModel()->selectedIndexes();
205 usedItemsListView->selectionModel()->clear();
207 foreach(
const QModelIndex &index, indexList ) {
208 int row = index.row();
210 if ( row + 1 > mUsedEntries->rowCount() )
214 mUsedEntries->insertRow( row + 1, mUsedEntries->takeRow( row ) );
217 usedItemsListView->selectionModel()->select( mUsedEntries->index( row + 1, 0 ) , QItemSelectionModel::Select );
218 usedItemsListView->scrollTo( mUsedEntries->index( row + 1, 0 ) );
222 if ( row + 1 == mUsedEntries->rowCount() - 1 )
223 tbDown->setEnabled(
false );
224 tbUp->setEnabled(
true );
228 void TooltipEditDialog::slotAddButton()
230 QModelIndexList indexList = unusedItemsListView->selectionModel()->selectedIndexes();
232 foreach(
const QModelIndex &index_, indexList )
234 QModelIndex index =
static_cast<QSortFilterProxyModel*
>( unusedItemsListView->model() )->mapToSource( index_ );
238 QModelIndex insertAfter;
239 if ( !usedItemsListView->selectionModel()->selectedIndexes().isEmpty() )
240 insertAfter = usedItemsListView->selectionModel()->selectedIndexes().last();
242 insertAfter = mUsedEntries->index( mUsedEntries->rowCount() - 1, 0 );
245 mUsedEntries->insertRow( insertAfter.row() + 1, mUnusedEntries->takeRow( index.row() ) );
248 QModelIndex newIndex = mUsedEntries->index( insertAfter.row() + 1, 0 );
249 usedItemsListView->setCurrentIndex( newIndex );
253 void TooltipEditDialog::slotRemoveButton()
255 QModelIndexList indexList = usedItemsListView->selectionModel()->selectedIndexes();
257 foreach(
const QModelIndex &index, indexList )
259 int row = index.row();
262 mUnusedEntries->insertRow( 0, mUsedEntries->takeRow( index.row() ) );
266 usedItemsListView->selectionModel()->select( mUsedEntries->index( row - 1, 0 ), QItemSelectionModel::Select );
268 usedItemsListView->selectionModel()->select( mUsedEntries->index( row, 0 ), QItemSelectionModel::Select );
273 #include "tooltipeditdialog.moc"