99
1010#include " application.h"
1111#include " cloud_auth_token_manager_dialog.h"
12+ #include " cloud_file_quota_dialog.h"
1213#include " cloud_user_add_dialog.h"
1314#include " cloud_user_groups_dialog.h"
1415#include " cloud_users_tree.h"
@@ -59,6 +60,9 @@ CloudUsersTree::CloudUsersTree(QWidget *parent)
5960 QAction *editGroupsAction = new QAction (tr (" Edit groups" ));
6061 editMenu->addAction (editGroupsAction);
6162
63+ QAction *editFileQuotasAction = new QAction (tr (" Edit file quotas" ));
64+ editMenu->addAction (editFileQuotasAction);
65+
6266 QAction *editTokensAction = new QAction (tr (" Edit tokens" ));
6367 editMenu->addAction (editTokensAction);
6468
@@ -88,6 +92,7 @@ CloudUsersTree::CloudUsersTree(QWidget *parent)
8892 QObject::connect (this ->refreshButton ,&QPushButton::clicked,this ,&CloudUsersTree::onRefreshButtonClicked);
8993
9094 QObject::connect (editGroupsAction,&QAction::triggered,this ,&CloudUsersTree::onEditGroupsButtonTriggered);
95+ QObject::connect (editFileQuotasAction,&QAction::triggered,this ,&CloudUsersTree::onEditFileQuotasButtonTriggered);
9196 QObject::connect (editTokensAction,&QAction::triggered,this ,&CloudUsersTree::onEditTokensButtonTriggered);
9297
9398 const RApplicationSettings *applicationSettings = qobject_cast<Application*>(Application::instance ())->getApplicationSettings ();
@@ -134,15 +139,21 @@ void CloudUsersTree::updateTreeItem(QTreeWidgetItem *listItem, const RUserInfo &
134139{
135140 listItem->setText (ColumnName,userInfo.getName ());
136141 listItem->setText (ColumnGroups,userInfo.getGroupNames ().join (' ,' ));
142+ listItem->setData (ColumnStoreSizeQuota,Qt::DisplayRole,userInfo.getFileQuota ().getStoreSize ());
143+ listItem->setData (ColumnFileSizeQuota,Qt::DisplayRole,userInfo.getFileQuota ().getFileSize ());
144+ listItem->setData (ColumnFileCountQuota,Qt::DisplayRole,userInfo.getFileQuota ().getFileCount ());
137145}
138146
139147QString CloudUsersTree::getColumnName (ColumnType columnType)
140148{
141149 switch (columnType)
142150 {
143- case ColumnName: return tr (" Name" );
144- case ColumnGroups: return tr (" Groups" );
145- default : return QString ();
151+ case ColumnName: return tr (" Name" );
152+ case ColumnGroups: return tr (" Groups" );
153+ case ColumnStoreSizeQuota: return tr (" Store size" );
154+ case ColumnFileSizeQuota: return tr (" File size" );
155+ case ColumnFileCountQuota: return tr (" File count" );
156+ default : return QString ();
146157 }
147158}
148159
@@ -266,6 +277,11 @@ void CloudUsersTree::onEditGroupsButtonTriggered()
266277 RUserInfo userInfo;
267278 userInfo.setName (selectedItem->text (ColumnName));
268279 userInfo.setGroupNames (selectedItem->text (ColumnGroups).split (' ,' ));
280+ RFileQuota fileQuota;
281+ fileQuota.setStoreSize (selectedItem->data (ColumnStoreSizeQuota,Qt::DisplayRole).toLongLong ());
282+ fileQuota.setFileSize (selectedItem->data (ColumnFileSizeQuota,Qt::DisplayRole).toLongLong ());
283+ fileQuota.setFileCount (selectedItem->data (ColumnFileCountQuota,Qt::DisplayRole).toLongLong ());
284+ userInfo.setFileQuota (fileQuota);
269285
270286 CloudUserGroupsDialog userGroupsDialog (userInfo,this ->groupInfoList ,this );
271287
@@ -285,6 +301,38 @@ void CloudUsersTree::onEditGroupsButtonTriggered()
285301 }
286302}
287303
304+ void CloudUsersTree::onEditFileQuotasButtonTriggered ()
305+ {
306+ QList<QTreeWidgetItem*> selectedItems = this ->usersTree ->selectedItems ();
307+ for (QTreeWidgetItem *selectedItem : std::as_const (selectedItems))
308+ {
309+ RUserInfo userInfo;
310+ userInfo.setName (selectedItem->text (ColumnName));
311+ userInfo.setGroupNames (selectedItem->text (ColumnGroups).split (' ,' ));
312+ RFileQuota fileQuota;
313+ fileQuota.setStoreSize (selectedItem->data (ColumnStoreSizeQuota,Qt::DisplayRole).toLongLong ());
314+ fileQuota.setFileSize (selectedItem->data (ColumnFileSizeQuota,Qt::DisplayRole).toLongLong ());
315+ fileQuota.setFileCount (selectedItem->data (ColumnFileCountQuota,Qt::DisplayRole).toLongLong ());
316+ userInfo.setFileQuota (fileQuota);
317+
318+ CloudFileQuotaDialog dialog (fileQuota,this );
319+
320+ if (dialog.exec () == RMessageBox::Accepted)
321+ {
322+ try
323+ {
324+ userInfo.setFileQuota (dialog.getFileQuota ());
325+ this ->cloudClient ->requestUserUpdate (userInfo.getName (),userInfo);
326+ }
327+ catch (const RError &rError)
328+ {
329+ RLogger::error (" Failed to request to update user on Cloud. %s\n " ,rError.getMessage ().toUtf8 ().constData ());
330+ RMessageBox::critical (this ,tr (" Updating user failed" ),tr (" Updating user on Cloud has failed." ));
331+ }
332+ }
333+ }
334+ }
335+
288336void CloudUsersTree::onEditTokensButtonTriggered ()
289337{
290338 QList<QTreeWidgetItem*> selectedItems = this ->usersTree ->selectedItems ();
0 commit comments