deck storage is fully working again, cleaned up some unnecessarily large messages

This commit is contained in:
Max-Wilhelm Bruker 2012-01-02 15:46:14 +01:00
parent d4aaf9fff5
commit 0c9a2b061c
13 changed files with 110 additions and 66 deletions

View file

@ -108,7 +108,7 @@ void RemoteClient::readData()
ServerMessage newServerMessage;
newServerMessage.ParseFromArray(inputBuffer.data(), messageLength);
qDebug(QString::fromStdString(newServerMessage.ShortDebugString()).toUtf8());
qDebug((QString::number(messageLength) + ": " + QString::fromStdString(newServerMessage.ShortDebugString())).toUtf8());
inputBuffer.remove(0, messageLength);
messageInProgress = false;

View file

@ -6,7 +6,8 @@
#include "pending_command.h"
#include "pb/session_commands.pb.h"
//#include "pb/response_deck_list.pb.h"
#include "pb/response_deck_list.pb.h"
#include "pb/serverinfo_deckstorage.pb.h"
RemoteDeckList_TreeModel::DirectoryNode::DirectoryNode(const QString &_name, RemoteDeckList_TreeModel::DirectoryNode *_parent)
: RemoteDeckList_TreeModel::Node(_name, _parent)
@ -202,35 +203,38 @@ QModelIndex RemoteDeckList_TreeModel::nodeToIndex(Node *node) const
return createIndex(node->getParent()->indexOf(node), 0, node);
}
void RemoteDeckList_TreeModel::addFileToTree(DeckList_File *file, DirectoryNode *parent)
void RemoteDeckList_TreeModel::addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, DirectoryNode *parent)
{
/* beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
parent->append(new FileNode(file->getName(), file->getId(), file->getUploadTime(), parent));
endInsertRows();
*/
const ServerInfo_DeckStorage_File &fileInfo = file.file();
QDateTime time;
time.setMSecsSinceEpoch(fileInfo.creation_time());
beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
parent->append(new FileNode(QString::fromStdString(file.name()), file.id(), time, parent));
endInsertRows();
}
void RemoteDeckList_TreeModel::addFolderToTree(DeckList_Directory *folder, DirectoryNode *parent)
void RemoteDeckList_TreeModel::addFolderToTree(const ServerInfo_DeckStorage_TreeItem &folder, DirectoryNode *parent)
{
// addFolderToTree(folder->getName(), folder->getTreeItems(), parent);
DirectoryNode *newItem = addNamedFolderToTree(QString::fromStdString(folder.name()), parent);
const ServerInfo_DeckStorage_Folder &folderInfo = folder.folder();
const int folderItemsSize = folderInfo.items_size();
for (int i = 0; i < folderItemsSize; ++i) {
const ServerInfo_DeckStorage_TreeItem &subItem = folderInfo.items(i);
if (subItem.has_folder())
addFolderToTree(subItem, newItem);
else
addFileToTree(subItem, newItem);
}
}
void RemoteDeckList_TreeModel::addFolderToTree(const QString &name, const QList<DeckList_TreeItem *> &folderItems, DirectoryNode *parent)
RemoteDeckList_TreeModel::DirectoryNode *RemoteDeckList_TreeModel::addNamedFolderToTree(const QString &name, DirectoryNode *parent)
{
/* DirectoryNode *newItem = new DirectoryNode(name, parent);
DirectoryNode *newItem = new DirectoryNode(name, parent);
beginInsertRows(nodeToIndex(parent), parent->size(), parent->size());
parent->append(newItem);
endInsertRows();
for (int i = 0; i < folderItems.size(); ++i) {
DeckList_Directory *subFolder = dynamic_cast<DeckList_Directory *>(folderItems[i]);
if (subFolder)
addFolderToTree(subFolder, newItem);
else
addFileToTree(dynamic_cast<DeckList_File *>(folderItems[i]), newItem);
}
*/
return newItem;
}
void RemoteDeckList_TreeModel::removeNode(RemoteDeckList_TreeModel::Node *node)
@ -252,14 +256,17 @@ void RemoteDeckList_TreeModel::refreshTree()
void RemoteDeckList_TreeModel::deckListFinished(const Response &r)
{
/* const Response_DeckList &resp = r.GetExtension(Response_DeckList::ext);
const Response_DeckList &resp = r.GetExtension(Response_DeckList::ext);
root->clearTree();
reset();
addFolderToTree(resp->getRoot(), root);
ServerInfo_DeckStorage_TreeItem tempRoot;
tempRoot.set_id(0);
tempRoot.mutable_folder()->CopyFrom(resp.root());
addFolderToTree(tempRoot, root);
emit treeRefreshed();
*/
}
RemoteDeckList_TreeWidget::RemoteDeckList_TreeWidget(AbstractClient *_client, QWidget *parent)
@ -300,19 +307,19 @@ RemoteDeckList_TreeModel::FileNode *RemoteDeckList_TreeWidget::getNodeById(int i
return treeModel->getRoot()->getNodeById(id);
}
void RemoteDeckList_TreeWidget::addFileToTree(DeckList_File *file, RemoteDeckList_TreeModel::DirectoryNode *parent)
void RemoteDeckList_TreeWidget::addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, RemoteDeckList_TreeModel::DirectoryNode *parent)
{
treeModel->addFileToTree(file, parent);
}
void RemoteDeckList_TreeWidget::addFolderToTree(DeckList_Directory *folder, RemoteDeckList_TreeModel::DirectoryNode *parent)
void RemoteDeckList_TreeWidget::addFolderToTree(const ServerInfo_DeckStorage_TreeItem &folder, RemoteDeckList_TreeModel::DirectoryNode *parent)
{
treeModel->addFolderToTree(folder, parent);
}
void RemoteDeckList_TreeWidget::addFolderToTree(const QString &name, RemoteDeckList_TreeModel::DirectoryNode *parent)
{
treeModel->addFolderToTree(name, QList<DeckList_TreeItem *>(), parent);
treeModel->addNamedFolderToTree(name, parent);
}
void RemoteDeckList_TreeWidget::removeNode(RemoteDeckList_TreeModel::Node *node)

