GDateTime* daemon_helpers_date_time_converter_FromUnixTimestamp (gint64 timestamp) { GDateTime* result = NULL; GDateTime* _tmp0_ = NULL; _tmp0_ = g_date_time_new_from_unix_local (timestamp); result = _tmp0_; return result; }
static gchar *cm_get_cookie_description_text(SoupCookie *cookie) { gchar *expires; gchar *text; g_return_val_if_fail(cookie != NULL, NULL); if (cookie->expires != NULL) { time_t expiration_time = soup_date_to_time_t(cookie->expires); GDateTime* date = g_date_time_new_from_unix_local(expiration_time); expires = g_date_time_format(date, "%c"); g_date_time_unref(date); } else expires = g_strdup(_("At the end of the session")); text = g_markup_printf_escaped( _("<b>Host</b>: %s\n<b>Name</b>: %s\n<b>Value</b>: %s\n<b>Path</b>: %s\n" "<b>Secure</b>: %s\n<b>Expires</b>: %s"), cookie->domain, cookie->name, cookie->value, cookie->path, /* i18n: is this cookie secure (SSL)? yes/ no */ cookie->secure ? _("Yes") : _("No"), expires); g_free(expires); return text; }
gboolean nautilus_file_date_in_between (guint64 unix_file_time, GDateTime *initial_date, GDateTime *end_date) { GDateTime *date; gboolean in_between; /* Silently ignore errors */ if (unix_file_time == 0) { return FALSE; } date = g_date_time_new_from_unix_local (unix_file_time); /* For the end date, we want to make end_date inclusive, * for that the difference between the start of the day and the in_between * has to be more than -1 day */ in_between = g_date_time_difference (date, initial_date) > 0 && g_date_time_difference (end_date, date) / G_TIME_SPAN_DAY > -1; g_date_time_unref (date); return in_between; }
/** * eel_get_date_as_string: * * Get a formated date string where format equal iso, locale, informal. * The caller is responsible for g_free-ing the result. * @d: contains the UNIX time. * @date_format: string representing the format to convert the date to. * * Returns: Newly allocated date. * **/ char * eel_get_date_as_string (guint64 d, gchar *date_format) { const char *format; gchar *result = NULL; GDateTime *date_time, *today, *last_year; GTimeSpan file_date_age; gboolean is_last_year; g_return_val_if_fail (date_format != NULL, NULL); date_time = g_date_time_new_from_unix_local ((gint64) d); if (!strcmp (date_format, "locale")) { result = g_date_time_format (date_time, "%c"); goto out; } else if (!strcmp (date_format, "iso")) { result = g_date_time_format (date_time, "%Y-%m-%d %H:%M:%S"); goto out; } today = g_date_time_new_now_local (); last_year = g_date_time_add_years (today, -1); file_date_age = g_date_time_difference (today, date_time); is_last_year = g_date_time_compare (date_time, last_year) > 0; g_date_time_unref (today); g_date_time_unref (last_year); /* Format varies depending on how old the date is. This minimizes * the length (and thus clutter & complication) of typical dates * while providing sufficient detail for recent dates to make * them maximally understandable at a glance. Keep all format * strings separate rather than combining bits & pieces for * internationalization's sake. */ if (file_date_age < G_TIME_SPAN_DAY) { //TODAY_TIME_FORMATS //"Today at 00:00 PM" format = _("Today at %-I:%M %p"); } else if (file_date_age < 2 * G_TIME_SPAN_DAY) { //YESTERDAY_TIME_FORMATS //"Yesterday at 00:00 PM" format = _("Yesterday at %-I:%M %p"); } else if (is_last_year) { //CURRENT_YEAR_TIME_FORMATS //"Mon 00 Oct at 00:00 PM" format = _("%a %-d %b at %-I:%M %p"); } else { //CURRENT_WEEK_TIME_FORMATS //"Mon 00 Oct 0000 at 00:00 PM" format = _("%a %-d %b %Y at %-I:%M %p"); } result = g_date_time_format (date_time, format); out: g_date_time_unref (date_time); return result; }
/** * gst_date_time_new_from_unix_epoch_local_time: * @secs: seconds from the Unix epoch * * Creates a new #GstDateTime using the time since Jan 1, 1970 specified by * @secs. The #GstDateTime is in the local timezone. * * Free-function: gst_date_time_unref * * Return value: (transfer full): the newly created #GstDateTime */ GstDateTime * gst_date_time_new_from_unix_epoch_local_time (gint64 secs) { GDateTime *datetime; datetime = g_date_time_new_from_unix_local (secs); return gst_date_time_new_from_g_date_time (datetime); }
DateTime DateTime::Local(time_t t) { auto gtz = g_time_zone_new_local(); auto gdt = g_date_time_new_from_unix_local(t); DateTime dt(gtz, gdt); g_time_zone_unref(gtz); g_date_time_unref(gdt); return dt; }
static void age_renderer_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data) { GtkRecentInfo *ri = NULL; GDateTime *now = user_data; GDateTime *last_used; GTimeSpan age; char *text; const char *date_format; const char *p; gtk_tree_model_get (model, iter, RECENT_COL_INFO, &ri, -1); last_used = g_date_time_new_from_unix_local (gtk_recent_info_get_modified (ri)); gtk_recent_info_unref (ri); age = g_date_time_difference (now, last_used); if (age < G_TIME_SPAN_DAY && g_date_time_get_day_of_month (now) == g_date_time_get_day_of_month (last_used)) { if (go_locale_24h ()) /* * xgettext: This is a time format for * g_date_time_format used in locales that use a * 24 hour clock. You probably do not need to change * this. The default will show things like "09:50" * and "21:50". */ date_format = _("%H:%M"); else /* * xgettext: This is a time format for * g_date_time_format used in locales that use * a 12 hour clock. You probably do not need * to change this. The default will show * things like " 9:50 am" and " 9:50 pm". */ date_format = _("%l:%M %P"); } else { date_format = "%x"; } p = text = g_date_time_format (last_used, date_format); while (g_ascii_isspace (*p)) p++; g_object_set (cell, "text", p, "xalign", 0.5, NULL); g_free (text); g_date_time_unref (last_used); }
GDateTime* gnc_g_date_time_new_from_unix_local (time64 time) { #ifndef G_OS_WIN32 return g_date_time_new_from_unix_local (time); #else GTimeZone *tz = gnc_g_time_zone_new_local (); GDateTime *gdt = g_date_time_new_from_unix_utc (time); if (!gdt) return gdt; return gnc_g_date_time_adjust_for_dst (gdt, tz); #endif }
static gchar * photos_import_dialog_create_default_collection_name (PhotosImportDialog *self) { g_autoptr (GDateTime) time = NULL; gchar *time_str = NULL; time = g_date_time_new_from_unix_local (self->time); /* Translators: this is the name of the default album that will be * created for imported photos. */ time_str = g_date_time_format (time, _("%-d %B %Y")); return time_str; }
gchar *epoch_to_string(gint64 epoch) { #if GLIB_CHECK_VERSION(2, 26, 00) GDateTime *dt = g_date_time_new_from_unix_local(epoch); gchar *timestring = g_date_time_format(dt, "%F %H:%M:%S"); g_date_time_unref(dt); return timestring; #else char buf[64]; time_t time_val = epoch; struct tm *ts = localtime(&time_val); int wrote = strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ts); return g_strndup(buf, wrote); #endif }
/* Load up the list with the current set of scores. */ static void games_scores_dialog_redraw (GamesScoresDialog *self) { GtkTreeIter iter; const gchar *name; gint score; gchar *ss; gint timestamp; GDateTime *datetime; gchar *time; gdouble dscore; GList *scorelist; gtk_list_store_clear (self->priv->list); scorelist = games_scores_get (self->priv->scores); while (scorelist) { timestamp = games_score_get_time ((GamesScore *)scorelist->data); datetime = g_date_time_new_from_unix_local (timestamp); time = g_date_time_format (datetime,"%d/%m/%y"); switch (self->priv->style) { case GAMES_SCORES_STYLE_TIME_ASCENDING: case GAMES_SCORES_STYLE_TIME_DESCENDING: dscore = games_score_get_value_as_time ((GamesScore *)scorelist->data); score = (int) (100.0 * dscore + 0.5); ss = g_strdup_printf (/* Score format for time based scores. %1$d is the time in minutes, %2$d is the time in seconds */ C_("score-dialog", "%1$dm %2$ds"), score/100, score%100); break; case GAMES_SCORES_STYLE_PLAIN_ASCENDING: case GAMES_SCORES_STYLE_PLAIN_DESCENDING: default: score = games_score_get_value_as_plain ((GamesScore *)scorelist->data); ss = g_strdup_printf ("%d", score); } gtk_list_store_append (self->priv->list, &iter); gtk_list_store_set (self->priv->list, &iter, 0, time, 1, ss, -1); g_free (ss); g_free (time); scorelist = g_list_next (scorelist); } }
static gboolean should_purge_file (GFile *file, GCancellable *cancellable, GDateTime *old) { GFileInfo *info; GDateTime *date; gboolean should_purge; should_purge = FALSE; info = g_file_query_info (file, G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "," G_FILE_ATTRIBUTE_UNIX_UID "," G_FILE_ATTRIBUTE_TIME_CHANGED, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, NULL); date = g_file_info_get_deletion_date (info); if (date == NULL) { guint uid; guint64 ctime; uid = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_UID); if (uid != getuid ()) { should_purge = FALSE; goto out; } ctime = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_CHANGED); date = g_date_time_new_from_unix_local ((gint64) ctime); } should_purge = g_date_time_difference (old, date) >= 0; g_date_time_unref (date); out: g_object_unref (info); return should_purge; }
/** * Prints a file ands its meta data to the screen * @param smeta is the server meta data of the file to be printed on the * screen */ void print_smeta_to_screen(server_meta_data_t *smeta) { meta_data_t *meta = NULL; /**< helper to access smeta->meta structure do not free ! */ GDateTime *la_date = NULL; gchar *the_date = NULL; if (smeta != NULL && smeta->meta != NULL) { meta = smeta->meta; switch (meta->file_type) { case 1: fprintf(stdout, "[FILE] "); break; case 2: fprintf(stdout, "[DIR ] "); break; case 3: fprintf(stdout, "[LINK] "); break; default: fprintf(stdout, "[ ] "); break; } la_date = g_date_time_new_from_unix_local(meta->mtime); the_date = g_date_time_format(la_date, "%F %T %z"); fprintf(stdout, "%s ", the_date); fprintf(stdout, "%s\n", meta->name); free_variable(the_date); g_date_time_unref(la_date); } }
static gchar * absolute_to_string(gint64 times[REPLAY_NUM_TIME_UNITS], ReplayTimeUnit max) { gint64 timestamp = replay_timestamp_from_times(times); gint64 unix_secs = timestamp / 1000000; gint64 msecs = (timestamp % 1000000) / 1000; gint64 usecs = (timestamp % 1000000) % 1000; GDateTime *dt = g_date_time_new_from_unix_local(unix_secs); gchar *string = g_date_time_format(dt, "%c"); if (msecs) { gchar *msecs_str = g_strdup_printf(" %03" G_GINT64_FORMAT "ms", msecs); string = replay_strconcat_and_free(string, msecs_str); } if (usecs) { gchar *usecs_str = g_strdup_printf(" %03" G_GINT64_FORMAT "µs", usecs); string = replay_strconcat_and_free(string, usecs_str); } return string; }
/* Based on evolution/mail/message-list.c:filter_date() */ char * rb_utf_friendly_time (time_t date) { GDateTime *datetime, *now, *yesterday; int d, m, y; int nd, nm, ny; int yd, ym, yy; const char *format = NULL; char *str = NULL; if (date == 0) { return g_strdup (_("Never")); } now = g_date_time_new_now_local (); datetime = g_date_time_new_from_unix_local (date); g_date_time_get_ymd (datetime, &y, &m, &d); g_date_time_get_ymd (now, &ny, &nm, &nd); if (y == ny && m == nm && d == nd) { /* Translators: "friendly time" string for the current day, strftime format. like "Today 12:34 am" */ format = _("Today %I:%M %p"); } if (format == NULL) { yesterday = g_date_time_add_days (now, -1); g_date_time_get_ymd (yesterday, &yy, &ym, &yd); if (y == yy && m == ym && d == yd) { /* Translators: "friendly time" string for the previous day, * strftime format. e.g. "Yesterday 12:34 am" */ format = _("Yesterday %I:%M %p"); } g_date_time_unref (yesterday); } if (format == NULL) { int i; for (i = 2; i < 7; i++) { yesterday = g_date_time_add_days (now, -i); g_date_time_get_ymd (yesterday, &yy, &ym, &yd); if (y == yy && m == ym && d == yd) { /* Translators: "friendly time" string for a day in the current week, * strftime format. e.g. "Wed 12:34 am" */ format = _("%a %I:%M %p"); g_date_time_unref (yesterday); break; } g_date_time_unref (yesterday); } } if (format == NULL) { if (y == ny) { /* Translators: "friendly time" string for a day in the current year, * strftime format. e.g. "Feb 12 12:34 am" */ format = _("%b %d %I:%M %p"); } else { /* Translators: "friendly time" string for a day in a different year, * strftime format. e.g. "Feb 12 1997" */ format = _("%b %d %Y"); } } if (format != NULL) { str = g_date_time_format (datetime, format); } if (str == NULL) { /* impossible time or broken locale settings */ str = g_strdup (_("Unknown")); } g_date_time_unref (datetime); g_date_time_unref (now); return str; }
void irc_sq_lite_db_ShowLog (const char* username) { sqlite3* _tmp0_ = NULL; sqlite3* _tmp1_; char* commandText; sqlite3_stmt* statement; sqlite3_stmt* _tmp2_ = NULL; sqlite3_stmt* _tmp3_; gint _result_; GList* results; g_return_if_fail (username != NULL); fprintf (stdout, "Datenbank wird ausgelesen!\n"); sqlite3_open (IRC_SQ_LITE_DB__path, &_tmp0_); irc_sq_lite_db_DataBase = (_tmp1_ = _tmp0_, _sqlite3_close0 (irc_sq_lite_db_DataBase), _tmp1_); commandText = g_strdup ("SELECT * FROM MyLogData WHERE Username = @1 ORDER BY Timestamp DESC LI" \ "MIT 10"); statement = NULL; sqlite3_prepare_v2 (irc_sq_lite_db_DataBase, commandText, -1, &_tmp2_, NULL); statement = (_tmp3_ = _tmp2_, _sqlite3_finalize0 (statement), _tmp3_); sqlite3_bind_text (statement, 1, g_strdup (username), -1, g_free); _result_ = sqlite3_step (statement); results = NULL; while (TRUE) { char* Username; char* MessageContent; char* Channel; char* Server; GDateTime* FromUnixTime; IRCMessage* msg; if (!(_result_ == SQLITE_ROW)) { break; } Username = g_strdup (sqlite3_column_text (statement, 0)); MessageContent = g_strdup (sqlite3_column_text (statement, 1)); Channel = g_strdup (sqlite3_column_text (statement, 2)); Server = g_strdup (sqlite3_column_text (statement, 3)); FromUnixTime = g_date_time_new_from_unix_local (g_ascii_strtoll (sqlite3_column_text (statement, 4), NULL, 0)); msg = irc_message_new (Username, MessageContent, Channel, Server, FromUnixTime); results = g_list_append (results, _irc_message_ref0 (msg)); _result_ = sqlite3_step (statement); _irc_message_unref0 (msg); _g_date_time_unref0 (FromUnixTime); _g_free0 (Server); _g_free0 (Channel); _g_free0 (MessageContent); _g_free0 (Username); } { GList* r_collection; GList* r_it; r_collection = results; for (r_it = r_collection; r_it != NULL; r_it = r_it->next) { IRCMessage* r; r = _irc_message_ref0 ((IRCMessage*) r_it->data); { fprintf (stdout, "%s\n", irc_message_get_MessageContent (r)); _irc_message_unref0 (r); } } } __g_list_free_irc_message_unref0 (results); _sqlite3_finalize0 (statement); _g_free0 (commandText); }
static void photos_properties_dialog_constructed (GObject *object) { PhotosPropertiesDialog *self = PHOTOS_PROPERTIES_DIALOG (object); GApplication *app; g_autoptr (GDateTime) date_modified = NULL; GtkStyleContext *context; GtkWidget *author_w = NULL; GtkWidget *content_area; GtkWidget *date_created_w = NULL; GtkWidget *date_modified_data; GtkWidget *date_modified_w; GtkWidget *dimensions_w = NULL; GtkWidget *exposure_time_w = NULL; GtkWidget *flash_w = NULL; GtkWidget *fnumber_w = NULL; GtkWidget *focal_length_w = NULL; GtkWidget *iso_speed_w = NULL; GtkWidget *item_type; GtkWidget *item_type_data; GtkWidget *modified_w = NULL; GtkWidget *source; GtkWidget *source_data; GtkWidget *title; GQuark equipment; GQuark flash; PhotosBaseItem *item; PhotosSearchContextState *state; const gchar *author; const gchar *location; const gchar *name; const gchar *type_description; g_autofree gchar *date_created_str = NULL; g_autofree gchar *date_modified_str = NULL; gdouble exposure_time; gdouble fnumber; gdouble focal_length; gdouble iso_speed; gint64 ctime; gint64 mtime; glong height; glong width; G_OBJECT_CLASS (photos_properties_dialog_parent_class)->constructed (object); app = g_application_get_default (); state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app)); self->item_mngr = g_object_ref (state->item_mngr); { g_autoptr (GError) error = NULL; self->queue = photos_tracker_queue_dup_singleton (NULL, &error); if (G_UNLIKELY (error != NULL)) g_warning ("Unable to create PhotosTrackerQueue: %s", error->message); } item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (self->item_mngr, self->urn)); mtime = photos_base_item_get_mtime (item); date_modified = g_date_time_new_from_unix_local (mtime); date_modified_str = g_date_time_format (date_modified, "%c"); ctime = photos_base_item_get_date_created (item); if (ctime >= 0) { g_autoptr (GDateTime) date_created = NULL; date_created = g_date_time_new_from_unix_local (ctime); date_created_str = g_date_time_format (date_created, "%c"); } self->grid = gtk_grid_new (); gtk_widget_set_halign (self->grid, GTK_ALIGN_CENTER); gtk_widget_set_margin_start (self->grid, 24); gtk_widget_set_margin_end (self->grid, 24); gtk_widget_set_margin_bottom (self->grid, 12); gtk_widget_set_margin_top (self->grid, 12); gtk_orientable_set_orientation (GTK_ORIENTABLE (self->grid), GTK_ORIENTATION_VERTICAL); gtk_grid_set_column_homogeneous (GTK_GRID (self->grid), TRUE); gtk_grid_set_column_spacing (GTK_GRID (self->grid), 24); gtk_grid_set_row_homogeneous (GTK_GRID (self->grid), TRUE); gtk_grid_set_row_spacing (GTK_GRID (self->grid), 6); content_area = gtk_dialog_get_content_area (GTK_DIALOG (self)); gtk_box_pack_start (GTK_BOX (content_area), self->grid, TRUE, TRUE, 2); /* Translators: this is the label next to the photo title in the * properties dialog */ title = gtk_label_new (C_("Document Title", "Title")); gtk_widget_set_halign (title, GTK_ALIGN_END); context = gtk_widget_get_style_context (title); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), title); author = photos_base_item_get_author (item); if (author != NULL && author[0] != '\0') { /* Translators: this is the label next to the photo author in * the properties dialog */ author_w = gtk_label_new (C_("Document Author", "Author")); gtk_widget_set_halign (author_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (author_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), author_w); } source = gtk_label_new (_("Source")); gtk_widget_set_halign (source, GTK_ALIGN_END); context = gtk_widget_get_style_context (source); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), source); date_modified_w = gtk_label_new (_("Date Modified")); gtk_widget_set_halign (date_modified_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (date_modified_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), date_modified_w); if (date_created_str != NULL) { date_created_w = gtk_label_new (_("Date Created")); gtk_widget_set_halign (date_created_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (date_created_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), date_created_w); } /* Translators: this is the label next to the photo type in the * properties dialog */ item_type = gtk_label_new (C_("Document Type", "Type")); gtk_widget_set_halign (item_type, GTK_ALIGN_END); context = gtk_widget_get_style_context (item_type); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), item_type); height = (glong) photos_base_item_get_height (item); width = (glong) photos_base_item_get_width (item); if (height > 0 && width > 0) { dimensions_w = gtk_label_new (_("Dimensions")); gtk_widget_set_halign (dimensions_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (dimensions_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), dimensions_w); } location = photos_base_item_get_location (item); if (location != NULL && location[0] != '\0' && G_LIKELY (self->queue != NULL)) { g_autoptr (PhotosQuery) query = NULL; self->location_w = gtk_label_new (_("Location")); gtk_widget_set_halign (self->location_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (self->location_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), self->location_w); query = photos_query_builder_location_query (state, location); photos_tracker_queue_select (self->queue, query, NULL, photos_properties_dialog_location_query_executed, g_object_ref (self), g_object_unref); } equipment = photos_base_item_get_equipment (item); if (equipment != 0) { self->camera_w = gtk_label_new (_("Camera")); gtk_widget_set_halign (self->camera_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (self->camera_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), self->camera_w); } exposure_time = photos_base_item_get_exposure_time (item); if (exposure_time > 0.0) { exposure_time_w = gtk_label_new (_("Exposure")); gtk_widget_set_halign (exposure_time_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (exposure_time_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), exposure_time_w); } fnumber = photos_base_item_get_fnumber (item); if (fnumber > 0.0) { fnumber_w = gtk_label_new (_("Aperture")); gtk_widget_set_halign (fnumber_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (fnumber_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), fnumber_w); } focal_length = photos_base_item_get_focal_length (item); if (focal_length > 0.0) { focal_length_w = gtk_label_new (_("Focal Length")); gtk_widget_set_halign (focal_length_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (focal_length_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), focal_length_w); } iso_speed = photos_base_item_get_iso_speed (item); if (iso_speed > 0.0) { iso_speed_w = gtk_label_new (_("ISO Speed")); gtk_widget_set_halign (iso_speed_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (iso_speed_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), iso_speed_w); } flash = photos_base_item_get_flash (item); if (flash != 0) { flash_w = gtk_label_new (_("Flash")); gtk_widget_set_halign (flash_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (flash_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), flash_w); } if (!photos_base_item_is_collection (item)) { modified_w = gtk_label_new (_("Modifications")); gtk_widget_set_halign (modified_w, GTK_ALIGN_END); gtk_widget_set_valign (modified_w, GTK_ALIGN_BASELINE); gtk_widget_set_vexpand (modified_w, TRUE); context = gtk_widget_get_style_context (modified_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (self->grid), modified_w); } name = photos_base_item_get_name (item); if (PHOTOS_IS_LOCAL_ITEM (item)) { self->title_entry = gtk_entry_new (); gtk_widget_set_halign (self->title_entry, GTK_ALIGN_START); gtk_widget_set_hexpand (self->title_entry, TRUE); gtk_entry_set_activates_default (GTK_ENTRY (self->title_entry), TRUE); gtk_entry_set_text (GTK_ENTRY (self->title_entry), name); gtk_entry_set_width_chars (GTK_ENTRY (self->title_entry), 40); gtk_editable_set_editable (GTK_EDITABLE (self->title_entry), TRUE); g_signal_connect (self->title_entry, "changed", G_CALLBACK (photos_properties_dialog_title_entry_changed), self); } else { self->title_entry = gtk_label_new (name); gtk_widget_set_halign (self->title_entry, GTK_ALIGN_START); gtk_label_set_ellipsize (GTK_LABEL (self->title_entry), PANGO_ELLIPSIZE_END); gtk_label_set_max_width_chars (GTK_LABEL (self->title_entry), 40); } gtk_grid_attach_next_to (GTK_GRID (self->grid), self->title_entry, title, GTK_POS_RIGHT, 2, 1); if (author_w != NULL) { GtkWidget *author_data; author_data = gtk_label_new (author); gtk_widget_set_halign (author_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), author_data, author_w, GTK_POS_RIGHT, 2, 1); } source_data = photos_base_item_get_source_widget (item); gtk_grid_attach_next_to (GTK_GRID (self->grid), source_data, source, GTK_POS_RIGHT, 2, 1); date_modified_data = gtk_label_new (date_modified_str); gtk_widget_set_halign (date_modified_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), date_modified_data, date_modified_w, GTK_POS_RIGHT, 2, 1); if (date_created_w != NULL) { GtkWidget *date_created_data; date_created_data = gtk_label_new (date_created_str); gtk_widget_set_halign (date_created_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), date_created_data, date_created_w, GTK_POS_RIGHT, 2, 1); } type_description = photos_base_item_get_type_description (item); item_type_data = gtk_label_new (type_description); gtk_widget_set_halign (item_type_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), item_type_data, item_type, GTK_POS_RIGHT, 2, 1); if (dimensions_w != NULL) { GtkWidget *dims_data; g_autofree gchar *dims_str = NULL; gulong n = (gulong) height; dims_str = g_strdup_printf (ngettext ("%ld × %ld pixel", "%ld × %ld pixels", n), width, height); dims_data = gtk_label_new (dims_str); gtk_widget_set_halign (dims_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), dims_data, dimensions_w, GTK_POS_RIGHT, 2, 1); } if (self->camera_w != NULL) { photos_camera_cache_get_camera_async (self->camera_cache, equipment, self->cancellable, photos_properties_dialog_get_camera, self); } if (exposure_time_w != NULL) { GtkWidget *exposure_time_data; g_autofree gchar *exposure_time_str = NULL; exposure_time_str = g_strdup_printf ("%.3lf sec", exposure_time); exposure_time_data = gtk_label_new (exposure_time_str); gtk_widget_set_halign (exposure_time_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), exposure_time_data, exposure_time_w, GTK_POS_RIGHT, 2, 1); } if (fnumber_w != NULL) { GtkWidget *fnumber_data; g_autofree gchar *fnumber_str = NULL; fnumber_str = g_strdup_printf ("f/%.1lf", fnumber); fnumber_data = gtk_label_new (fnumber_str); gtk_widget_set_halign (fnumber_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), fnumber_data, fnumber_w, GTK_POS_RIGHT, 2, 1); } if (focal_length_w != NULL) { GtkWidget *focal_length_data; g_autofree gchar *focal_length_str = NULL; focal_length_str = g_strdup_printf ("%.0lf mm", focal_length); focal_length_data = gtk_label_new (focal_length_str); gtk_widget_set_halign (focal_length_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), focal_length_data, focal_length_w, GTK_POS_RIGHT, 2, 1); } if (iso_speed_w != NULL) { GtkWidget *iso_speed_data; g_autofree gchar *iso_speed_str = NULL; iso_speed_str = g_strdup_printf ("%.0lf", iso_speed); iso_speed_data = gtk_label_new (iso_speed_str); gtk_widget_set_halign (iso_speed_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), iso_speed_data, iso_speed_w, GTK_POS_RIGHT, 2, 1); } if (flash_w != NULL) { GtkWidget *flash_data; g_autofree gchar *flash_str = NULL; if (flash == PHOTOS_FLASH_OFF) flash_str = g_strdup (_("Off, did not fire")); else if (flash == PHOTOS_FLASH_ON) flash_str = g_strdup (_("On, fired")); else { const gchar *str; str = g_quark_to_string (flash); g_warning ("Unknown value for nmm:flash: %s", str); } flash_data = gtk_label_new (flash_str); gtk_widget_set_halign (flash_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (self->grid), flash_data, flash_w, GTK_POS_RIGHT, 2, 1); } if (modified_w != NULL) { GtkWidget *modified_grid; photos_base_item_pipeline_is_edited_async (item, self->cancellable, photos_properties_dialog_pipeline_is_edited, self); modified_grid = gtk_grid_new (); gtk_widget_set_hexpand (modified_grid, TRUE); gtk_orientable_set_orientation (GTK_ORIENTABLE (modified_grid), GTK_ORIENTATION_HORIZONTAL); self->modified_data = gtk_label_new (NULL); gtk_widget_set_halign (self->modified_data, GTK_ALIGN_START); gtk_widget_set_hexpand (self->modified_data, TRUE); gtk_widget_set_no_show_all (self->modified_data, TRUE); gtk_widget_set_valign (self->modified_data, GTK_ALIGN_BASELINE); gtk_widget_set_vexpand (self->modified_data, TRUE); context = gtk_widget_get_style_context (self->modified_data); gtk_style_context_add_class (context, "photos-fade-out"); gtk_container_add (GTK_CONTAINER (modified_grid), self->modified_data); self->revert_button = gtk_button_new_with_label (_("Discard all Edits")); gtk_widget_set_halign (self->revert_button, GTK_ALIGN_END); gtk_widget_set_hexpand (self->revert_button, TRUE); gtk_widget_set_no_show_all (self->revert_button, TRUE); context = gtk_widget_get_style_context (self->revert_button); gtk_style_context_add_class (context, "destructive-action"); gtk_style_context_add_class (context, "photos-fade-out"); gtk_container_add (GTK_CONTAINER (modified_grid), self->revert_button); g_signal_connect_swapped (self->revert_button, "clicked", G_CALLBACK (photos_properties_dialog_revert_clicked), self); gtk_grid_attach_next_to (GTK_GRID (self->grid), modified_grid, modified_w, GTK_POS_RIGHT, 2, 1); } }
void linphone_gtk_call_log_update(GtkWidget *w){ GtkTreeView *v=GTK_TREE_VIEW(linphone_gtk_get_widget(w,"logs_view")); GtkTreeStore *store; const MSList *logs; GtkTreeSelection *select; GtkWidget *notebook=linphone_gtk_get_widget(w,"viewswitch"); gint nb; store=(GtkTreeStore*)gtk_tree_view_get_model(v); if (store==NULL){ store=gtk_tree_store_new(3,G_TYPE_STRING,G_TYPE_STRING,G_TYPE_POINTER,G_TYPE_STRING); gtk_tree_view_set_model(v,GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); fill_renderers(GTK_TREE_VIEW(linphone_gtk_get_widget(w,"logs_view"))); select=gtk_tree_view_get_selection(v); gtk_tree_selection_set_mode(select, GTK_SELECTION_SINGLE); g_signal_connect_swapped(G_OBJECT(select),"changed",(GCallback)call_log_selection_changed,v); g_signal_connect(G_OBJECT(notebook),"focus-tab",(GCallback)linphone_gtk_call_log_reset_missed_call,NULL); g_signal_connect(G_OBJECT(v),"button-press-event",(GCallback)linphone_gtk_call_log_button_pressed,NULL); } nb=linphone_core_get_missed_calls_count(linphone_gtk_get_core()); if(nb > 0) linphone_gtk_call_log_display_missed_call(nb); gtk_tree_store_clear (store); for (logs=linphone_core_get_call_logs(linphone_gtk_get_core());logs!=NULL;logs=logs->next){ LinphoneCallLog *cl=(LinphoneCallLog*)logs->data; GtkTreeIter iter, iter2; LinphoneAddress *la=linphone_call_log_get_dir(cl)==LinphoneCallIncoming ? linphone_call_log_get_from(cl) : linphone_call_log_get_to(cl); char *addr= linphone_address_as_string(la); const char *display; gchar *logtxt, *headtxt, *minutes, *seconds; gchar quality[20]; const char *status=NULL; gchar *start_date=NULL; LinphoneFriend *lf=NULL; int duration=linphone_call_log_get_duration(cl); time_t start_date_time=linphone_call_log_get_start_date(cl); const gchar *call_status_icon_name; #if GLIB_CHECK_VERSION(2,30,0) // The g_date_time_format function exists since 2.26.0 but the '%c' format is only supported since 2.30.0 if (start_date_time){ GDateTime *dt=g_date_time_new_from_unix_local(start_date_time); start_date=g_date_time_format(dt,"%c"); g_date_time_unref(dt); } #else start_date=g_strdup(ctime(&start_date_time)); if (start_date[strlen(start_date) - 1] == '\n') { start_date[strlen(start_date) - 1] = '\0'; } #endif lf=linphone_core_get_friend_by_address(linphone_gtk_get_core(),addr); if(lf != NULL){ /*update display name from friend*/ display = linphone_friend_get_name(lf); if (display != NULL) linphone_address_set_display_name(la, display); } else { display=linphone_address_get_display_name(la); } if (display==NULL){ display=linphone_address_get_username (la); if (display==NULL){ display=linphone_address_get_domain (la); } } if (linphone_call_log_get_quality(cl)!=-1){ snprintf(quality,sizeof(quality),"%.1f",linphone_call_log_get_quality(cl)); }else snprintf(quality,sizeof(quality)-1,"%s",_("n/a")); switch(linphone_call_log_get_status(cl)){ case LinphoneCallAborted: status=_("Aborted"); break; case LinphoneCallMissed: status=_("Missed"); break; case LinphoneCallDeclined: status=_("Declined"); break; default: break; } minutes=g_markup_printf_escaped( ngettext("%i minute", "%i minutes", duration/60), duration/60); seconds=g_markup_printf_escaped( ngettext("%i second", "%i seconds", duration%60), duration%60); if (status==NULL) { headtxt=g_markup_printf_escaped("<big><b>%s</b></big>\t%s",display,start_date ? start_date : ""); logtxt=g_markup_printf_escaped( _("<small><i>%s</i>\t" "<i>Quality: %s</i></small>\n%s\t%s\t"), addr, quality, minutes, seconds); } else { headtxt=g_markup_printf_escaped(_("<big><b>%s</b></big>\t%s"),display,start_date ? start_date : ""); logtxt=g_markup_printf_escaped( "<small><i>%s</i></small>\t" "\n%s",addr, status); } g_free(minutes); g_free(seconds); if (start_date) g_free(start_date); gtk_tree_store_append (store,&iter,NULL); call_status_icon_name = linphone_call_log_get_dir(cl) == LinphoneCallOutgoing ? "linphone-call-status-outgoing" : "linphone-call-status-incoming"; gtk_tree_store_set (store,&iter, 0, call_status_icon_name, 1, headtxt,2,cl,-1); gtk_tree_store_append (store,&iter2,&iter); gtk_tree_store_set (store,&iter2,1,logtxt,-1); ms_free(addr); g_free(logtxt); g_free(headtxt); } }
GstDateTime * gst_date_time_new_from_unix_epoch_local_time (gint64 secs) { return gst_date_time_new_from_gdatetime (g_date_time_new_from_unix_local (secs)); }
static void photos_properties_dialog_constructed (GObject *object) { PhotosPropertiesDialog *self = PHOTOS_PROPERTIES_DIALOG (object); PhotosPropertiesDialogPrivate *priv = self->priv; GDateTime *date_modified; GtkStyleContext *context; GtkWidget *author_w = NULL; GtkWidget *content_area; GtkWidget *date_created_w = NULL; GtkWidget *date_modified_data; GtkWidget *date_modified_w; GtkWidget *exposure_time_w = NULL; GtkWidget *flash_w = NULL; GtkWidget *fnumber_w = NULL; GtkWidget *focal_length_w = NULL; GtkWidget *height_w = NULL; GtkWidget *iso_speed_w = NULL; GtkWidget *item_type; GtkWidget *item_type_data; GtkWidget *source; GtkWidget *source_data; GtkWidget *title; GtkWidget *width_w = NULL; GQuark equipment; GQuark flash; PhotosBaseItem *item; const gchar *author; const gchar *name; const gchar *type_description; gchar *date_created_str = NULL; gchar *date_modified_str; gdouble exposure_time; gdouble fnumber; gdouble focal_length; gdouble iso_speed; gint64 ctime; gint64 height; gint64 mtime; gint64 width; G_OBJECT_CLASS (photos_properties_dialog_parent_class)->constructed (object); item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (priv->item_mngr, priv->urn)); mtime = photos_base_item_get_mtime (item); date_modified = g_date_time_new_from_unix_local (mtime); date_modified_str = g_date_time_format (date_modified, "%c"); g_date_time_unref (date_modified); ctime = photos_base_item_get_date_created (item); if (ctime != -1) { GDateTime *date_created; date_created = g_date_time_new_from_unix_local (ctime); date_created_str = g_date_time_format (date_created, "%c"); g_date_time_unref (date_created); } priv->grid = gtk_grid_new (); gtk_widget_set_halign (priv->grid, GTK_ALIGN_CENTER); gtk_widget_set_margin_start (priv->grid, 24); gtk_widget_set_margin_end (priv->grid, 24); gtk_widget_set_margin_bottom (priv->grid, 12); gtk_widget_set_margin_top (priv->grid, 12); gtk_orientable_set_orientation (GTK_ORIENTABLE (priv->grid), GTK_ORIENTATION_VERTICAL); gtk_grid_set_column_homogeneous (GTK_GRID (priv->grid), TRUE); gtk_grid_set_column_spacing (GTK_GRID (priv->grid), 24); gtk_grid_set_row_homogeneous (GTK_GRID (priv->grid), TRUE); gtk_grid_set_row_spacing (GTK_GRID (priv->grid), 6); content_area = gtk_dialog_get_content_area (GTK_DIALOG (self)); gtk_box_pack_start (GTK_BOX (content_area), priv->grid, TRUE, TRUE, 2); /* Translators: this is the label next to the photo title in the * properties dialog */ title = gtk_label_new (C_("Document Title", "Title")); gtk_widget_set_halign (title, GTK_ALIGN_END); context = gtk_widget_get_style_context (title); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), title); author = photos_base_item_get_author (item); if (author != NULL && author[0] != '\0') { /* Translators: this is the label next to the photo author in * the properties dialog */ author_w = gtk_label_new (C_("Document Author", "Author")); gtk_widget_set_halign (author_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (author_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), author_w); } source = gtk_label_new (_("Source")); gtk_widget_set_halign (source, GTK_ALIGN_END); context = gtk_widget_get_style_context (source); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), source); date_modified_w = gtk_label_new (_("Date Modified")); gtk_widget_set_halign (date_modified_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (date_modified_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), date_modified_w); if (date_created_str != NULL) { date_created_w = gtk_label_new (_("Date Created")); gtk_widget_set_halign (date_created_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (date_created_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), date_created_w); } /* Translators: this is the label next to the photo type in the * properties dialog */ item_type = gtk_label_new (C_("Document Type", "Type")); gtk_widget_set_halign (item_type, GTK_ALIGN_END); context = gtk_widget_get_style_context (item_type); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), item_type); width = photos_base_item_get_width (item); if (width > 0) { width_w = gtk_label_new (_("Width")); gtk_widget_set_halign (width_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (width_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), width_w); } height = photos_base_item_get_height (item); if (height > 0) { height_w = gtk_label_new (_("Height")); gtk_widget_set_halign (height_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (height_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), height_w); } equipment = photos_base_item_get_equipment (item); photos_camera_cache_get_camera_async (priv->camera_cache, equipment, priv->cancellable, photos_properties_dialog_get_camera, self); if (equipment != 0) { priv->camera_w = gtk_label_new (_("Camera")); gtk_widget_set_halign (priv->camera_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (priv->camera_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), priv->camera_w); } exposure_time = photos_base_item_get_exposure_time (item); if (exposure_time > 0.0) { exposure_time_w = gtk_label_new (_("Exposure")); gtk_widget_set_halign (exposure_time_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (exposure_time_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), exposure_time_w); } fnumber = photos_base_item_get_fnumber (item); if (fnumber > 0.0) { fnumber_w = gtk_label_new (_("Aperture")); gtk_widget_set_halign (fnumber_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (fnumber_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), fnumber_w); } focal_length = photos_base_item_get_focal_length (item); if (focal_length > 0.0) { focal_length_w = gtk_label_new (_("Focal Length")); gtk_widget_set_halign (focal_length_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (focal_length_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), focal_length_w); } iso_speed = photos_base_item_get_iso_speed (item); if (iso_speed > 0.0) { iso_speed_w = gtk_label_new (_("ISO Speed")); gtk_widget_set_halign (iso_speed_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (iso_speed_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), iso_speed_w); } flash = photos_base_item_get_flash (item); if (flash != 0) { flash_w = gtk_label_new (_("Flash")); gtk_widget_set_halign (flash_w, GTK_ALIGN_END); context = gtk_widget_get_style_context (flash_w); gtk_style_context_add_class (context, "dim-label"); gtk_container_add (GTK_CONTAINER (priv->grid), flash_w); } name = photos_base_item_get_name (item); if (PHOTOS_IS_LOCAL_ITEM (item)) { priv->title_entry = gtk_entry_new (); gtk_widget_set_halign (priv->title_entry, GTK_ALIGN_START); gtk_widget_set_hexpand (priv->title_entry, TRUE); gtk_entry_set_activates_default (GTK_ENTRY (priv->title_entry), TRUE); gtk_entry_set_text (GTK_ENTRY (priv->title_entry), name); gtk_entry_set_width_chars (GTK_ENTRY (priv->title_entry), 40); gtk_editable_set_editable (GTK_EDITABLE (priv->title_entry), TRUE); g_signal_connect (priv->title_entry, "changed", G_CALLBACK (photos_properties_dialog_title_entry_changed), self); } else { priv->title_entry = gtk_label_new (name); gtk_widget_set_halign (priv->title_entry, GTK_ALIGN_START); } gtk_grid_attach_next_to (GTK_GRID (priv->grid), priv->title_entry, title, GTK_POS_RIGHT, 2, 1); if (author_w != NULL) { GtkWidget *author_data; author_data = gtk_label_new (author); gtk_widget_set_halign (author_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), author_data, author_w, GTK_POS_RIGHT, 2, 1); } if (PHOTOS_IS_FACEBOOK_ITEM (item)) { const gchar *source_name; source_name = photos_base_item_get_source_name (item); source_data = gtk_link_button_new_with_label ("https://www.facebook.com/", source_name); gtk_widget_set_halign (source_data, GTK_ALIGN_START); } else if (PHOTOS_IS_FLICKR_ITEM (item)) { const gchar *source_name; source_name = photos_base_item_get_source_name (item); source_data = gtk_link_button_new_with_label ("https://www.flickr.com/", source_name); gtk_widget_set_halign (source_data, GTK_ALIGN_START); } else /* local item */ { if (photos_base_item_is_collection (item)) { const gchar *source_name; source_name = photos_base_item_get_source_name (item); source_data = gtk_label_new (source_name); gtk_widget_set_halign (source_data, GTK_ALIGN_START); } else { GFile *file; GFile *source_link; GtkWidget *label; const gchar *uri; gchar *source_path; gchar *source_uri; uri = photos_base_item_get_uri (item); file = g_file_new_for_uri (uri); source_link = g_file_get_parent (file); source_path = g_file_get_path (source_link); source_uri = g_file_get_uri (source_link); source_data = gtk_link_button_new_with_label (source_uri, source_path); gtk_widget_set_halign (source_data, GTK_ALIGN_START); label = gtk_bin_get_child (GTK_BIN (source_data)); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); g_object_unref (source_link); g_object_unref (file); } } gtk_grid_attach_next_to (GTK_GRID (priv->grid), source_data, source, GTK_POS_RIGHT, 2, 1); date_modified_data = gtk_label_new (date_modified_str); gtk_widget_set_halign (date_modified_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), date_modified_data, date_modified_w, GTK_POS_RIGHT, 2, 1); if (date_created_w != NULL) { GtkWidget *date_created_data; date_created_data = gtk_label_new (date_created_str); gtk_widget_set_halign (date_created_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), date_created_data, date_created_w, GTK_POS_RIGHT, 2, 1); } type_description = photos_base_item_get_type_description (item); item_type_data = gtk_label_new (type_description); gtk_widget_set_halign (item_type_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), item_type_data, item_type, GTK_POS_RIGHT, 2, 1); if (width_w != NULL) { GtkWidget *width_data; gchar *width_str; width_str = g_strdup_printf ("%"G_GINT64_FORMAT" pixels", width); width_data = gtk_label_new (width_str); gtk_widget_set_halign (width_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), width_data, width_w, GTK_POS_RIGHT, 2, 1); g_free (width_str); } if (height_w != NULL) { GtkWidget *height_data; gchar *height_str; height_str = g_strdup_printf ("%"G_GINT64_FORMAT" pixels", height); height_data = gtk_label_new (height_str); gtk_widget_set_halign (height_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), height_data, height_w, GTK_POS_RIGHT, 2, 1); g_free (height_str); } if (exposure_time_w != NULL) { GtkWidget *exposure_time_data; gchar *exposure_time_str; exposure_time_str = g_strdup_printf ("%.3lf sec", exposure_time); exposure_time_data = gtk_label_new (exposure_time_str); gtk_widget_set_halign (exposure_time_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), exposure_time_data, exposure_time_w, GTK_POS_RIGHT, 2, 1); g_free (exposure_time_str); } if (fnumber_w != NULL) { GtkWidget *fnumber_data; gchar *fnumber_str; fnumber_str = g_strdup_printf ("f/%.1lf", fnumber); fnumber_data = gtk_label_new (fnumber_str); gtk_widget_set_halign (fnumber_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), fnumber_data, fnumber_w, GTK_POS_RIGHT, 2, 1); g_free (fnumber_str); } if (focal_length_w != NULL) { GtkWidget *focal_length_data; gchar *focal_length_str; focal_length_str = g_strdup_printf ("%.0lf mm", focal_length); focal_length_data = gtk_label_new (focal_length_str); gtk_widget_set_halign (focal_length_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), focal_length_data, focal_length_w, GTK_POS_RIGHT, 2, 1); g_free (focal_length_str); } if (iso_speed_w != NULL) { GtkWidget *iso_speed_data; gchar *iso_speed_str; iso_speed_str = g_strdup_printf ("%.0lf", iso_speed); iso_speed_data = gtk_label_new (iso_speed_str); gtk_widget_set_halign (iso_speed_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), iso_speed_data, iso_speed_w, GTK_POS_RIGHT, 2, 1); g_free (iso_speed_str); } if (flash_w != NULL) { GtkWidget *flash_data; gchar *flash_str; if (flash == PHOTOS_FLASH_OFF) flash_str = g_strdup (_("Off, did not fire")); else if (flash == PHOTOS_FLASH_ON) flash_str = g_strdup (_("On, fired")); else g_assert_not_reached (); flash_data = gtk_label_new (flash_str); gtk_widget_set_halign (flash_data, GTK_ALIGN_START); gtk_grid_attach_next_to (GTK_GRID (priv->grid), flash_data, flash_w, GTK_POS_RIGHT, 2, 1); g_free (flash_str); } g_free (date_created_str); g_free (date_modified_str); }
static void ide_recent_projects_load_recent (IdeRecentProjects *self) { g_autoptr(GBookmarkFile) projects_file = NULL; g_autoptr(GError) error = NULL; gboolean needs_sync = FALSE; gchar **uris; g_assert (IDE_IS_RECENT_PROJECTS (self)); if (!(projects_file = ide_recent_projects_get_bookmarks (self, &error))) { g_warning ("Unable to open recent projects file: %s", error->message); return; } uris = g_bookmark_file_get_uris (projects_file, NULL); for (gsize z = 0; uris[z]; z++) { g_autoptr(GDateTime) last_modified_at = NULL; g_autoptr(GFile) project_file = NULL; g_autoptr(GFile) directory = NULL; g_autoptr(GPtrArray) languages = NULL; g_autoptr(IdeProjectInfo) project_info = NULL; g_autofree gchar *name = NULL; g_autofree gchar *description = NULL; const gchar *build_system_hint = NULL; const gchar *build_system_name = NULL; const gchar *uri = uris[z]; const gchar *diruri = NULL; time_t modified; g_auto(GStrv) groups = NULL; gsize len; groups = g_bookmark_file_get_groups (projects_file, uri, &len, NULL); for (gsize i = 0; i < len; i++) { if (g_str_equal (groups [i], IDE_RECENT_PROJECTS_GROUP)) goto is_project; } continue; is_project: project_file = g_file_new_for_uri (uri); if (g_file_is_native (project_file) && !g_file_query_exists (project_file, NULL)) { g_bookmark_file_remove_item (projects_file, uri, NULL); needs_sync = TRUE; continue; } name = g_bookmark_file_get_title (projects_file, uri, NULL); description = g_bookmark_file_get_description (projects_file, uri, NULL); modified = g_bookmark_file_get_modified (projects_file, uri, NULL); last_modified_at = g_date_time_new_from_unix_local (modified); for (gsize i = 0; i < len; i++) { if (g_str_has_prefix (groups [i], IDE_RECENT_PROJECTS_DIRECTORY)) diruri = groups [i] + strlen (IDE_RECENT_PROJECTS_DIRECTORY); } if (diruri == NULL) { /* If the old project was a plain-ol'-directory, then we don't want * it's parent (which might be ~/Projects), instead reuse the project * file as the directory too. */ if (g_file_query_file_type (project_file, 0, NULL) == G_FILE_TYPE_DIRECTORY) directory = g_file_dup (project_file); else directory = g_file_get_parent (project_file); } else directory = g_file_new_for_uri (diruri); languages = g_ptr_array_new_with_free_func (g_free); for (gsize i = 0; i < len; i++) { if (g_str_has_prefix (groups [i], IDE_RECENT_PROJECTS_LANGUAGE_GROUP_PREFIX)) g_ptr_array_add (languages, g_strdup (groups [i] + strlen (IDE_RECENT_PROJECTS_LANGUAGE_GROUP_PREFIX))); else if (g_str_has_prefix (groups [i], IDE_RECENT_PROJECTS_BUILD_SYSTEM_GROUP_PREFIX)) build_system_name = groups [i] + strlen (IDE_RECENT_PROJECTS_BUILD_SYSTEM_GROUP_PREFIX); else if (g_str_has_prefix (groups [i], IDE_RECENT_PROJECTS_BUILD_SYSTEM_HINT_GROUP_PREFIX)) build_system_hint = groups [i] + strlen (IDE_RECENT_PROJECTS_BUILD_SYSTEM_HINT_GROUP_PREFIX); } /* Cleanup any extra space */ for (guint i = 0; i < languages->len; i++) g_strstrip ((gchar *)g_ptr_array_index (languages, i)); g_ptr_array_add (languages, NULL); project_info = g_object_new (IDE_TYPE_PROJECT_INFO, "build-system-hint", build_system_hint, "build-system-name", build_system_name, "description", description, "directory", directory, "file", project_file, "is-recent", TRUE, "languages", (gchar **)languages->pdata, "last-modified-at", last_modified_at, "name", name, NULL); ide_recent_projects_added (self, project_info); g_hash_table_insert (self->recent_uris, g_strdup (uri), NULL); } g_strfreev (uris); if (needs_sync) g_bookmark_file_to_file (projects_file, self->file_uri, NULL); }
static void load_chain (PatrolDialogWindow *self, PatrolDialogRecord *r, guint idx, GtkWidget *container) { /* build tree model */ GtkTreeStore *tree_store = gtk_tree_store_new(COLS_NUM, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_POINTER, G_TYPE_POINTER); GtkTreeIter *parent = NULL, iter; gint i, num_certs = gcr_certificate_chain_get_length(r->chain); GcrCertificate *cert = NULL; for (i = num_certs - 1; i >= 0; i--) { cert = gcr_certificate_chain_get_certificate(r->chain, i); gchar *label = gcr_certificate_get_subject_name(cert); gtk_tree_store_append(tree_store, &iter, parent); gtk_tree_store_set(tree_store, &iter, COL_NAME, label, COL_PIN, i == r->pin_level, COL_PIN_LEVEL, i, COL_CERT, cert, COL_REC, r, -1); parent = &iter; g_free(label); } /* set hierarchy title */ GtkWidget *title_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start(GTK_BOX(container), title_box, FALSE, FALSE, 0); gchar *text, *str; GtkWidget *label = gtk_label_new(NULL); GtkWidget *value; if (idx == 0) { switch (self->pv->result) { case PATROL_VERIFY_NEW: case PATROL_VERIFY_CHANGE: text = g_strdup_printf("<b>%s</b>", _("New Certificate")); break; case PATROL_VERIFY_REJECT: text = g_strdup_printf("<b>%s</b>", _("Rejected Certificate")); break; default: text = g_strdup_printf("<b>%s</b>", _("Selected Certificate")); break; } } else { text = g_strdup_printf("<b>%s #%d</b>", _("Stored Certificate"), idx); gtk_widget_set_margin_bottom(GTK_WIDGET(label), 2); } gtk_label_set_markup(GTK_LABEL(label), text); g_free(text); gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); gtk_box_pack_start(GTK_BOX(title_box), label, FALSE, FALSE, 0); GtkWidget *grid = gtk_grid_new(); gtk_widget_set_margin_left(GTK_WIDGET(grid), 5); gtk_box_pack_start(GTK_BOX(title_box), grid, FALSE, FALSE, 0); label = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(label), _("Seen: ")); str = g_strdup_printf("%" G_GINT64_FORMAT, r->rec.count_seen); text = g_strdup_printf(g_dngettext(textdomain(NULL), "%s time", "%s times", r->rec.count_seen), str); g_free(str); value = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(value), text); g_free(text); gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); gtk_widget_set_halign(GTK_WIDGET(value), GTK_ALIGN_START); gtk_grid_attach(GTK_GRID(grid), label, 0, 0, 1, 1); gtk_grid_attach(GTK_GRID(grid), value, 1, 0, 1, 1); label = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(label), _("First seen: ")); GDateTime *dtime = g_date_time_new_from_unix_local(r->rec.first_seen); text = g_date_time_format(dtime, "%c"); g_date_time_unref(dtime); value = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(value), text); g_free(text); gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); gtk_widget_set_halign(GTK_WIDGET(value), GTK_ALIGN_START); gtk_grid_attach(GTK_GRID(grid), label, 0, 1, 1, 1); gtk_grid_attach(GTK_GRID(grid), value, 1, 1, 1, 1); if (r->rec.first_seen != r->rec.last_seen) { label = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(label), _("Last seen: ")); dtime = g_date_time_new_from_unix_local(r->rec.last_seen); text = g_date_time_format(dtime, "%c"); g_date_time_unref(dtime); value = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(value), text); g_free(text); gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); gtk_widget_set_halign(GTK_WIDGET(value), GTK_ALIGN_START); gtk_grid_attach(GTK_GRID(grid), label, 0, 2, 1, 1); gtk_grid_attach(GTK_GRID(grid), value, 1, 2, 1, 1); } if (cert) { label = gtk_label_new(NULL); gtk_label_set_text(GTK_LABEL(label), _("Validity: ")); GDate *expiry = gcr_certificate_get_expiry_date(cert); GDate *now = g_date_new(); g_date_set_time_t(now, time(NULL)); gint diff = g_date_days_between(now, expiry); g_date_free(now); g_date_free(expiry); if (diff > 0) { text = g_strdup_printf(g_dngettext(textdomain(NULL), "Certificate is valid for %d more day", "Certificate is valid for %d more days", diff), diff); } else if (diff < 0) { diff = abs(diff); text = g_strdup_printf(g_dngettext(textdomain(NULL), "Certificate <b>expired</b> %d day ago", "Certificate <b>expired</b> %d days ago", diff), diff); } else { text = g_strdup_printf("Certificate expires today"); } value = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(value), text); g_free(text); gtk_widget_set_halign(GTK_WIDGET(label), GTK_ALIGN_START); gtk_widget_set_halign(GTK_WIDGET(value), GTK_ALIGN_START); gtk_grid_attach(GTK_GRID(grid), label, 0, 3, 1, 1); gtk_grid_attach(GTK_GRID(grid), value, 1, 3, 1, 1); } gtk_widget_show_all(title_box); /* build tree view */ GtkWidget *tree_view; tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(tree_store)); gtk_tree_view_expand_all(GTK_TREE_VIEW(tree_view)); gtk_box_pack_start(GTK_BOX(container), tree_view, FALSE, FALSE, 0); gtk_widget_show(tree_view); g_signal_connect(tree_view, "focus-in-event", G_CALLBACK(on_tree_view_focus), self); g_signal_connect(self->pv->renderer, "data-changed", G_CALLBACK(on_cert_changed), tree_view); GtkTreeSelection *tree_sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); g_signal_connect(tree_sel, "changed", G_CALLBACK(on_tree_selection_changed), self); if (idx == 0) // new chain gtk_tree_selection_select_iter(tree_sel, &iter); /* first column */ GtkCellRenderer *tree_renderer = gtk_cell_renderer_text_new(); GtkTreeViewColumn *tree_column = gtk_tree_view_column_new_with_attributes(_("Certificate Hierarchy"), tree_renderer, "text", COL_NAME, NULL); gtk_tree_view_column_set_expand (tree_column, TRUE); gtk_tree_view_insert_column (GTK_TREE_VIEW (tree_view), tree_column, -1); /* second column */ GtkCellRenderer *toggle_renderer = gtk_cell_renderer_toggle_new(); g_signal_connect(toggle_renderer, "toggled", G_CALLBACK(on_radio_toggled), tree_store); gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(toggle_renderer), TRUE); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(tree_view), -1, _("Pin"), toggle_renderer, "active", COL_PIN, NULL); g_object_unref(tree_store); }
/** * ido_appointment_menu_item_new_from_model: * @menu_item: the corresponding menuitem * @actions: action group to tell when this GtkMenuItem is activated * * Creates a new IdoTimeStampMenuItem with properties initialized * appropriately for a org.ayatana.indicator.alarm * * If the menuitem's 'action' attribute is set, trigger that action * in @actions when this IdoAppointmentMenuItem is activated. */ GtkMenuItem * ido_appointment_menu_item_new_from_model (GMenuItem * menu_item, GActionGroup * actions) { guint i; guint n; gint64 i64; gchar * str; IdoBasicMenuItem * ido_menu_item; GParameter parameters[8]; /* create the ido_menu_item */ n = 0; if (g_menu_item_get_attribute (menu_item, G_MENU_ATTRIBUTE_LABEL, "s", &str)) { GParameter p = { "text", G_VALUE_INIT }; g_value_init (&p.value, G_TYPE_STRING); g_value_take_string (&p.value, str); parameters[n++] = p; } if (g_menu_item_get_attribute (menu_item, "x-ayatanaindicator-color", "s", &str)) { GParameter p = { "icon", G_VALUE_INIT }; g_value_init (&p.value, G_TYPE_OBJECT); g_value_take_object (&p.value, create_color_icon_pixbuf (str)); parameters[n++] = p; g_free (str); } if (g_menu_item_get_attribute (menu_item, "x-ayatanaindicator-time-format", "s", &str)) { GParameter p = { "format", G_VALUE_INIT }; g_value_init (&p.value, G_TYPE_STRING); g_value_take_string (&p.value, str); parameters[n++] = p; } if (g_menu_item_get_attribute (menu_item, "x-ayatanaindicator-time", "x", &i64)) { GParameter p = { "date-time", G_VALUE_INIT }; g_value_init (&p.value, G_TYPE_DATE_TIME); g_value_take_boxed (&p.value, g_date_time_new_from_unix_local (i64)); parameters[n++] = p; } g_assert (n <= G_N_ELEMENTS (parameters)); ido_menu_item = g_object_newv (IDO_TYPE_TIME_STAMP_MENU_ITEM, n, parameters); for (i=0; i<n; i++) g_value_unset (¶meters[i].value); /* add an ActionHelper */ if (g_menu_item_get_attribute (menu_item, "action", "s", &str)) { GVariant * target; IdoActionHelper * helper; target = g_menu_item_get_attribute_value (menu_item, "target", G_VARIANT_TYPE_ANY); helper = ido_action_helper_new (GTK_WIDGET(ido_menu_item), actions, str, target); g_signal_connect_swapped (ido_menu_item, "activate", G_CALLBACK (ido_action_helper_activate), helper); g_signal_connect_swapped (ido_menu_item, "destroy", G_CALLBACK (g_object_unref), helper); g_clear_pointer (&target, g_variant_unref); g_free (str); } return GTK_MENU_ITEM (ido_menu_item); }
static void show_week (UmHistoryDialog *um) { GArray *login_history; GDateTime *datetime, *temp; gint64 from, to; gint i, line; GtkWidget *grid; UmLoginHistory history; show_week_label (um); clear_history (um); set_sensitivity (um); login_history = get_login_history (um->user); if (login_history == NULL) { return; } /* Find first record for week */ from = g_date_time_to_unix (um->week); temp = g_date_time_add_weeks (um->week, 1); to = g_date_time_to_unix (temp); g_date_time_unref (temp); for (i = login_history->len - 1; i >= 0; i--) { history = g_array_index (login_history, UmLoginHistory, i); if (history.login_time < to) { break; } } /* Add new session records */ grid = get_widget (um, "history-grid"); line = 0; for (;i >= 0; i--) { history = g_array_index (login_history, UmLoginHistory, i); if (history.logout_time > 0 && history.logout_time < from) { break; } /* Display only x-sessions */ if (g_strrstr (history.type, ":") == NULL) { continue; } if (history.logout_time > 0 && history.logout_time < to) { datetime = g_date_time_new_from_unix_local (history.logout_time); add_record (grid, datetime, "Session Ended", line); line++; } if (history.login_time >= from) { datetime = g_date_time_new_from_unix_local (history.login_time); add_record (grid, datetime, "Session Started", line); line++; } } gtk_widget_show_all (grid); g_array_free (login_history, TRUE); }
int main(int ac, char* av[]) { mega_session* s; gc_error_free GError *local_err = NULL; GSList *l = NULL, *i; gint j; tool_init(&ac, &av, "- list files stored at mega.nz", entries); s = tool_start_session(); if (!s) return 1; // gather nodes if (ac == 1) { l = mega_session_ls_all(s); opt_names = FALSE; } else { if (ac > 2 || opt_recursive) opt_names = FALSE; for (j = 1; j < ac; j++) { gc_free gchar* path = tool_convert_filename(av[j], FALSE); mega_node* n = mega_session_stat(s, path); if (n && (n->type == MEGA_NODE_FILE || !opt_names)) l = g_slist_append(l, n); l = g_slist_concat(l, mega_session_ls(s, path, opt_recursive)); } } l = g_slist_sort(l, (GCompareFunc)compare_node); // export if requested if (opt_export && !mega_session_addlinks(s, l, &local_err)) { g_printerr("ERROR: Can't read links info from mega.nz: %s\n", local_err->message); g_slist_free(l); tool_fini(s); return 1; } if (l && opt_long && opt_header && !opt_export) { g_print("===================================================================================\n"); g_print("%-11s %-11s %-1s %13s %-19s %s\n", "Handle", "Owner", "T", "Size", "Mod. Date", opt_names ? "Filename" : "Path"); g_print("===================================================================================\n"); } for (i = l; i; i = i->next) { mega_node* n = i->data; gc_free gchar* node_path = mega_node_get_path_dup(n); if (opt_export) g_print("%73s ", n->link ? mega_node_get_link(n, TRUE) : ""); if (opt_long) { GDateTime* dt = g_date_time_new_from_unix_local(n->timestamp); gc_free gchar* time_str = g_date_time_format(dt, "%Y-%m-%d %H:%M:%S"); g_date_time_unref(dt); gc_free gchar* size_str = NULL; if (opt_human) size_str = n->size > 0 ? g_format_size_full(n->size, G_FORMAT_SIZE_IEC_UNITS) : g_strdup("-"); else size_str = n->size > 0 ? g_strdup_printf("%" G_GUINT64_FORMAT, n->size) : g_strdup("-"); g_print("%-11s %-11s %d %13s %19s %s\n", n->handle, n->user_handle ? n->user_handle : "", n->type, size_str, n->timestamp > 0 ? time_str : "", opt_names ? n->name : node_path ); } else g_print("%s\n", opt_names ? n->name : node_path); } g_slist_free(l); tool_fini(s); return 0; }
static void ide_recent_projects_load_recent (IdeRecentProjects *self) { g_autoptr(GBookmarkFile) projects_file; g_autoptr(GError) error = NULL; gchar **uris; gssize z; g_assert (IDE_IS_RECENT_PROJECTS (self)); projects_file = ide_recent_projects_get_bookmarks (self, &error); if (projects_file == NULL) { g_warning ("Unable to open recent projects file: %s", error->message); return; } uris = g_bookmark_file_get_uris (projects_file, NULL); for (z = 0; uris[z]; z++) { g_autoptr(GDateTime) last_modified_at = NULL; g_autoptr(GFile) project_file = NULL; g_autoptr(GFile) directory = NULL; g_autoptr(GPtrArray) languages = NULL; g_autoptr(IdeProjectInfo) project_info = NULL; const gchar *description; const gchar *uri = uris[z]; const gchar *name; time_t modified; gchar **groups; gsize len; gsize i; groups = g_bookmark_file_get_groups (projects_file, uri, &len, NULL); for (i = 0; i < len; i++) { if (g_str_equal (groups [i], IDE_RECENT_PROJECTS_GROUP)) goto is_project; } continue; is_project: name = g_bookmark_file_get_title (projects_file, uri, NULL); description = g_bookmark_file_get_description (projects_file, uri, NULL); modified = g_bookmark_file_get_modified (projects_file, uri, NULL); last_modified_at = g_date_time_new_from_unix_local (modified); project_file = g_file_new_for_uri (uri); directory = g_file_get_parent (project_file); languages = g_ptr_array_new (); for (i = 0; i < len; i++) { if (g_str_has_prefix (groups [i], IDE_RECENT_PROJECTS_LANGUAGE_GROUP_PREFIX)) g_ptr_array_add (languages, groups [i] + strlen (IDE_RECENT_PROJECTS_LANGUAGE_GROUP_PREFIX)); } g_ptr_array_add (languages, NULL); project_info = g_object_new (IDE_TYPE_PROJECT_INFO, "description", description, "directory", directory, "file", project_file, "is-recent", TRUE, "languages", (gchar **)languages->pdata, "last-modified-at", last_modified_at, "name", name, NULL); ide_recent_projects_added (self, project_info); g_hash_table_insert (self->recent_uris, g_strdup (uri), NULL); } g_strfreev (uris); }