Skip to content

Commit d845467

Browse files
committed
Check decrypt contents by default and add decryption progress indicator
1 parent c8ba325 commit d845467

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/GameList.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ GameList::GameList(Glib::RefPtr<Gtk::Builder> builder, const TitleEntry *infos)
6262

6363
builder->get_widget("decryptContentsButton", decryptContentsButton);
6464
decryptContentsButton->signal_toggled().connect_notify(sigc::bind(sigc::mem_fun(*this, &GameList::on_decrypt_selected), decryptContentsButton));
65+
decryptContentsButton->set_active(TRUE);
6566

6667
builder->get_widget("gameTree", treeView);
6768
treeView->signal_row_activated().connect(sigc::mem_fun(*this, &GameList::on_gamelist_row_activated));

src/cdecrypt/cdecrypt.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "aes.h"
3131
#include "sha1.h"
3232

33+
#include <gtk/gtk.h>
3334
#include <cdecrypt/cdecrypt.h>
3435

3536
#define MAX_ENTRIES 90000
@@ -157,6 +158,34 @@ struct FEntry
157158
uint16_t ContentID;
158159
};
159160

161+
static GtkWidget *progress_bar;
162+
static GtkWidget *window;
163+
164+
static char currentFile[255] = "None";
165+
166+
static void progressDialog() {
167+
gtk_init(NULL, NULL);
168+
169+
//Create window
170+
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
171+
gtk_window_set_title(GTK_WINDOW(window), "Download Progress");
172+
gtk_window_set_default_size(GTK_WINDOW(window), 300, 50);
173+
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
174+
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
175+
176+
//Create progress bar
177+
progress_bar = gtk_progress_bar_new();
178+
gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(progress_bar), TRUE);
179+
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress_bar), "Downloading");
180+
181+
//Create container for the window
182+
GtkWidget *main_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
183+
gtk_container_add(GTK_CONTAINER(window), main_box);
184+
gtk_box_pack_start(GTK_BOX(main_box), progress_bar, FALSE, FALSE, 0);
185+
186+
gtk_widget_show_all(window);
187+
}
188+
160189
static bool file_dump(const char* path, void* buf, size_t len)
161190
{
162191
assert(buf != NULL);
@@ -513,7 +542,13 @@ int cdecrypt(int argc, char** argv)
513542

514543
uint32_t level = 0;
515544

545+
progressDialog();
516546
for (uint32_t i = 1; i < entries; i++) {
547+
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress_bar), (double)i / (double)entries);
548+
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress_bar), "Decrypting...");
549+
// force redraw
550+
while (gtk_events_pending())
551+
gtk_main_iteration();
517552
if (level > 0) {
518553
while ((level >= 1) && (l_entry[level - 1] == i))
519554
level--;
@@ -578,6 +613,7 @@ int cdecrypt(int argc, char** argv)
578613
r = EXIT_SUCCESS;
579614

580615
out:
616+
gtk_widget_destroy(GTK_WIDGET(window));
581617
free(tmd);
582618
free(tik);
583619
free(cnt);

0 commit comments

Comments
 (0)