View file

@ -8,9 +8,7 @@
class Response;
class AbstractClient;
class QSortFilterProxyModel;
class DeckList_File;
class DeckList_Directory;
class DeckList_TreeItem;
class ServerInfo_DeckStorage_TreeItem;
class RemoteDeckList_TreeModel : public QAbstractItemModel {
Q_OBJECT
@ -77,9 +75,9 @@ public:
Qt::ItemFlags flags(const QModelIndex &index) const;
DirectoryNode *getRoot() const { return root; }
void addFileToTree(DeckList_File *file, DirectoryNode *parent);
void addFolderToTree(DeckList_Directory *folder, DirectoryNode *parent);
void addFolderToTree(const QString &name, const QList<DeckList_TreeItem *> &folderItems, DirectoryNode *parent);
void addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, DirectoryNode *parent);
void addFolderToTree(const ServerInfo_DeckStorage_TreeItem &folder, DirectoryNode *parent);
DirectoryNode *addNamedFolderToTree(const QString &name, DirectoryNode *parent);
void removeNode(Node *node);
void refreshTree();
};
@ -94,8 +92,8 @@ public:
RemoteDeckList_TreeModel::Node *getCurrentItem() const;
RemoteDeckList_TreeModel::DirectoryNode *getNodeByPath(const QString &path) const;
RemoteDeckList_TreeModel::FileNode *getNodeById(int id) const;
void addFileToTree(DeckList_File *file, RemoteDeckList_TreeModel::DirectoryNode *parent);
void addFolderToTree(DeckList_Directory *folder, RemoteDeckList_TreeModel::DirectoryNode *parent);
void addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, RemoteDeckList_TreeModel::DirectoryNode *parent);
void addFolderToTree(const ServerInfo_DeckStorage_TreeItem &folder, RemoteDeckList_TreeModel::DirectoryNode *parent);
void addFolderToTree(const QString &name, RemoteDeckList_TreeModel::DirectoryNode *parent);
void removeNode(RemoteDeckList_TreeModel::Node *node);
void refreshTree();

View file

