mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
implement history action buttons
This commit is contained in:
parent
40973fd4d7
commit
3123bd14c3
2 changed files with 128 additions and 64 deletions
|
|
@ -160,10 +160,10 @@
|
||||||
"visible":true,
|
"visible":true,
|
||||||
"label":"Open"
|
"label":"Open"
|
||||||
},
|
},
|
||||||
"clear":
|
"delete":
|
||||||
{
|
{
|
||||||
"visible":true,
|
"visible":true,
|
||||||
"label":"Clear"
|
"label":"Delete"
|
||||||
},
|
},
|
||||||
"search":
|
"search":
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class History
|
||||||
$body;
|
$body;
|
||||||
|
|
||||||
public \GtkButton $open,
|
public \GtkButton $open,
|
||||||
$clear,
|
$delete,
|
||||||
$search;
|
$search;
|
||||||
|
|
||||||
public \GtkEntry $filter;
|
public \GtkEntry $filter;
|
||||||
|
|
@ -67,16 +67,6 @@ class History
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->open->connect(
|
|
||||||
'clicked',
|
|
||||||
function ()
|
|
||||||
{
|
|
||||||
// @TODO
|
|
||||||
|
|
||||||
$this->refresh();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->config->header->button->open->visible)
|
if ($this->config->header->button->open->visible)
|
||||||
{
|
{
|
||||||
$this->header->add(
|
$this->header->add(
|
||||||
|
|
@ -84,29 +74,19 @@ class History
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear button
|
// Delete button
|
||||||
$this->clear = \GtkButton::new_with_label(
|
$this->delete = \GtkButton::new_with_label(
|
||||||
$this->config->header->button->clear->label
|
$this->config->header->button->delete->label
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->clear->set_sensitive(
|
$this->delete->set_sensitive(
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->clear->connect(
|
if ($this->config->header->button->delete->visible)
|
||||||
'clicked',
|
|
||||||
function ()
|
|
||||||
{
|
|
||||||
// @TODO
|
|
||||||
|
|
||||||
$this->refresh();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->config->header->button->clear->visible)
|
|
||||||
{
|
{
|
||||||
$this->header->add(
|
$this->header->add(
|
||||||
$this->clear
|
$this->delete
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -117,16 +97,6 @@ class History
|
||||||
$this->config->header->filter->placeholder
|
$this->config->header->filter->placeholder
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->filter->connect(
|
|
||||||
'activate',
|
|
||||||
function ($entry)
|
|
||||||
{
|
|
||||||
$this->refresh(
|
|
||||||
$entry->get_text()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->header->pack_start(
|
$this->header->pack_start(
|
||||||
$this->filter,
|
$this->filter,
|
||||||
true,
|
true,
|
||||||
|
|
@ -139,16 +109,6 @@ class History
|
||||||
$this->config->header->button->search->label
|
$this->config->header->button->search->label
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->search->connect(
|
|
||||||
'clicked',
|
|
||||||
function ()
|
|
||||||
{
|
|
||||||
$this->refresh(
|
|
||||||
$this->filter->get_text()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->config->header->button->search->visible)
|
if ($this->config->header->button->search->visible)
|
||||||
{
|
{
|
||||||
$this->header->add(
|
$this->header->add(
|
||||||
|
|
@ -164,7 +124,7 @@ class History
|
||||||
'Time',
|
'Time',
|
||||||
new \GtkCellRendererText(),
|
new \GtkCellRendererText(),
|
||||||
'text',
|
'text',
|
||||||
0
|
1
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -173,7 +133,7 @@ class History
|
||||||
'Title',
|
'Title',
|
||||||
new \GtkCellRendererText(),
|
new \GtkCellRendererText(),
|
||||||
'text',
|
'text',
|
||||||
1
|
2
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -182,12 +142,13 @@ class History
|
||||||
'URL',
|
'URL',
|
||||||
new \GtkCellRendererText(),
|
new \GtkCellRendererText(),
|
||||||
'text',
|
'text',
|
||||||
2
|
3
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Init list storage
|
// Init list storage
|
||||||
$this->list = new \GtkListStore(
|
$this->list = new \GtkListStore(
|
||||||
|
\GObject::TYPE_INT,
|
||||||
\GObject::TYPE_STRING,
|
\GObject::TYPE_STRING,
|
||||||
\GObject::TYPE_STRING,
|
\GObject::TYPE_STRING,
|
||||||
\GObject::TYPE_STRING
|
\GObject::TYPE_STRING
|
||||||
|
|
@ -249,25 +210,98 @@ class History
|
||||||
'row-activated',
|
'row-activated',
|
||||||
function ($tree)
|
function ($tree)
|
||||||
{
|
{
|
||||||
list($list, $row) = $tree->get_selection()
|
if ($url = $this->getSelectedColumn(3, $tree))
|
||||||
->get_selected();
|
{
|
||||||
|
$page = $this->app->blankPage();
|
||||||
|
|
||||||
$url = $list->get_value(
|
$page->open(
|
||||||
$row, 2
|
$url
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->treeview->connect(
|
||||||
|
'cursor-changed',
|
||||||
|
function ($tree)
|
||||||
|
{
|
||||||
|
$url = $this->getSelectedColumn(
|
||||||
|
3, $tree
|
||||||
);
|
);
|
||||||
|
|
||||||
$page = $this->app->blankPage();
|
$this->open->set_sensitive(
|
||||||
|
(bool) $url
|
||||||
|
);
|
||||||
|
|
||||||
$page->open(
|
$this->delete->set_sensitive(
|
||||||
$url
|
(bool) $url
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->filter->connect(
|
||||||
|
'activate',
|
||||||
|
function ($entry)
|
||||||
|
{
|
||||||
|
$this->refresh(
|
||||||
|
$entry->get_text()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($this->config->header->button->open->visible)
|
||||||
|
{
|
||||||
|
$this->open->connect(
|
||||||
|
'clicked',
|
||||||
|
function ()
|
||||||
|
{
|
||||||
|
if ($url = $this->getSelectedColumn(3))
|
||||||
|
{
|
||||||
|
$page = $this->app->blankPage();
|
||||||
|
|
||||||
|
$page->open(
|
||||||
|
$url
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->config->header->button->delete->visible)
|
||||||
|
{
|
||||||
|
$this->delete->connect(
|
||||||
|
'clicked',
|
||||||
|
function ()
|
||||||
|
{
|
||||||
|
if ($id = $this->getSelectedColumn(0))
|
||||||
|
{
|
||||||
|
$this->app->database->deleteHistory(
|
||||||
|
$id
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->config->header->button->search->visible)
|
||||||
|
{
|
||||||
|
$this->search->connect(
|
||||||
|
'clicked',
|
||||||
|
function ()
|
||||||
|
{
|
||||||
|
$this->refresh(
|
||||||
|
$this->filter->get_text()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function refresh(
|
public function refresh(): void
|
||||||
string $filter = ''
|
|
||||||
): void
|
|
||||||
{
|
{
|
||||||
// Reset previous state
|
// Reset previous state
|
||||||
$this->list->clear();
|
$this->list->clear();
|
||||||
|
|
@ -277,15 +311,16 @@ class History
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->clear->set_sensitive(
|
$this->delete->set_sensitive(
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
// Build history list from database records
|
// Build history list from database records
|
||||||
foreach ($this->app->database->getHistory($filter) as $record)
|
foreach ($this->app->database->getHistory($this->filter->get_text()) as $record)
|
||||||
{
|
{
|
||||||
$this->list->append(
|
$this->list->append(
|
||||||
[
|
[
|
||||||
|
$record->id,
|
||||||
date(
|
date(
|
||||||
$this->config->time->format,
|
$this->config->time->format,
|
||||||
$record->time
|
$record->time
|
||||||
|
|
@ -295,5 +330,34 @@ class History
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update tree
|
||||||
|
$this->treeview->show_all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSelectedColumn(
|
||||||
|
int $column,
|
||||||
|
\GtkTreeView $treeview = null
|
||||||
|
): null|int|string
|
||||||
|
{
|
||||||
|
if (is_null($treeview))
|
||||||
|
{
|
||||||
|
$treeview = $this->treeview;
|
||||||
|
}
|
||||||
|
|
||||||
|
list(
|
||||||
|
$list,
|
||||||
|
$row
|
||||||
|
) = $treeview->get_selection()->get_selected();
|
||||||
|
|
||||||
|
if ($list && $row)
|
||||||
|
{
|
||||||
|
if ($value = $list->get_value($row, $column))
|
||||||
|
{
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue