[gnome-usage] process-list-box: Simplify ProcessListBox according to backend
- From: Petr Štětka <pstetka src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-usage] process-list-box: Simplify ProcessListBox according to backend
- Date: Wed, 19 Dec 2018 12:49:24 +0000 (UTC)
commit 9eba69a2f4b032d2226a61a5a3541586c80c9dc2
Author: Petr Štětka <pstetka redhat com>
Date: Sun May 20 14:41:07 2018 +0200
process-list-box: Simplify ProcessListBox according to backend
src/cpu-sub-view.vala | 2 +-
src/memory-sub-view.vala | 2 +-
src/process-list-box.vala | 136 +++++++++++++++-------------------------------
3 files changed, 45 insertions(+), 95 deletions(-)
---
diff --git a/src/cpu-sub-view.vala b/src/cpu-sub-view.vala
index be6941a..23516dc 100644
--- a/src/cpu-sub-view.vala
+++ b/src/cpu-sub-view.vala
@@ -78,7 +78,7 @@ namespace Usage
public void search_in_processes(string text)
{
- process_list_box.search(text);
+ process_list_box.search_text = text;
}
}
}
diff --git a/src/memory-sub-view.vala b/src/memory-sub-view.vala
index fb73735..2336df8 100644
--- a/src/memory-sub-view.vala
+++ b/src/memory-sub-view.vala
@@ -74,7 +74,7 @@ namespace Usage
public void search_in_processes(string text)
{
- process_list_box.search(text);
+ process_list_box.search_text = text;
}
}
}
diff --git a/src/process-list-box.vala b/src/process-list-box.vala
index 41ac03e..6692138 100644
--- a/src/process-list-box.vala
+++ b/src/process-list-box.vala
@@ -28,48 +28,31 @@ namespace Usage
public class ProcessListBox : Gtk.ListBox
{
public bool empty { get; set; default = true; }
+ public string search_text { get; set; default = ""; }
- ListStore model;
- ProcessRow? opened_row = null;
- string focused_row_cmdline;
- ProcessListBoxType type;
- string search_text = "";
+ private const double APP_CPU_MIN_LOAD_LIMIT = 1;
+ private const double APP_MEM_MIN_USAGE_LIMIT = 0;
+ private ListStore model;
+ private ProcessListBoxType type;
public ProcessListBox(ProcessListBoxType type)
{
- this.type = type;
set_selection_mode (Gtk.SelectionMode.NONE);
set_header_func (update_header);
- row_activated.connect((row) => {
- var process_row = (ProcessRow) row;
- if(opened_row != null)
- opened_row.activate();
+ this.type = type;
+ model = new ListStore(typeof(AppItem));
+ bind_model(model, on_row_created);
- if(opened_row != process_row)
- {
- process_row.activate();
- if(process_row.process.sub_processes != null)
- opened_row = process_row;
- else
- opened_row = null;
- }
- else
- opened_row = null;
+ row_activated.connect((row) => {
+ var process_row = (ProcessRow) row;
+ process_row.activate();
});
- set_focus_child.connect((child) =>
- {
- if(child != null)
- {
- focused_row_cmdline = ((ProcessRow) child).process.cmdline;
- //GLib.stdout.printf("focused: " + focused_row_cmdline+ "\n");
- }
+ this.notify["search-text"].connect ((sender, property) => {
+ update();
});
- model = new ListStore(typeof(Process));
- bind_model(model, on_row_created);
-
var settings = Settings.get_default();
Timeout.add(settings.list_update_interval_UI, update);
@@ -78,96 +61,63 @@ namespace Usage
public bool update()
{
- CompareDataFunc<Process> processcmp = (a, b) => {
- Process p_a = (Process) a;
- Process p_b = (Process) b;
+ model.remove_all();
- switch(type)
- {
+ CompareDataFunc<AppItem> app_cmp = (a, b) => {
+ AppItem app_a = (AppItem) a;
+ AppItem app_b = (AppItem) b;
+
+ switch(type) {
default:
case ProcessListBoxType.PROCESSOR:
- return (int) ((uint64) (p_a.cpu_load < p_b.cpu_load) - (uint64) (p_a.cpu_load >
p_b.cpu_load));
+ return (int) ((uint64) (app_a.cpu_load < app_b.cpu_load) - (uint64) (app_a.cpu_load
app_b.cpu_load));
case ProcessListBoxType.MEMORY:
- return (int) ((uint64) (p_a.mem_usage < p_b.mem_usage) - (uint64) (p_a.mem_usage >
p_b.mem_usage));
+ return (int) ((uint64) (app_a.mem_usage < app_b.mem_usage) - (uint64)
(app_a.mem_usage > app_b.mem_usage));
}
};
- bind_model(null, null);
- model.remove_all();
-
- SystemMonitor system_monitor = SystemMonitor.get_default();
- if(search_text == "")
- {
+ var system_monitor = SystemMonitor.get_default();
+ if(search_text == "") {
switch(type)
{
default:
case ProcessListBoxType.PROCESSOR:
- foreach(unowned Process process in system_monitor.get_cpu_processes())
- model.insert_sorted(process, processcmp);
+ foreach(unowned AppItem app in system_monitor.get_apps()) {
+ if(app.cpu_load > APP_CPU_MIN_LOAD_LIMIT)
+ model.insert_sorted(app, app_cmp);
+ }
break;
case ProcessListBoxType.MEMORY:
- foreach(unowned Process process in system_monitor.get_ram_processes())
- model.insert_sorted(process, processcmp);
+ foreach(unowned AppItem app in system_monitor.get_apps())
+ if(app.mem_usage > APP_MEM_MIN_USAGE_LIMIT)
+ model.insert_sorted(app, app_cmp);
break;
}
}
- else
- {
- foreach(unowned Process process in system_monitor.get_ram_processes()) //because ram
contains all processes
- {
- if(process.display_name.down().contains(search_text.down()) ||
process.cmdline.down().contains(search_text.down()))
- model.insert_sorted(process, processcmp);
+ else {
+ foreach(unowned AppItem app in system_monitor.get_apps()) {
+ if(app.display_name.down().contains(search_text.down()) ||
app.representative_cmdline.down().contains(search_text.down()))
+ model.insert_sorted(app, app_cmp);
}
}
empty = (model.get_n_items() == 0);
-
- bind_model(model, on_row_created);
return true;
}
- public void search(string text)
- {
- search_text = text;
- update();
+ private Gtk.Widget on_row_created (Object item) {
+ return new ProcessRow((AppItem) item, type);
}
- private Gtk.Widget on_row_created (Object item)
- {
- Process process = (Process) item;
- bool opened = false;
-
- if(opened_row != null)
- if(process.cmdline == opened_row.process.cmdline)
- opened = true;
-
- var row = new ProcessRow(process, type, opened);
- if(opened)
- opened_row = row;
-
- if(focused_row_cmdline != null)
- {
- if(process.cmdline == focused_row_cmdline)
- {
- //row.grab_focus(); TODO not working
- //GLib.stdout.printf("grab focus for: " + focused_row_cmdline+ "\n");
- }
- }
-
- return row;
- }
-
- private void update_header(Gtk.ListBoxRow row, Gtk.ListBoxRow? before_row)
- {
- if(before_row == null)
- row.set_header(null);
- else
- {
+ private void update_header(Gtk.ListBoxRow row, Gtk.ListBoxRow? before_row) {
+ if(before_row == null)
+ row.set_header(null);
+ else {
var separator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);
separator.get_style_context().add_class("list");
- separator.show();
- row.set_header(separator);
- }
+ separator.show();
+ row.set_header(separator);
+ }
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]