[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [Konversation] 3c2554d: Server list is now a tree list
From: Dario Abatianni <eisfuchs () tigress ! com>
Date: 2010-07-01 13:27:07
Message-ID: 20100701132707.73100BB550C () projects ! kde ! org
[Download RAW message or body]
commit 3c2554d3d31761d57b4be8dd22e4bcba5eabdf80
Author: Dario Abatianni <eisfuchs@tigress.com>
Date: Wed Dec 3 20:50:26 2003 +0000
Server list is now a tree list
svn path=/trunk/kdeextragear-2/konversation/; revision=271029
diff --git a/TODO b/TODO
index f542c8b..9cd4965 100644
--- a/TODO
+++ b/TODO
@@ -10,7 +10,6 @@ after being away a summary of lines with highlighting in its own \
window would be additionally the text-search could offer a button "any highlight"
additionally do some kind of marker to the lines that came in while being away; \
maybe with a special colour of the timestamp Make a command that makes you go to \
away mode on all servers
-/amsg and /ame for sending messages/actions to all open channels/queries
Per nick coloring in channel discussion
Use checkForUtf8 to make non-UTF8-users able to at least read UTF8.
DCC RESUME should start counting cps from the beginning
diff --git a/konversation/prefspagedialogs.cpp b/konversation/prefspagedialogs.cpp
index 6c5d94d..1546a26 100644
--- a/konversation/prefspagedialogs.cpp
+++ b/konversation/prefspagedialogs.cpp
@@ -6,7 +6,7 @@
*/
/*
- prefspagedialogs.cpp - description
+ prefspagedialogs.cpp - Page to manage "do not show again" dialogs
begin: Don Mai 29 2003
copyright: (C) 2003 by Dario Abatianni
email: eisfuchs@tigress.com
@@ -20,7 +20,6 @@
#include "prefspagedialogs.h"
#include "preferences.h"
-
PrefsPageDialogs::PrefsPageDialogs(QFrame* newParent,Preferences* newPreferences) :
PrefsPage(newParent,newPreferences)
{
@@ -46,10 +45,11 @@ PrefsPageDialogs::PrefsPageDialogs(QFrame* newParent,Preferences* \
newPreferences for(unsigned int index=0;index<dialogDefinitions.count();index++)
{
QString flagName(dialogDefinitions[index].section(' ',0,0));
- item=new ServerListItem(dialogListView,index,flagName,dialogDefinitions[index].section(' \
',1)); + item=new \
QCheckListItem(dialogListView,flagName,QCheckListItem::CheckBox); + \
item->setText(1,dialogDefinitions[index].section(' ',1));
if(preferences->getDialogFlag(flagName)) item->setOn(true);
- } // for
+ } // endfor
dialogsLayout->addWidget(dialogListView);
}
@@ -61,11 +61,11 @@ PrefsPageDialogs::~PrefsPageDialogs()
void PrefsPageDialogs::applyPreferences()
{
- ServerListItem* item=static_cast<ServerListItem*>(dialogListView->itemAtIndex(0));
+ QCheckListItem* item=static_cast<QCheckListItem*>(dialogListView->itemAtIndex(0));
while(item)
{
- preferences->setDialogFlag(item->text(1),item->isOn());
- item=static_cast<ServerListItem*>(item->itemBelow());
+ preferences->setDialogFlag(item->text(0),item->isOn());
+ item=static_cast<QCheckListItem*>(item->itemBelow());
}
}
diff --git a/konversation/prefspagedialogs.h b/konversation/prefspagedialogs.h
index 48216ba..47484e2 100644
--- a/konversation/prefspagedialogs.h
+++ b/konversation/prefspagedialogs.h
@@ -6,7 +6,7 @@
*/
/*
- prefspagedialogs.h - description
+ prefspagedialogs.h - Page to manage "do not show again" dialogs
begin: Don Mai 29 2003
copyright: (C) 2003 by Dario Abatianni
email: eisfuchs@tigress.com
@@ -16,13 +16,13 @@
#define PREFSPAGEDIALOGS_H
#include "prefspage.h"
-#include "serverlistitem.h"
/*
@author Dario Abatianni
*/
class KListView;
+class QCheckListItem;
class PrefsPageDialogs : public PrefsPage
{
@@ -37,7 +37,7 @@ class PrefsPageDialogs : public PrefsPage
protected:
KListView* dialogListView;
- ServerListItem* item;
+ QCheckListItem* item;
};
#endif
diff --git a/konversation/prefspageserverlist.cpp \
b/konversation/prefspageserverlist.cpp index 4a0c4d3..41de1c0 100644
--- a/konversation/prefspageserverlist.cpp
+++ b/konversation/prefspageserverlist.cpp
@@ -27,7 +27,7 @@
#include "editserverdialog.h"
PrefsPageServerList::PrefsPageServerList(QFrame* newParent,Preferences* \
newPreferences) :
- PrefsPage(newParent,newPreferences)
+ PrefsPage(newParent,newPreferences)
{
// Add Layout to Server list pane
QVBoxLayout* serverListLayout=new \
QVBoxLayout(parentFrame,marginHint(),spacingHint(),"server_list_layout"); @@ -36,33 \
+36,35 @@ PrefsPageServerList::PrefsPageServerList(QFrame* newParent,Preferences* \
newPrefe serverListView=new KListView(parentFrame);
serverListView->setItemsRenameable(true);
- serverListView->addColumn(i18n("Auto"));
- serverListView->addColumn(i18n("Group"));
- serverListView->addColumn(i18n("Server"));
- serverListView->addColumn(i18n("Port"));
- serverListView->addColumn(i18n("Password"));
- serverListView->addColumn(i18n("Channel"));
- serverListView->addColumn(i18n("Password"));
- serverListView->addColumn(i18n("Identity"));
+ serverListView->addColumn(i18n("Group")); // 0
+ serverListView->addColumn(i18n("Server")); // 1
+ serverListView->addColumn(i18n("Port")); // 2
+ serverListView->addColumn(i18n("Password")); // 3
+ serverListView->addColumn(i18n("Channel")); // 4
+ serverListView->addColumn(i18n("Password")); // 5
+ serverListView->addColumn(i18n("Identity")); // 6
serverListView->setRenameable(0,false);
serverListView->setRenameable(1,true);
serverListView->setRenameable(2,true);
- serverListView->setRenameable(3,true);
- serverListView->setRenameable(5,true);
+ serverListView->setRenameable(4,true);
serverListView->setAllColumnsShowFocus(true);
// Fill in the servers from the preferences
int index=0;
+ serverListView->setRootIsDecorated(true);
+
QString serverString=preferences->getServerByIndex(index);
while(!serverString.isEmpty())
{
int id=preferences->getServerIdByIndex(index);
QStringList serverEntry=QStringList::split(',',serverString,true);
- ServerListItem* item=new ServerListItem(serverListView,id,
- serverEntry[0],
+
+ QListViewItem* branch=findBranch(serverEntry[0]);
+ ServerListItem* item=new ServerListItem(branch,id,
+ serverEntry[0], // won't be shown, but \
stored inside serverEntry[1],
serverEntry[2],
(!serverEntry[3].isEmpty()) ? \
QString("********") : QString::null, @@ -91,7 +93,7 @@ \
PrefsPageServerList::PrefsPageServerList(QFrame* newParent,Preferences* newPrefe
showServerList=new QCheckBox(i18n("&Show server list while \
autoconnecting"),parentFrame,"show_serverlist_check"); \
showServerList->setChecked(preferences->getShowServerList());
-
+
serverListLayout->addWidget(serverListView);
serverListLayout->addWidget(buttonBox);
serverListLayout->addWidget(showServerList);
@@ -138,7 +140,7 @@ void PrefsPageServerList::connectClicked()
itemId=item->getId();
// now we can pass the integer variable as argument for the emitted
// signal instead of a reference to the locally declared
- // ServerListItems accessor function. [MG]
+ // ServerListItem's accessor function. [MG]
emit connectToServer(itemId);
}
}
@@ -147,9 +149,11 @@ void PrefsPageServerList::newServer()
{
int newId=preferences->addServer("New,new.server.com,6667,,,,,");
- ServerListItem* newItem=new ServerListItem(serverListView,newId,QString::null);
+ QListViewItem* branch=findBranch("New");
+ ServerListItem* newItem=new ServerListItem(branch,newId,"New");
serverListView->setSelected(newItem,true);
+ serverListView->ensureItemVisible(newItem);
editServer();
}
@@ -172,8 +176,14 @@ void PrefsPageServerList::removeServer()
ServerListItem* item=static_cast<ServerListItem*>(lv_item);
if(item)
{
+ // find branch this item belongs to
+ QListViewItem* branch=findBranch(item->getGroup());
+ // remove server from preferences
preferences->removeServer(item->getId());
+ // remove item from view
delete item;
+ // if the branch has no other items, remove it
+ if(branch->childCount()==0) delete branch;
}
}
@@ -218,18 +228,29 @@ void PrefsPageServerList::updateServer(const QString& \
groupName, const QString& channelKey,
const QString& identity)
{
- QListViewItem* item=serverListView->selectedItems().first();
// Need to find a better way without casting
- ServerListItem* serverItem=static_cast<ServerListItem*>(item);
- int id=serverItem->getId();
-
- serverItem->setText(1,groupName);
- serverItem->setText(2,serverName);
- serverItem->setText(3,serverPort);
- serverItem->setText(4,(!serverKey || serverKey.isEmpty()) ? QString::null : \
QString("********"));
- serverItem->setText(5,channelName);
- serverItem->setText(6,(!channelKey || channelKey.isEmpty()) ? QString::null : \
QString("********"));
- serverItem->setText(7,identity);
+ ServerListItem* item=static_cast<ServerListItem*>(serverListView->selectedItems().first());
+ // find branch the old item resides in
+ QListViewItem* branch=findBranch(item->getGroup());
+ // save server id of the old item
+ int id=item->getId();
+ // remove item from the list
+ delete item;
+ // if the branch is empty, remove it
+ if(branch->childCount()==0) delete branch;
+
+ // find branch to insert the new item into
+ branch=findBranch(groupName);
+
+ item=new ServerListItem(branch,
+ id,
+ groupName,
+ serverName,
+ serverPort,
+ (!serverKey || serverKey.isEmpty()) ? QString::null : \
QString("********"), + channelName,
+ (!channelKey || channelKey.isEmpty()) ? QString::null : \
QString("********"), + identity);
preferences->updateServer(id,groupName+","+
serverName+","+
@@ -237,8 +258,11 @@ void PrefsPageServerList::updateServer(const QString& groupName,
serverKey+","+
channelName+","+
channelKey+","+
- (serverItem->isOn() ? "1" : "0")+","+
+ (item->isOn() ? "1" : "0")+","+
identity);
+
+ serverListView->setSelected(item,true);
+ serverListView->ensureItemVisible(item);
}
void PrefsPageServerList::updateServerProperty(QListViewItem* item,const QString& \
value,int property) @@ -248,7 +272,9 @@ void \
PrefsPageServerList::updateServerProperty(QListViewItem* item,const QString int \
id=serverItem->getId();
if(property==0) property=6; // to keep old preferences working with auto connect \
checkbox
- else property--; // -1 because the first is the checkbox
+
+// No longer needed, since the group property was moved out
+// else property--; // -1 because the first is the checkbox
preferences->changeServerProperty(id,property,value);
}
@@ -260,9 +286,8 @@ void PrefsPageServerList::updateAutoState(ServerListItem* \
item,bool state)
void PrefsPageServerList::serverDoubleClicked(QListViewItem* item)
{
- // Suppress a compiler warning
- item->height();
- connectClicked();
+ if(item->text(1).isEmpty()) item->setOpen(!item->isOpen());
+ else connectClicked();
}
void PrefsPageServerList::showServerListChanged(int state)
@@ -270,4 +295,17 @@ void PrefsPageServerList::showServerListChanged(int state)
preferences->setShowServerList(state==2);
}
+QListViewItem* PrefsPageServerList::findBranch(QString name,bool generate)
+{
+ QListViewItem* branch=serverListView->findItem(name,0);
+ if(branch==0 && generate==true)
+ {
+ branch=new QListViewItem(serverListView,name);
+ branch->setOpen(true);
+ branch->setSelectable(false);
+ }
+
+ return branch;
+}
+
#include "prefspageserverlist.moc"
diff --git a/konversation/prefspageserverlist.h b/konversation/prefspageserverlist.h
index 2a7dc88..4487ba8 100644
--- a/konversation/prefspageserverlist.h
+++ b/konversation/prefspageserverlist.h
@@ -33,13 +33,13 @@ class PrefsPageServerList : public PrefsPage
{
Q_OBJECT
- public:
+ public:
PrefsPageServerList(QFrame* newParent,Preferences* newPreferences);
~PrefsPageServerList();
signals:
void connectToServer(int id);
-
+
protected slots:
void newServer();
void editServer();
@@ -53,6 +53,8 @@ class PrefsPageServerList : public PrefsPage
void showServerListChanged(int state);
protected:
+ QListViewItem* findBranch(QString name,bool generate=true);
+
QPushButton* connectButton;
QPushButton* newServerButton;
QPushButton* editServerButton;
diff --git a/konversation/serverlistitem.cpp b/konversation/serverlistitem.cpp
index 7d188bd..ed0c0ec 100644
--- a/konversation/serverlistitem.cpp
+++ b/konversation/serverlistitem.cpp
@@ -6,7 +6,7 @@
*/
/*
- serverlistitem.cpp - description
+ serverlistitem.cpp - Holds the list items inside the server list preferences \
panel begin: Sun Feb 10 2002
copyright: (C) 2002 by Dario Abatianni
email: eisfuchs@tigress.com
@@ -16,7 +16,8 @@
#include "serverlistitem.h"
-ServerListItem::ServerListItem(QListView* parent,int newId,
+ServerListItem::ServerListItem(QListViewItem* parent,
+ int newId,
QString arg0,
QString arg1,
QString arg2,
@@ -27,13 +28,14 @@ ServerListItem::ServerListItem(QListView* parent,int newId,
QCheckListItem(parent,QString::null,QCheckListItem::CheckBox)
{
id=newId;
- setText(1,arg0);
- setText(2,arg1);
- setText(3,arg2);
- setText(4,arg3);
- setText(5,arg4);
- setText(6,arg5);
- setText(7,arg6);
+ setText(1,arg1);
+ setText(2,arg2);
+ setText(3,arg3);
+ setText(4,arg4);
+ setText(5,arg5);
+ setText(6,arg6);
+
+ group=arg0;
}
ServerListItem::~ServerListItem()
@@ -45,4 +47,7 @@ void ServerListItem::stateChange(bool state)
emit stateChanged(this,state);
}
+int ServerListItem::getId() const { return id; };
+QString ServerListItem::getGroup() const { return group; };
+
#include "serverlistitem.moc"
diff --git a/konversation/serverlistitem.h b/konversation/serverlistitem.h
index 66f54b3..f9ba0e3 100644
--- a/konversation/serverlistitem.h
+++ b/konversation/serverlistitem.h
@@ -6,7 +6,7 @@
*/
/*
- serverlistitem.h - description
+ serverlistitem.h - Holds the list items inside the server list preferences panel
begin: Sun Feb 10 2002
copyright: (C) 2002 by Dario Abatianni
email: eisfuchs@tigress.com
@@ -18,6 +18,7 @@
#define SERVERLISTITEM_H
#include <qlistview.h>
+#include <qstring.h>
/*
@author Dario Abatianni
@@ -28,7 +29,9 @@ class ServerListItem : public QObject, public QCheckListItem
Q_OBJECT
public:
- ServerListItem(QListView* parent,int newId,QString arg0,
+ ServerListItem(QListViewItem* parent,
+ int newId,
+ QString arg0,
QString arg1=QString::null,
QString arg2=QString::null,
QString arg3=QString::null,
@@ -36,7 +39,9 @@ class ServerListItem : public QObject, public QCheckListItem
QString arg5=QString::null,
QString arg6=QString::null);
~ServerListItem();
- int getId() const { return id; };
+
+ int getId() const;
+ QString getGroup() const;
signals:
void stateChanged(ServerListItem* myself,bool state);
@@ -44,6 +49,7 @@ class ServerListItem : public QObject, public QCheckListItem
protected:
void stateChange(bool state);
int id;
+ QString group;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic