}
void Client::coreNetworkRemoved(NetworkId id) {
- if(!_networks.contains(id)) return;
+ if(!_networks.contains(id))
+ return;
Network *net = _networks.take(id);
emit networkRemoved(net->networkId());
net->deleteLater();
}
void Client::bufferRemoved(BufferId bufferId) {
- // first remove the buffer from has. this prohibits further lastSeenUpdates
+ // first remove the buffer from hash. this prohibits further lastSeenUpdates
Buffer *buff = 0;
if(_buffers.contains(bufferId)) {
buff = _buffers.take(bufferId);
#include "signalproxy.h"
#include "network.h"
#include "ircchannel.h"
-#include "ircuser.h"
#include "buffersettings.h"
}
}
- if(!success) {
- qDebug() << "didn't find User:" << ircUser << qHash(ircUser);
- qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "====";
- for(int i = 0; i < childCount(); i++) {
- categoryItem = qobject_cast<UserCategoryItem *>(child(i));
- categoryItem->dumpChildList();
- }
- qDebug() << "==== End Of Childlist for Item:" << this << id() << bufferName() << "====";
- }
- Q_ASSERT(success);
+// if(!success) {
+// qDebug() << "didn't find User:" << ircUser << qHash(ircUser);
+// qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "====";
+// for(int i = 0; i < childCount(); i++) {
+// categoryItem = qobject_cast<UserCategoryItem *>(child(i));
+// categoryItem->dumpChildList();
+// }
+// qDebug() << "==== End Of Childlist for Item:" << this << id() << bufferName() << "====";
+// }
+// Q_ASSERT(success);
}
void BufferItem::userModeChanged(IrcUser *ircUser) {
return false;
}
-IrcUser *IrcUserItem::ircUser() {
- return _ircUser;
-}
-
-quint64 IrcUserItem::id() const {
- return _id;
-}
-
QVariant IrcUserItem::data(int column, int role) const {
switch(role) {
case NetworkModel::ItemActiveRole:
#include "selectionmodelsynchronizer.h"
#include "modelpropertymapper.h"
#include "clientsettings.h"
+#include "ircuser.h"
class MappedSelectionModel;
class QAbstractItemView;
class Network;
class IrcChannel;
-class IrcUser;
/*****************************************
* Fancy Buffer Items
QString nickName() const;
bool isActive() const;
- IrcUser *ircUser();
- virtual quint64 id() const;
+ inline IrcUser *ircUser() { return _ircUser; }
+ inline virtual quint64 id() const { return _id; }
virtual QVariant data(int column, int role) const;
virtual QString toolTip(int column) const;
bool isBufferIndex(const QModelIndex &) const;
//Buffer *getBufferByIndex(const QModelIndex &) const;
+ QModelIndex networkIndex(NetworkId networkId);
QModelIndex bufferIndex(BufferId bufferId);
const Network *networkByIndex(const QModelIndex &index) const;
void networkRemoved(const NetworkId &networkId);
private:
- QModelIndex networkIndex(NetworkId networkId);
NetworkItem *networkItem(NetworkId networkId);
NetworkItem *existsNetworkItem(NetworkId networkId);
BufferItem *bufferItem(const BufferInfo &bufferInfo);
--- /dev/null
+SELECT bufferid
+FROM buffer
+WHERE networkid = :networkid and userid = :userid
+
return instance()->storage->requestBuffers(user);
}
+QList<BufferId> Core::requestBufferIdsForNetwork(UserId user, NetworkId networkId) {
+ QMutexLocker locker(&mutex);
+ return instance()->storage->requestBufferIdsForNetwork(user, networkId);
+}
+
bool Core::removeBuffer(const UserId &user, const BufferId &bufferId) {
QMutexLocker locker(&mutex);
return instance()->storage->removeBuffer(user, bufferId);
*/
static QList<BufferInfo> requestBuffers(UserId user);
+
+ //! Request a list of BufferIds for a given NetworkId
+ /** \note This method is threadsafe.
+ *
+ * \param user The user whose buffers we request
+ * \param networkId The NetworkId of the network in question
+ * \return List of BufferIds belonging to the Network
+ */
+ static QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId);
+
//! Remove permanently a buffer and it's content from the storage backend
/** This call cannot be reverted!
* \note This method is threadsafe.
// this can happen if the network was reconnecting while being removed
_connections.take(id)->deleteLater();
}
+ QList<BufferId> removedBuffers = Core::requestBufferIdsForNetwork(user(), id);
Network *net = _networks.take(id);
if(net && Core::removeNetwork(user(), id)) {
+ foreach(BufferId bufferId, removedBuffers) {
+ _bufferSyncer->removeBuffer(bufferId);
+ }
emit networkRemoved(id);
net->deleteLater();
}
<file>./SQL/SQLite/11/select_bufferByName.sql</file>
<file>./SQL/SQLite/11/select_bufferExists.sql</file>
<file>./SQL/SQLite/11/select_buffers.sql</file>
+ <file>./SQL/SQLite/11/select_buffers_for_network.sql</file>
<file>./SQL/SQLite/11/select_connected_networks.sql</file>
<file>./SQL/SQLite/11/select_messageRange.sql</file>
<file>./SQL/SQLite/11/select_messages.sql</file>
return bufferlist;
}
+QList<BufferId> SqliteStorage::requestBufferIdsForNetwork(UserId user, NetworkId networkId) {
+ QList<BufferId> bufferList;
+ QSqlQuery query(logDb());
+ query.prepare(queryString("select_buffers_for_network"));
+ query.bindValue(":networkid", networkId.toInt());
+ query.bindValue(":userid", user.toInt());
+
+ query.exec();
+ watchQuery(&query);
+ while(query.next()) {
+ bufferList << BufferId(query.value(0).toInt());
+ }
+ return bufferList;
+}
+
bool SqliteStorage::removeBuffer(const UserId &user, const BufferId &bufferId) {
if(!isValidBuffer(user, bufferId))
return false;
virtual BufferInfo getBufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer = "");
virtual BufferInfo getBufferInfo(UserId user, const BufferId &bufferId);
virtual QList<BufferInfo> requestBuffers(UserId user);
+ virtual QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId);
virtual bool removeBuffer(const UserId &user, const BufferId &bufferId);
virtual BufferId renameBuffer(const UserId &user, const NetworkId &networkId, const QString &newName, const QString &oldName);
virtual void setBufferLastSeenMsg(UserId user, const BufferId &bufferId, const MsgId &msgId);
*/
virtual QList<BufferInfo> requestBuffers(UserId user) = 0;
+ //! Request a list of BufferIds for a given NetworkId
+ /** \note This method is threadsafe.
+ *
+ * \param user The user whose buffers we request
+ * \param networkId The NetworkId of the network in question
+ * \return List of BufferIds belonging to the Network
+ */
+ virtual QList<BufferId> requestBufferIdsForNetwork(UserId user, NetworkId networkId) = 0;
+
//! Remove permanently a buffer and it's content from the storage backend
/** This call cannot be reverted!
* \param user The user who is the owner of the buffer