1 | /*************************************************************************** |
2 | * Copyright (C) 2005-2014 by the Quassel Project * |
3 | * devel@quassel-irc.org * |
4 | * * |
5 | * This program is free software; you can redistribute it and/or modify * |
6 | * it under the terms of the GNU General Public License as published by * |
7 | * the Free Software Foundation; either version 2 of the License, or * |
8 | * (at your option) version 3. * |
9 | * * |
10 | * This program is distributed in the hope that it will be useful, * |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
13 | * GNU General Public License for more details. * |
14 | * * |
15 | * You should have received a copy of the GNU General Public License * |
16 | * along with this program; if not, write to the * |
17 | * Free Software Foundation, Inc., * |
18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * |
19 | ***************************************************************************/ |
20 | |
21 | #include "titlesetter.h" |
22 | |
23 | #include "abstractitemview.h" |
24 | #include "client.h" |
25 | #include "mainwin.h" |
26 | |
27 | TitleSetter::TitleSetter(MainWin *parent) |
28 | : AbstractItemView(parent), |
29 | _mainWin(parent) |
30 | { |
31 | } |
32 | |
33 | |
34 | void TitleSetter::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) |
35 | { |
36 | Q_UNUSED(previous); |
37 | changeWindowTitle(current.sibling(current.row(), 0)); |
38 | } |
39 | |
40 | |
41 | void TitleSetter::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight) |
42 | { |
43 | QItemSelectionRange changedArea(topLeft, bottomRight); |
44 | QModelIndex currentTopicIndex = selectionModel()->currentIndex().sibling(selectionModel()->currentIndex().row(), 0); |
45 | if (changedArea.contains(currentTopicIndex)) |
46 | changeWindowTitle(currentTopicIndex); |
47 | }; |
48 | |
49 | void TitleSetter::changeWindowTitle(const QModelIndex &index) |
50 | { |
51 | BufferId id = index.data(NetworkModel::BufferIdRole).value<BufferId>(); |
52 | if (!id.isValid()) |
53 | return; |
54 | |
55 | QString title; |
56 | if (Client::networkModel()->bufferType(id) == BufferInfo::StatusBuffer) |
57 | title = index.data().toString(); |
58 | else |
59 | title = QString("%1 (%2)" ).arg(index.data().toString(), Client::networkModel()->networkName(id)); |
60 | QString newTitle = QString("%1 - %2" ).arg("Quassel IRC" ).arg(title); |
61 | |
62 | _mainWin->setWindowTitle(newTitle); |
63 | _mainWin->setWindowIconText(newTitle); |
64 | } |
65 | |