[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
gnokii/xgnokii xgnokii_lowlevel.c, 1.81, 1.82 xgnokii_lowlevel.h, 1.28,
From: |
BORBELY Zoltan <address@hidden> |
Subject: |
gnokii/xgnokii xgnokii_lowlevel.c, 1.81, 1.82 xgnokii_lowlevel.h, 1.28, 1.29 xgnokii_xring.c, 1.1, 1.2 |
Date: |
Sat, 25 Oct 2003 13:17:20 +0000 |
Update of /cvsroot/gnokii/gnokii/xgnokii
In directory subversions:/tmp/cvs-serv19405/xgnokii
Modified Files:
xgnokii_lowlevel.c xgnokii_lowlevel.h xgnokii_xring.c
Log Message:
xgnokii ringtone editor enhancements
Index: xgnokii_xring.c
===================================================================
RCS file: /cvsroot/gnokii/gnokii/xgnokii/xgnokii_xring.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** xgnokii_xring.c 5 Oct 2003 22:44:30 -0000 1.1
--- xgnokii_xring.c 25 Oct 2003 13:17:18 -0000 1.2
***************
*** 66,69 ****
--- 66,70 ----
#include "xpm/Send.xpm"
#include "xpm/Read.xpm"
+ #include "xpm/Delete.xpm"
#include "xpm/Open.xpm"
#include "xpm/Save.xpm"
***************
*** 198,202 ****
};
! #define WHITE_COUNT 21 /* mitä on pianonkosketin englanniksi */
struct GUI {
--- 199,203 ----
};
! #define WHITE_COUNT 28 /* mitä on pianonkosketin englanniksi */
struct GUI {
***************
*** 208,211 ****
--- 209,215 ----
GtkWidget *toolbar;
GtkWidget *vbox;
+ GtkWidget *rlist_combo;
+ GtkWidget *name;
+ GtkWidget *tempo_combo;
ErrorDialog error_dialog;
PixmapAndMask pam[KIE_COUNT];
***************
*** 219,226 ****
--- 223,236 ----
int volume;
gn_ringtone ringtone;
+ gn_ringtone_list ringtone_list;
};
static struct GUI gi = {0};
static char xwhi[] = {6, 4, 2, 6, 4, 4, 2};
+ static char *beats_per_minute[] = {
+ " 25", " 28", " 31", " 35", " 40", " 45", " 50", " 56", " 63", " 70",
+ " 80", " 90", "100", "112", "125", "140", "160", "180", "200", "225",
+ "250", "285", "320", "355", "400", "450", "500", "565", "635", "715",
+ "800", "900", NULL};
#define BLACK_PRESSED 64
***************
*** 273,276 ****
--- 283,303 ----
}
+ static void get_ringtone_list(gn_ringtone_list *rlist)
+ {
+ PhoneEvent *e = g_malloc(sizeof(PhoneEvent));
+
+ /* prepare data for event */
+
+ e->event = Event_GetRingtoneList;
+ e->data = rlist;
+
+ /* launch event and wait for completition */
+ GUI_InsertEvent(e);
+
+ pthread_mutex_lock(&ringtoneMutex);
+ pthread_cond_wait(&ringtoneCond, &ringtoneMutex);
+ pthread_mutex_unlock(&ringtoneMutex);
+ }
+
static void set_pixmap(struct GUI *gui, int flag)
{
***************
*** 345,348 ****
--- 372,464 ----
}
+ static void load_ringtone_list(void)
+ {
+ GList *list;
+ int i, uidx;
+ char **userdef;
+ gn_ringtone_info *ri;
+
+ get_ringtone_list(&gi.ringtone_list);
+ userdef = g_new0(char *, gi.ringtone_list.userdef_count);
+
+ list = NULL;
+ i = 0;
+ while (i < gi.ringtone_list.count) {
+ if (!gi.ringtone_list.ringtone[i].readable &&
!gi.ringtone_list.ringtone[i].writable) {
+ memmove(gi.ringtone_list.ringtone + i,
+ gi.ringtone_list.ringtone + i + 1,
+ (GN_RINGTONE_MAX_COUNT - i - 1) *
sizeof(gn_ringtone_info));
+ gi.ringtone_list.count--;
+ continue;
+ }
+ uidx = gi.ringtone_list.ringtone[i].location -
gi.ringtone_list.userdef_location;
+ if (uidx >= 0 && uidx < gi.ringtone_list.userdef_count) {
+ userdef[uidx] = g_strdup_printf(_("User #%d (%s)"),
uidx, gi.ringtone_list.ringtone[i].name);
+ list = g_list_append(list, userdef[uidx]);
+ } else {
+ list = g_list_append(list,
gi.ringtone_list.ringtone[i].name);
+ }
+ i++;
+ }
+
+ for (i = 0; i < gi.ringtone_list.userdef_count; i++) {
+ if (gi.ringtone_list.count >= GN_RINGTONE_MAX_COUNT) break;
+ if (userdef[i]) continue;
+
+ ri = gi.ringtone_list.ringtone + gi.ringtone_list.count++;
+ ri->location = gi.ringtone_list.userdef_location + i;
+ ri->name[0] = '\0';
+ ri->user_defined = 0;
+ ri->readable = 0;
+ ri->writable = 1;
+
+ userdef[i] = g_strdup_printf(_("User #%d (*EMPTY*)"), i);
+ list = g_list_append(list, userdef[i]);
+ }
+
+ gtk_combo_set_popdown_strings(GTK_COMBO(gi.rlist_combo), list);
+
+ for (i = 0; i < gi.ringtone_list.userdef_count; i++)
+ if (userdef[i]) g_free(userdef[i]);
+ }
+
+ gn_ringtone_info *get_selected_ringtone(void)
+ {
+ GtkList *list;
+ int pos;
+
+ list = GTK_LIST(GTK_COMBO(gi.rlist_combo)->list);
+ pos = gtk_list_child_position(list, list->selection->data);
+
+ if (pos < 0 || pos > gi.ringtone_list.count) return NULL;
+
+ return gi.ringtone_list.ringtone + pos;
+ }
+
+ static void get_ringtone_info(gn_ringtone *ringtone)
+ {
+ gn_ringtone_info *ri;
+ char term;
+ int x;
+
+ if (!(ri = get_selected_ringtone())) return;
+ ringtone->location = ri->location;
+
+ snprintf(ringtone->name, sizeof(ringtone->name), "%s",
gtk_entry_get_text(GTK_ENTRY(gi.name)));
+
+ if
(sscanf(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(gi.tempo_combo)->entry)), " %d
%c", &x, &term) == 1)
+ ringtone->tempo = x;
+ }
+
+ static void set_ringtone_info(gn_ringtone *ringtone)
+ {
+ char buf[256];
+
+ gtk_entry_set_text(GTK_ENTRY(gi.name), ringtone->name);
+
+ snprintf(buf, sizeof(buf), "%3d", ringtone->tempo);
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(gi.tempo_combo)->entry), buf);
+ }
+
/* When invoked (via signal delete_event), terminates the application */
static void close_application(GtkWidget * widget, GdkEvent * event, gpointer
data)
***************
*** 494,497 ****
--- 610,614 ----
gi.file_name = g_strdup(file_name);
+ set_ringtone_info(&gi.ringtone);
}
***************
*** 540,543 ****
--- 657,662 ----
GtkWidget *file_select;
+ get_ringtone_info(&gi.ringtone);
+
file_select = gtk_file_selection_new(_("Save ringtone as..."));
***************
*** 556,559 ****
--- 675,680 ----
gn_error err;
+ get_ringtone_info(&gi.ringtone);
+
if (!gi.file_name) {
save_ringtone_as(w);
***************
*** 574,579 ****
--- 695,707 ----
int i, freq, usec;
+ get_ringtone_info(&gi.ringtone);
+
set_pixmap(&gi, FALSE);
for (i = 0; i < gi.ringtone.notes_count; i++) {
+ if (gi.ringtone.notes[i].note == 255) {
+ gn_ringtone_get_tone(&gi.ringtone, i, &freq, &usec);
+ play_tone(freq, gi.volume, usec - 10000);
+ continue;
+ }
if (gi.ringtone.notes[i].note & 1)
gi.pressed = BLACK_PRESSED + gi.ringtone.notes[i].note
/ 2;
***************
*** 587,590 ****
--- 715,720 ----
usleep(20000);
}
+
+ play_tone(0, 0, 0);
}
***************
*** 592,595 ****
--- 722,729 ----
{
gn_error err;
+ gn_ringtone_info *ri;
+
+ ri = get_selected_ringtone();
+ gi.ringtone.location = ri->location;
if ((err = ringtone_event(Event_GetRingtone, &gi.ringtone)) !=
GN_ERR_NONE) {
***************
*** 600,603 ****
--- 734,739 ----
return;
}
+
+ set_ringtone_info(&gi.ringtone);
}
***************
*** 606,609 ****
--- 742,747 ----
gn_error err;
+ get_ringtone_info(&gi.ringtone);
+
if ((err = ringtone_event(Event_SetRingtone, &gi.ringtone)) !=
GN_ERR_NONE) {
gchar *buf = g_strdup_printf(_("Error setting
ringtone\n(error=%s)"), gn_error_print(err));
***************
*** 613,616 ****
--- 751,775 ----
return;
}
+
+ load_ringtone_list();
+ }
+
+ static void delete_ringtone(GtkWidget *w)
+ {
+ gn_error err;
+ gn_ringtone ringtone;
+
+ memset(&ringtone, 0, sizeof(ringtone));
+ get_ringtone_info(&ringtone);
+
+ if ((err = ringtone_event(Event_DeleteRingtone, &ringtone)) !=
GN_ERR_NONE) {
+ gchar *buf = g_strdup_printf(_("Error deleting
ringtone\n(error=%s)"), gn_error_print(err));
+ gtk_label_set_text(GTK_LABEL(gi.error_dialog.text), buf);
+ gtk_widget_show(gi.error_dialog.dialog);
+ g_free(buf);
+ return;
+ }
+
+ load_ringtone_list();
}
***************
*** 624,627 ****
--- 783,788 ----
memset(&gi.ringtone, 0, sizeof(gn_ringtone));
gi.ringtone.tempo = 120;
+
+ set_ringtone_info(&gi.ringtone);
}
***************
*** 630,633 ****
--- 791,795 ----
{
int i;
+ GList *list;
GtkItemFactoryEntry menu_items[] = {
{NULL, NULL, NULL, 0, "<Branch>"},
***************
*** 638,641 ****
--- 800,804 ----
{NULL, NULL, get_ringtone, 0, NULL},
{NULL, NULL, set_ringtone, 0, NULL},
+ {NULL, NULL, delete_ringtone, 0, NULL},
{NULL, NULL, play_ringtone, 0, NULL},
{NULL, NULL, NULL, 0, "<Separator>"},
***************
*** 652,660 ****
menu_items[5].path = g_strdup(_("/File/_Get ringtone"));
menu_items[6].path = g_strdup(_("/File/Se_t ringtone"));
! menu_items[7].path = g_strdup(_("/File/_Play"));
! menu_items[8].path = g_strdup(_("/File/S2"));
! menu_items[9].path = g_strdup(_("/File/_Close"));
! menu_items[10].path = g_strdup(_("/_Edit"));
! menu_items[11].path = g_strdup(_("/Edit/_Clear"));
/* create toplevel window */
--- 815,824 ----
menu_items[5].path = g_strdup(_("/File/_Get ringtone"));
menu_items[6].path = g_strdup(_("/File/Se_t ringtone"));
! menu_items[7].path = g_strdup(_("/File/Delete ringtone"));
! menu_items[8].path = g_strdup(_("/File/_Play"));
! menu_items[9].path = g_strdup(_("/File/S2"));
! menu_items[10].path = g_strdup(_("/File/_Close"));
! menu_items[11].path = g_strdup(_("/_Edit"));
! menu_items[12].path = g_strdup(_("/Edit/_Clear"));
/* create toplevel window */
***************
*** 706,709 ****
--- 870,877 ----
(GtkSignalFunc)set_ringtone, gi.toolbar);
+ gtk_toolbar_append_item(GTK_TOOLBAR(gi.toolbar), NULL, _("Delete
ringtone"), NULL,
+ NewPixmap(Delete_xpm, gi.w->window,
&gi.w->style->bg[GTK_STATE_NORMAL]),
+ (GtkSignalFunc)delete_ringtone, gi.toolbar);
+
gtk_toolbar_append_space(GTK_TOOLBAR(gi.toolbar));
***************
*** 722,725 ****
--- 890,917 ----
(GtkSignalFunc)play_ringtone, gi.toolbar);
+ gtk_toolbar_append_space(GTK_TOOLBAR(gi.toolbar));
+
+ gi.rlist_combo = gtk_combo_new();
+ gtk_combo_set_use_arrows_always(GTK_COMBO(gi.rlist_combo), 1);
+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(gi.rlist_combo)->entry),
FALSE);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(gi.toolbar), gi.rlist_combo,
_("Select ringtone"), NULL);
+
+ gtk_toolbar_append_space(GTK_TOOLBAR(gi.toolbar));
+
+ gi.name = gtk_entry_new();
+ gtk_toolbar_append_widget(GTK_TOOLBAR(gi.toolbar), gi.name, _("Ringtone
name"), NULL);
+
+ gtk_toolbar_append_space(GTK_TOOLBAR(gi.toolbar));
+
+ gi.tempo_combo = gtk_combo_new();
+ gtk_combo_set_use_arrows_always(GTK_COMBO(gi.tempo_combo), 1);
+ gtk_widget_set_usize(gi.tempo_combo, 60, -1);
+ gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(gi.tempo_combo)->entry),
TRUE);
+ gtk_entry_set_max_length(GTK_ENTRY(GTK_COMBO(gi.tempo_combo)->entry),
3);
+ for (list = NULL, i = 0; beats_per_minute[i]; i++)
+ list = g_list_append(list, beats_per_minute[i]);
+ gtk_combo_set_popdown_strings(GTK_COMBO(gi.tempo_combo), list);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(gi.toolbar), gi.tempo_combo,
_("Set tempo"), NULL);
+
gtk_box_pack_start(GTK_BOX(gi.vbox), gi.toolbar, FALSE, FALSE, 0);
***************
*** 727,731 ****
gi.f = gtk_fixed_new();
! gtk_widget_set_usize(gi.f, 504, 160);
gtk_box_pack_start(GTK_BOX(gi.vbox), gi.f, FALSE, FALSE, 0);
--- 919,923 ----
gi.f = gtk_fixed_new();
! gtk_widget_set_usize(gi.f, 672, 160);
gtk_box_pack_start(GTK_BOX(gi.vbox), gi.f, FALSE, FALSE, 0);
***************
*** 795,798 ****
--- 987,992 ----
{
clear_ringtone(NULL);
+
+ load_ringtone_list();
gi.focus = FALSE;
Index: xgnokii_lowlevel.c
===================================================================
RCS file: /cvsroot/gnokii/gnokii/xgnokii/xgnokii_lowlevel.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -C2 -d -r1.81 -r1.82
*** xgnokii_lowlevel.c 5 Oct 2003 22:44:30 -0000 1.81
--- xgnokii_lowlevel.c 25 Oct 2003 13:17:18 -0000 1.82
***************
*** 1154,1157 ****
--- 1154,1197 ----
}
+ static gint A_DeleteRingtone(gpointer data)
+ {
+ D_Ringtone *d = (D_Ringtone *) data;
+ gn_data gdat;
+
+ gn_data_clear(&gdat);
+
+ pthread_mutex_lock(&ringtoneMutex);
+ gdat.ringtone = d->ringtone;
+
+ d->status = gn_sm_functions(GN_OP_DeleteRingtone, &gdat, &statemachine);
+
+ pthread_cond_signal(&ringtoneCond);
+ pthread_mutex_unlock(&ringtoneMutex);
+
+ return d->status;
+ }
+
+ static gint A_GetRingtoneList(gpointer data)
+ {
+ gn_ringtone_list *d = (gn_ringtone_list *) data;
+ gn_data gdat;
+
+ gn_data_clear(&gdat);
+
+ pthread_mutex_lock(&ringtoneMutex);
+ gdat.ringtone_list = d;
+
+ if (gn_sm_functions(GN_OP_GetRingtoneList, &gdat, &statemachine) !=
GN_ERR_NONE) {
+ d->count = 0;
+ d->userdef_location = 0;
+ d->userdef_count = 0;
+ }
+
+ pthread_cond_signal(&ringtoneCond);
+ pthread_mutex_unlock(&ringtoneMutex);
+
+ return GN_ERR_NONE;
+ }
+
static gint A_Exit(gpointer data)
{
***************
*** 1192,1195 ****
--- 1232,1237 ----
A_GetRingtone,
A_SetRingtone,
+ A_DeleteRingtone,
+ A_GetRingtoneList,
A_Exit};
Index: xgnokii_lowlevel.h
===================================================================
RCS file: /cvsroot/gnokii/gnokii/xgnokii/xgnokii_lowlevel.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** xgnokii_lowlevel.h 5 Oct 2003 22:44:30 -0000 1.28
--- xgnokii_lowlevel.h 25 Oct 2003 13:17:18 -0000 1.29
***************
*** 76,79 ****
--- 76,81 ----
Event_GetRingtone,
Event_SetRingtone,
+ Event_DeleteRingtone,
+ Event_GetRingtoneList,
Event_Exit
} PhoneAction;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- gnokii/xgnokii xgnokii_lowlevel.c, 1.81, 1.82 xgnokii_lowlevel.h, 1.28, 1.29 xgnokii_xring.c, 1.1, 1.2,
BORBELY Zoltan <address@hidden> <=