gnokii-commit
[Top][All Lists]
Advanced

[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;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]