Skip to content

Commit

Permalink
listing available users
Browse files Browse the repository at this point in the history
  • Loading branch information
victorwads committed Jun 21, 2024
1 parent 0de2a09 commit a1cb1c6
Show file tree
Hide file tree
Showing 5 changed files with 151 additions and 49 deletions.
163 changes: 116 additions & 47 deletions content/Tabs/Users/Users.qml
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,17 @@ RowLayout {
function onUserInfoChanged() {
user_name.text = app.deviceManager.selectedUserName;
user_id.text = app.deviceManager.selectedUserId;
user_running.text = app.deviceManager.selectedUserIsLogged
? qsTr("Yes")
: qsTr("No");
user_running.text = app.deviceManager.selectedUserIsLogged ? qsTr("Yes") : qsTr("No");
bar.currentIndex = 0;
onUserAppsListChanged();
}

function onUserAppsListChanged() {
installed_apps.text = app.deviceManager.selectedUsersInstalledApps > -1
installed_apps_number.text = app.deviceManager.selectedUsersInstalledApps > -1
? app.deviceManager.selectedUsersInstalledApps
: qsTr("loading...");
installed_tab.text = qsTr("Installed (") + app.deviceManager.selectedUsersInstalledApps + qsTr(")");
available_tab.text = qsTr("Available (") + app.deviceManager.avaliableAppsCount + qsTr(")");
}

target: app.deviceManager
Expand Down Expand Up @@ -103,63 +104,131 @@ RowLayout {
}

Label {
id: installed_apps
id: installed_apps_number
Kirigami.FormData.label: qsTr("Installed Apps:")
}

}
}
}
}
}

GridView {
id: apps_info
ColumnLayout {
StackLayout {
currentIndex: bar.currentIndex

Layout.fillHeight: true
Layout.fillWidth: true
snapMode: GridView.SnapToRow
clip: true
cellWidth: 220
cellHeight: 180
model: app.deviceManager.userAppsListModel()

Dialog {
id: confirm_dialog

property string packageName: ""
property int index: -1

anchors.centerIn: parent
title: "Uninstall " + packageName
standardButtons: Dialog.Ok | Dialog.Cancel
onAccepted: {
apps_info.model.remove(index);
app.deviceManager.uninstallApkQml(packageName);
//anchors.fill: parent

GridView {
id: installed_apps

Layout.fillHeight: true
Layout.fillWidth: true
snapMode: GridView.SnapToRow
clip: true
cellWidth: 220
cellHeight: 180
model: app.deviceManager.userAppsListModel()

Dialog {
id: remove_confirm_dialog

property string packageName: ""
property int index: -1

anchors.centerIn: parent
title: "Uninstall " + packageName
standardButtons: Dialog.Ok | Dialog.Cancel
onAccepted: {
installed_apps.model.remove(index);
app.deviceManager.uninstallApkQml(packageName);
}
}

ScrollBar.vertical: ScrollBar {
visible: true
}

delegate: UsersInstalledDelegate {
width: installed_apps.cellWidth - 10
height: installed_apps.cellHeight - 10
name: model.package_name
thumbnailPath: {
let path = app.vrp.getGameThumbnailPath(model.package_name);
if (path === "")
return "qrc:/qt/qml/content/Image/matrix.png";
else
return "file://" + path;
}
// onUninstallButtonClicked: {
// confirm_dialog.packageName = model.package_name;
// confirm_dialog.index = index;
// confirm_dialog.open();
// }
}
}
}
GridView {
id: avaliable_apps

ScrollBar.vertical: ScrollBar {
visible: true
}
Layout.fillHeight: true
Layout.fillWidth: true
snapMode: GridView.SnapToRow
clip: true
cellWidth: 220
cellHeight: 180
model: app.deviceManager.userAppsAvailableListModel()

Dialog {
id: confirm_dialog

property string packageName: ""
property int index: -1

anchors.centerIn: parent
title: "Uninstall " + packageName
standardButtons: Dialog.Ok | Dialog.Cancel
onAccepted: {
avaliable_apps.model.remove(index);
app.deviceManager.uninstallApkQml(packageName);
}
}

ScrollBar.vertical: ScrollBar {
visible: true
}

delegate: UsersInstalledDelegate {
width: apps_info.cellWidth - 10
height: apps_info.cellHeight - 10
name: model.package_name
thumbnailPath: {
let path = app.vrp.getGameThumbnailPath(model.package_name);
if (path === "")
return "qrc:/qt/qml/content/Image/matrix.png";
else
return "file://" + path;
delegate: UsersToAddDelegate {
width: avaliable_apps.cellWidth - 10
height: avaliable_apps.cellHeight - 10
name: model.package_name
thumbnailPath: {
let path = app.vrp.getGameThumbnailPath(model.package_name);
if (path === "")
return "qrc:/qt/qml/content/Image/matrix.png";
else
return "file://" + path;
}
// onUninstallButtonClicked: {
// confirm_dialog.packageName = model.package_name;
// confirm_dialog.index = index;
// confirm_dialog.open();
// }
}
}
// onUninstallButtonClicked: {
// confirm_dialog.packageName = model.package_name;
// confirm_dialog.index = index;
// confirm_dialog.open();
// }
}
TabBar {
id: bar
Layout.fillWidth: true

TabButton {
id: installed_tab
text: qsTr("Installed")
}

TabButton {
id: available_tab
text: qsTr("Available")
}
}
}
}
2 changes: 1 addition & 1 deletion content/Tabs/Users/UsersInstalledDelegate.qml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Kirigami.Card {

footer: Button {
id: action_button
icon.name: "uninstall"
icon.name: "delete"
text: qsTr("Remove from user")
enabled: false
onClicked: {
Expand Down
2 changes: 1 addition & 1 deletion content/Tabs/Users/UsersToAddDelegate.qml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Kirigami.Card {
footer: Button {
id: action_button
icon.name: "install"
text: qsTr("Remove from user")
text: qsTr("Add to User")
onClicked: {
addButtonClicked();
}
Expand Down
20 changes: 20 additions & 0 deletions src/device_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,26 @@ QCoro::Task<void> DeviceManager::listPackagesForUser()
}
selected_user_->installedApps = user_apps_list_model_.size();

updateAvailableAppsList();
emit userAppsListChanged();
co_return;
}

QCoro::Task<void> DeviceManager::updateAvailableAppsList() {
user_apps_available_list_model_.clear();

QSet<QString> installedAppsSet;

// Adiciona todos os pacotes instalados ao conjunto
for (size_t i = 0; i < user_apps_list_model_.size(); ++i) {
installedAppsSet.insert(user_apps_list_model_[i].package_name);
}

// Adiciona todos os pacotes disponíveis, exceto os já instalados
for (size_t i = 0; i < app_list_model_.size(); ++i) {
if (!installedAppsSet.contains(app_list_model_[i].package_name)) {
user_apps_available_list_model_.append(app_list_model_[i]);
}
}
co_return;
}
13 changes: 13 additions & 0 deletions src/device_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class DeviceManager : public QObject
Q_PROPERTY(QString selectedUserId READ selectedUserId NOTIFY userInfoChanged)
Q_PROPERTY(bool selectedUserIsLogged READ selectedUserIsLogged NOTIFY userInfoChanged)
Q_PROPERTY(int selectedUsersInstalledApps READ selectedUsersInstalledApps NOTIFY userInfoChanged)
Q_PROPERTY(int avaliableAppsCount READ avaliableAppsCount)
Q_PROPERTY(QString runningUserName READ runningUserName NOTIFY userInfoChanged)
public:
explicit DeviceManager(QObject *parent = nullptr);
Expand Down Expand Up @@ -91,6 +92,11 @@ class DeviceManager : public QObject
return &user_apps_list_model_;
}

Q_INVOKABLE GameInfoModel *userAppsAvailableListModel()
{
return &user_apps_available_list_model_;
}

Q_INVOKABLE QCoro::Task<void> updateSerials();
Q_INVOKABLE void updateDeviceInfo();
Q_INVOKABLE QCoro::Task<void> updateDeviceName();
Expand All @@ -106,6 +112,7 @@ class DeviceManager : public QObject
Q_INVOKABLE QCoro::Task<void> updateUsers();
Q_INVOKABLE QCoro::Task<void> selectUser(int index);
Q_INVOKABLE QCoro::Task<void> listPackagesForUser();
Q_INVOKABLE QCoro::Task<void> updateAvailableAppsList();

Q_INVOKABLE QString selectedUserName() const
{
Expand All @@ -127,6 +134,11 @@ class DeviceManager : public QObject
return selected_user_ ? selected_user_->installedApps : -1;
}

Q_INVOKABLE int avaliableAppsCount() const
{
return user_apps_available_list_model_.size();
}

Q_INVOKABLE QString runningUserName() const
{
return running_user_name_;
Expand Down Expand Up @@ -315,6 +327,7 @@ class DeviceManager : public QObject
QStringList devices_list_;
GameInfoModel app_list_model_;
GameInfoModel user_apps_list_model_;
GameInfoModel user_apps_available_list_model_;
QTimer auto_update_timer_;
QString connected_device_;
QString device_name_;
Expand Down

0 comments on commit a1cb1c6

Please sign in to comment.