* src/data.c (data_delete_manga): New function, deletes a manga and
its associated volumes.
(data_update_manga): Extra free.
* src/eom-detail-window.c (add_menu): Add a "Delete" button to the
menu.
(on_delete): New function. Shows a confirmation dialog and if the
user pressed "Ok" tries to delete the manga and close the window.
* src/eom-main-window.c (on_row_activated): Connect to the `hide'
signal instead of the `delete-event' signal. I couldn't find how te
emit my own `delete-event' signal, then I found that hide works both
when I close a window and when the window manager does it.
* src/data.c (data_update_manga): When updating, set `current_qty' to
the lesser of `current_qty' and `total_qty' so that current will
never exceed total. If the update went well remove any volumes that
have numbers greater than the `total_qty'.
* src/eom-detail-window.c (eom_detail_window_load): Get to upper bound
of rows, if I need 1.5 rows I actually need 2 rows, what was I
thinking? Clear both tables of children before filling them up
again.
(cb_destroy): New function. Just calls destroy in `widget', but
`gtk_widget_destroy' doesn't seem like a valid `GtkCallback'.
(on_volume_toggled): When adding a volume fails, revert one from
`current_qty'. Don't mess with `self->manga->current_qty', just
reset the manga id, otherwise we will know that there should be one
more or less volume, but won't show it in the manga's volumes
collection.
* src/eom-detail-window.c (eom_detail_window_load): If the currently
selected manga's `total_qty' is `0', take, for viewing/editing
purposes, the manga's `current_qty' + `1' instead.
(on_volume_toggled): If the current manga's `total_qty' is `0'
reload the screen after toggling a manga as collected.
* src/data.c (data_get_unread_manga): New function. Gets any manga
that have unread volumes.
(data_get_volumes_for_manga): Default `volumes' to `NULL' to make
sure we don't get garbage by mistake.
* src/eom-main-window.c: Add new enum. The filter states
that the main screen has.
(eom_main_window_load): Get a list of unread manga if the window's
state indecates we're looking for them.
(add_menu): Add read filter button, shows only unread manga.
These should make it easier to work with numbers.
* src/eom-new-item-dialog.c (change): New function. Callback for the
`+' and `-' buttons, either adds or subtracts one from the quantity
field.
(eom_new_item_dialog_init): Add `+' and `-' buttons after quantity
entry.
The title and total numbers can now be changed.
* src/data.c (data_add_manga): Change `name' to `const gchar*', we're
not changing it.
(data_update_manga): New function, updates a manga's information.
* src/eom-detail-window.c (eom_detail_window_load): New function,
prepares the tables to show the right data.
(add_menu): New function, adds a menu to the window.
(eom_detail_window_init): Call `add_menu' and prepare the other
widgets for showing.
(on_edit): New function, opens an edit dialog and reloads the screen
afterwards.
(set_manga_id): Move data filling to `eom_detail_window_load' and
widget preparation to `eom_detail_window_init' and call
`eom_detail_window_load'.
* src/eom-detail-window.h (EomDetailWindow): Add `ctable' and `rtable'
members, these are the tables that show the data.
* src/eom-main-window.c (on_new): No need to save and copy the name of
a manga, just destroy the widget later and destroy it always.
* src/eom-new-item-dialog.c (eom_new_item_dialog_class_init): Add
write-only `manga-id' property.
(EOM_NEW_PROP_MID): New enum.
(finalize): New function. Free the associated manga.
(get_property): New function. Get a property, has no properties to
get for now.
(set_manga_id): New function. Show a manga's information in the
entries.
(set_property): New function. Set a property. Calls `set_manga_id'
for the `manga-id' property.
* src/eom-new-item-dialog.h (EomNewItemDialog): Add a `Manga' as
member.
Makes it look ugly.
* src/eom-detail-window.c (on_volume_toggled): Remove unused variable
`txt'.
(set_manga_id): Remove unused variable `bbox'. Change the `expand'
and `fill' arguments to `gtk_box_pack_start' to `FALSE' for both
tables.
First collected volumes, then read volumes.
* src/eom-edit-window.c (COLUMNS): New constant, the number of columns
to show in the table.
(create_volume_button): New function. Creates a button that
represent the state of a volume.
(eom_edit_window_init): Don't make the box with volumes force all
widgets to be the same size.
(set_manga_id): Show labels above each group of volumes, this way
nobody has to guess on what they mean.
* src/eom-main-window.c (eom_main_window_new): Set the `state'
variable to 0 the first time around.
(eom_main_window_load): Remove the `manga' parameter. Get
incomplete collections when `state' is `0'.
(eom_main_window_on_filter): Don't fetch any manga, just set the
window's `state'.
(eom_main_window_on_new):
(eom_main_window_on_edit_closed): No more `manga' parameter for
`eom_main_window_load'.
* src/eom-main-window.h (struct _EomMainWindow): Add `state' property.
* src/interface.c (interface_show_main_window): No more `manga'
parameter for `eom_main_window_load'.
This filter, in the main window, shows only the manga that still need
to be collected, not the completed ones.
* src/data.c (data_get_manga): Use `data_get_manga_for_query'.
(data_get_incomplete_manga): New function, get all manga that arent'
completely collected yet.
(data_get_manga_for_query): New function, fetches all the manga as
`query' specifies.
* src/data.h: Add `data_get_incomplete_manga'.
* src/eom-main-window.c (filter_args): New struct. Contains arguments
needed by the filter callback.
(eom_main_window_load): Accept a list of manga, this list will be
used to show the manga, if it's NULL, a list of all manga is used.
(eom_main_window_add_menu): Add `All' and `Collect' filter buttons.
(eom_main_window_on_filter): Callback for the filter buttons,
reloads the list with the correct manga.
* src/eom-main-window.h: Add manga parameter to
`eom_main_window_load'.
* src/interface.c (interface_show_main_window): Pass `NULL' to
`eom_main_window_load' to show all manga.