@ -18,6 +18,8 @@
#include "pending_command.h"
#include "pb/response.pb.h"
#include "pb/response_deck_download.pb.h"
#include "pb/response_deck_upload.pb.h"
#include "pb/command_deck_upload.pb.h"
#include "pb/command_deck_download.pb.h"
#include "pb/command_deck_new_dir.pb.h"
@ -169,19 +171,17 @@ void TabDeckStorage::actUpload()
cmd.set_deck_list(deck.writeToString_Native().toStdString());
PendingCommand *pend = client->prepareSessionCommand(cmd);
connect(pend, SIGNAL(finished(ProtocolResponse *)), this, SLOT(uploadFinished(ProtocolResponse *)));
connect(pend, SIGNAL(finished(const Response &)), this, SLOT(uploadFinished(const Response &)));
client->sendCommand(pend);
}
void TabDeckStorage::uploadFinished(const Response &r)
{
/* Response_DeckUpload *resp = qobject_cast<Response_DeckUpload *>(r);
if (!resp)
return;
const Response_DeckUpload &resp = r.GetExtension(Response_DeckUpload::ext);
const Command_DeckUpload &cmd = static_cast<const Command_DeckUpload &>(static_cast<PendingCommand *>(sender())->getCommandContainer().session_command(0).GetExtension(Command_DeckUpload::ext));
serverDirView->addFileToTree(resp->getFile(), serverDirView->getNodeByPath(QString::fromStdString(cmd.path())));
*/}
serverDirView->addFileToTree(resp.new_file(), serverDirView->getNodeByPath(QString::fromStdString(cmd.path())));
}
void TabDeckStorage::actOpenRemoteDeck()
{
@ -193,20 +193,18 @@ void TabDeckStorage::actOpenRemoteDeck()
cmd.set_deck_id(curRight->getId());
PendingCommand *pend = client->prepareSessionCommand(cmd);
connect(pend, SIGNAL(finished(ProtocolResponse *)), this, SLOT(openRemoteDeckFinished(ProtocolResponse *)));
connect(pend, SIGNAL(finished(const Response &)), this, SLOT(openRemoteDeckFinished(const Response &)));
client->sendCommand(pend);
}
void TabDeckStorage::openRemoteDeckFinished(const Response &r)
{
/* Response_DeckDownload *resp = qobject_cast<Response_DeckDownload *>(r);
if (!resp)
return;
const Response_DeckDownload &resp = r.GetExtension(Response_DeckDownload::ext);
WndDeckEditor *deckEditor = new WndDeckEditor;
deckEditor->setDeck(new DeckList(resp->getDeck()));
deckEditor->setDeck(new DeckList(QString::fromStdString(resp.deck())));
deckEditor->show();
*/}
}
void TabDeckStorage::actDownload()
{
@ -230,20 +228,20 @@ void TabDeckStorage::actDownload()
PendingCommand *pend = client->prepareSessionCommand(cmd);
pend->setExtraData(filePath);
connect(pend, SIGNAL(finished(ProtocolResponse *)), this, SLOT(downloadFinished(ProtocolResponse *)));
connect(pend, SIGNAL(finished(const Response &)), this, SLOT(downloadFinished(const Response &)));
client->sendCommand(pend);
}
void TabDeckStorage::downloadFinished(const Response &r)
{
/* Response_DeckDownload *resp = qobject_cast<Response_DeckDownload *>(r);
if (!resp)
return;
const Response_DeckDownload &resp = r.GetExtension(Response_DeckDownload::ext);
PendingCommand *pend = static_cast<PendingCommand *>(sender());
QString filePath = pend->getExtraData().toString();
resp->getDeck()->saveToFile(filePath, DeckList::CockatriceFormat);
*/}
DeckList deck(QString::fromStdString(resp.deck()));
deck.saveToFile(filePath, DeckList::CockatriceFormat);
}
void TabDeckStorage::actNewFolder()
{

View file

@ -72,8 +72,10 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
for (int j = 0; j < roomList->topLevelItemCount(); ++j) {
QTreeWidgetItem *twi = roomList->topLevelItem(j);
if (twi->data(0, Qt::UserRole).toInt() == room.room_id()) {
twi->setData(0, Qt::DisplayRole, QString::fromStdString(room.name()));
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
if (room.has_name())
twi->setData(0, Qt::DisplayRole, QString::fromStdString(room.name()));
if (room.has_description())
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
twi->setData(2, Qt::DisplayRole, room.player_count());
twi->setData(3, Qt::DisplayRole, room.game_count());
return;
@ -81,15 +83,18 @@ void RoomSelector::processListRoomsEvent(const Event_ListRooms &event)
}
QTreeWidgetItem *twi = new QTreeWidgetItem;
twi->setData(0, Qt::UserRole, room.room_id());
twi->setData(0, Qt::DisplayRole, QString::fromStdString(room.name()));
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
if (room.has_name())
twi->setData(0, Qt::DisplayRole, QString::fromStdString(room.name()));
if (room.has_description())
twi->setData(1, Qt::DisplayRole, QString::fromStdString(room.description()));
twi->setData(2, Qt::DisplayRole, room.player_count());
twi->setData(3, Qt::DisplayRole, room.game_count());
twi->setTextAlignment(2, Qt::AlignRight);
twi->setTextAlignment(3, Qt::AlignRight);
roomList->addTopLevelItem(twi);
if (room.auto_join())
joinRoom(room.room_id(), false);
if (room.has_auto_join())
if (room.auto_join())
joinRoom(room.room_id(), false);
}
}