Enlightenment CVS committal

Author  : titan
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_widget_fsel.c 


Log Message:
More preview work. It is nearly complete.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_fsel.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_widget_fsel.c     13 Aug 2006 02:49:54 -0000      1.7
+++ e_widget_fsel.c     13 Aug 2006 05:00:16 -0000      1.8
@@ -10,13 +10,17 @@
    Evas_Object *o_table;
    Evas_Object *o_table2;
    Evas_Object *o_preview_table;
+   Evas_Object *o_preview_preview_table;
+   Evas_Object *o_preview_frame;
    Evas_Object *o_preview_scroll;
-   Evas_Object *o_preview_name;
    Evas_Object *o_preview_size;
+   Evas_Object *o_preview_size_entry;
    Evas_Object *o_preview_owner;
-   Evas_Object *o_preview_group;
+   Evas_Object *o_preview_owner_entry;
    Evas_Object *o_preview_perms;
+   Evas_Object *o_preview_perms_entry;
    Evas_Object *o_preview_time;
+   Evas_Object *o_preview_time_entry;
    Evas_Object *o_preview_preview;
    Evas_Object *o_up_button;
    Evas_Object *o_favorites_frame;
@@ -25,6 +29,10 @@
    Evas_Object *o_files_fm;
    Evas_Object *o_entry;
    char *entry_text;
+   char *preview_size_text;
+   char *preview_owner_text;
+   char *preview_perms_text;
+   char *preview_time_text;
    char *path;
    void (*sel_func) (void *data, Evas_Object *obj);
    void *sel_data;
@@ -35,8 +43,7 @@
 static void _e_wid_fsel_preview_file(E_Widget_Data *wd);
 static char *_e_wid_file_size_get(off_t st_size);
 static char *_e_wid_file_user_get(uid_t st_uid);
-static char *_e_wid_file_group_get(gid_t st_gid);
-static char *_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid);
+static char *_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid, gid_t gid);
 static char *_e_wid_file_time_get(time_t st_modtime);
 static void _e_wid_del_hook(Evas_Object *obj);
 
@@ -222,6 +229,82 @@
    e_widget_sub_object_add(obj, o);
    e_widget_table_object_append(wd->o_table2, o, 1, 0, 1, 1, 0, 0, 1, 0);
 
+   if (preview)
+     {
+        o = e_widget_frametable_add(evas, "Preview", 0);
+        wd->o_preview_frame = o;
+        e_widget_sub_object_add(obj, o);
+
+        o = e_widget_table_add(evas, 0);
+        wd->o_preview_preview_table = o;
+        e_widget_sub_object_add(obj, o);
+
+        o = e_widget_table_add(evas, 0);
+        wd->o_preview_table = o;
+        e_widget_sub_object_add(obj, o);
+
+        o = e_widget_preview_add(evas, 64, 64);
+        wd->o_preview_preview = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_table_object_append(wd->o_preview_preview_table,
+                                     wd->o_preview_preview,
+                                     0, 0, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_label_add(evas, "Size:");
+        wd->o_preview_size = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_size,
+                                     0, 0, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_entry_add(evas, &(wd->preview_size_text));
+        wd->o_preview_size_entry = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_min_size_set(o, 100, 15);
+        e_widget_table_object_append(wd->o_preview_table,
+                        wd->o_preview_size_entry, 1, 0, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_label_add(evas, "Owner:");
+        wd->o_preview_owner = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_owner,
+                                     0, 1, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_entry_add(evas, &(wd->preview_owner_text));
+        wd->o_preview_owner_entry = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_min_size_set(o, 100, 15);
+        e_widget_table_object_append(wd->o_preview_table,
+                        wd->o_preview_owner_entry, 1, 1, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_label_add(evas, "Permissions:");
+        wd->o_preview_perms = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_perms,
+                                     0, 2, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_entry_add(evas, &(wd->preview_perms_text));
+        wd->o_preview_perms_entry = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_min_size_set(o, 100, 15);
+        e_widget_table_object_append(wd->o_preview_table,
+                        wd->o_preview_perms_entry, 1, 2, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_label_add(evas, "Modified:");
+        wd->o_preview_time = o;
+        e_widget_sub_object_add(obj, o);
+        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_time,
+                                     0, 3, 1, 1, 1, 1, 1, 1);
+
+        o = e_widget_entry_add(evas, &(wd->preview_time_text));
+        wd->o_preview_time_entry = o;
+        e_widget_sub_object_add(obj, o); 
+        e_widget_min_size_set(o, 100, 15);
+        e_widget_table_object_append(wd->o_preview_table,
+                        wd->o_preview_time_entry, 1, 3, 1, 1, 1, 1, 1, 1);
+
+     }
+
+
    o = e_fm2_add(evas);
    wd->o_favorites_fm = o;
    e_widget_sub_object_add(obj, o);
@@ -300,61 +383,15 @@
    wd->o_entry = o;
    e_widget_sub_object_add(obj, o);
    
-   if (preview)
-     {
-        o = e_widget_table_add(evas, 0);
-        wd->o_preview_table = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_min_size_set(o, 128, 128);
-        e_widget_resize_object_set(obj, o);
-
-        o = e_widget_preview_add(evas, 64, 64);
-        wd->o_preview_preview = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, 
-                                    wd->o_preview_preview,
-                                    0, 0, 1, 1, 1, 1, 1, 1);
-       o = e_widget_label_add(evas, "Name:");
-        wd->o_preview_name = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_name,
-                                     0, 1, 1, 1, 1, 1, 1, 1);
-        o = e_widget_label_add(evas, "Size:");
-        wd->o_preview_size = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_size,
-                                     0, 2, 1, 1, 1, 1, 1, 1);
-        o = e_widget_label_add(evas, "Owner:");
-        wd->o_preview_owner = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_owner,
-                                     0, 3, 1, 1, 1, 1, 1, 1);
-        o = e_widget_label_add(evas, "Group:");
-        wd->o_preview_group = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_group,
-                                     0, 4, 1, 1, 1, 1, 1, 1);
-        o = e_widget_label_add(evas, "Permissions:");
-        wd->o_preview_perms = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_perms,
-                                     0, 5, 1, 1, 1, 1, 1, 1);
-        o = e_widget_label_add(evas, "Last Modification:");
-        wd->o_preview_time = o;
-        e_widget_sub_object_add(obj, o);
-        e_widget_resize_object_set(obj, o);
-        e_widget_table_object_append(wd->o_preview_table, wd->o_preview_time,
-                                     0, 6, 1, 1, 1, 1, 1, 1);
-
-        e_widget_table_object_append(wd->o_table2, wd->o_preview_table,
-                                     2, 1, 1, 1, 1, 1, 1, 1);
-     }
+  if (preview)
+    {
+       e_widget_frametable_object_append(wd->o_preview_frame, 
wd->o_preview_preview_table,
+                                0, 0, 1, 1, 1, 1, 1, 1);
+        e_widget_frametable_object_append(wd->o_preview_frame, 
wd->o_preview_table,
+                                0, 1, 1, 1, 1, 1, 1, 1);
+        e_widget_table_object_append(wd->o_table2, wd->o_preview_frame,
+                                2, 1, 1, 1, 1, 1, 1, 1);
+    }
    e_widget_table_object_append(wd->o_table, wd->o_table2,
                                 0, 0, 1, 1, 1, 1, 1, 1);
    e_widget_table_object_append(wd->o_table, wd->o_entry,
@@ -372,14 +409,18 @@
    if (preview)
      {
         evas_object_show(wd->o_preview_preview);
-        evas_object_show(wd->o_preview_name);
+        evas_object_show(wd->o_preview_preview_table);
         evas_object_show(wd->o_preview_size);
+        evas_object_show(wd->o_preview_size_entry);
         evas_object_show(wd->o_preview_owner);
-        evas_object_show(wd->o_preview_group);
+        evas_object_show(wd->o_preview_owner_entry);
         evas_object_show(wd->o_preview_perms);
+        evas_object_show(wd->o_preview_perms_entry);
         evas_object_show(wd->o_preview_time);
+        evas_object_show(wd->o_preview_time_entry);
         evas_object_show(wd->o_preview_table);
-     }
+        evas_object_show(wd->o_preview_frame);
+      }
    evas_object_show(wd->o_table2);
    evas_object_show(wd->o_table);
    return obj;
@@ -388,26 +429,25 @@
 static void
 _e_wid_fsel_preview_file(E_Widget_Data *wd)
 {
-   char *name, size[PATH_MAX], owner[PATH_MAX], group[PATH_MAX];
-   char perms[PATH_MAX], time[PATH_MAX];
+   char *size, *owner, *perms, *time;
    struct stat st;
  
    stat(wd->path, &st);
-   name = strrchr(wd->path, '/')+1;
-   snprintf(size, PATH_MAX, "Size: %s", _e_wid_file_size_get(st.st_size));
-   snprintf(owner, PATH_MAX, "Owner: %s", _e_wid_file_user_get(st.st_uid));
-   snprintf(group, PATH_MAX, "Group: %s", _e_wid_file_group_get(st.st_gid));
-   snprintf(perms, PATH_MAX, "Permissions: %s", 
-                               _e_wid_file_perms_get(st.st_mode, st.st_uid));
-   snprintf(time, PATH_MAX, "Last Modification: %s", 
-                                _e_wid_file_time_get(st.st_mtime));
-
-   e_widget_label_text_set(wd->o_preview_name, name);
-   e_widget_label_text_set(wd->o_preview_size, size);
-   e_widget_label_text_set(wd->o_preview_owner, owner);
-   e_widget_label_text_set(wd->o_preview_group, group);
-   e_widget_label_text_set(wd->o_preview_perms, perms);
-   e_widget_label_text_set(wd->o_preview_time, time);
+
+   size =  _e_wid_file_size_get(st.st_size);
+   owner = _e_wid_file_user_get(st.st_uid);
+   perms = _e_wid_file_perms_get(st.st_mode, st.st_uid, st.st_gid);
+   time = _e_wid_file_time_get(st.st_mtime);
+
+   e_widget_entry_text_set(wd->o_preview_size_entry, size);
+   e_widget_entry_text_set(wd->o_preview_owner_entry, owner);
+   e_widget_entry_text_set(wd->o_preview_perms_entry, perms);
+   e_widget_entry_text_set(wd->o_preview_time_entry, time);
+
+   free(size);
+   free(owner);
+   free(perms);
+   free(time);
 }
 
 EAPI const char *
@@ -463,80 +503,89 @@
 }
 
 static char *
-_e_wid_file_group_get(gid_t st_gid)
-{
-   char name[PATH_MAX];
-   struct group *grp;
-
-   grp = getgrgid(st_gid);
-   if (grp) snprintf(name, PATH_MAX, "%s", grp->gr_name);
-   else snprintf(name, PATH_MAX, "%-8d", (int)st_gid);
-
-   return strdup(name);
-}
-
-static char *
-_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid)
+_e_wid_file_perms_get(mode_t st_mode, uid_t st_uid, gid_t st_gid)
 {
    char *perm;
    char perms[PATH_MAX];
+   int access = 0;
    int owner = 0;
-   int read = 0;
-   int write = 0;
-   int execute = 0;
+   int group = 0;
+   int user_read = 0;
+   int user_write = 0;
+   int group_read = 0;
+   int group_write = 0;
+   int other_read = 0;
+   int other_write = 0;
    int i;
 
    if (getuid() == st_uid) owner = 1;
+   if (getgid() == st_gid) group = 1;   
 
-   if (owner)
+   perm = (char *)malloc(sizeof(char) * 10);
+   for (i = 0; i < 9; i++) perm[i] = '-';
+   perm[9] = '\0';
+   if ((S_IRUSR & st_mode) == S_IRUSR) 
+     {
+        perm[0] = 'r';
+        user_read = 1;
+     }
+   if ((S_IWUSR & st_mode) == S_IWUSR) 
      {
-       perm = (char *)malloc(sizeof(char) * 10);
-      for (i = 0; i < 9; i++) perm[i] = '-';
-      perm[9] = '\0';
-
-      if ((S_IRUSR & st_mode) == S_IRUSR) 
-        {
-           perm[0] = 'r';
-           read = 1;
-        }
-      if ((S_IWUSR & st_mode) == S_IWUSR) 
-        {
-           perm[1] = 'w';
-           write = 1;
-        }
-      if ((S_IXUSR & st_mode) == S_IXUSR) 
-        {
-           perm[2] = 'x';
-           execute = 1;
-        }
-      if ((S_IRGRP & st_mode) == S_IRGRP) perm[3] = 'r';
-      if ((S_IWGRP & st_mode) == S_IWGRP) perm[4] = 'w';
-      if ((S_IXGRP & st_mode) == S_IXGRP) perm[5] = 'x';
-
-      if ((S_IROTH & st_mode) == S_IROTH) perm[6] = 'r';
-      if ((S_IWOTH & st_mode) == S_IWOTH) perm[7] = 'w';
-      if ((S_IXOTH & st_mode) == S_IXOTH) perm[8] = 'x';
-
-      if (read && write && execute) snprintf(perms, PATH_MAX, 
-                                       "You have full access");
-      else if (!read && !write && !execute) snprintf(perms, PATH_MAX,
-                                       "You do not have access");
-      else if (read && !write && !execute) snprintf(perms, PATH_MAX,
-                                       "You can read");
-      else if (!read && write && !execute) snprintf(perms, PATH_MAX,
-                                       "You can write");
-      else if (!read && !write && execute) snprintf(perms, PATH_MAX,
-                                       "You can execute");
-      else if (read && write && !execute) snprintf(perms, PATH_MAX,
-                                       "You can read and write");
-      else if (read && !write && execute) snprintf(perms, PATH_MAX,
-                                       "You can read and execute");
-      else if (!read && write && execute) snprintf(perms, PATH_MAX,
-                                       "You can write and execute");
+        perm[1] = 'w';
+        user_write = 1;
      }
-   else snprintf(perms, PATH_MAX, "You are not the owner");
+   if ((S_IXUSR & st_mode) == S_IXUSR) perm[2] = 'x';
 
-   return strdup(perms);
+   if ((S_IRGRP & st_mode) == S_IRGRP) 
+     {
+       perm[3] = 'r';
+        group_read = 1;
+     }
+   if ((S_IWGRP & st_mode) == S_IWGRP) 
+     { 
+        perm[4] = 'w';
+        group_write = 1;
+     }
+   if ((S_IXGRP & st_mode) == S_IXGRP) perm[5] = 'x';
+   
+   if ((S_IROTH & st_mode) == S_IROTH)
+     {
+        perm[5] = 'r';
+        other_read = 1;
+     }
+   if ((S_IWOTH & st_mode) == S_IWOTH)
+     {
+        perm[6] = 'w';
+        other_write = 1;
+     }
+   if ((S_IXOTH & st_mode) == S_IXOTH) perm[8] = 'x';
+
+   if (owner)
+     {
+        if ((!user_read) && (!user_write)) snprintf(perms, PATH_MAX,
+                                       "Protected");
+        else if ((user_read) && (!user_write)) snprintf(perms, PATH_MAX,
+                                       "Read Only");
+        else if ((user_read) && (user_write)) access = 1;
+     }
+   else if (group)
+     {
+        if ((!group_read) && (!group_write)) snprintf(perms, PATH_MAX,
+                                        "Forbidden");
+        else if ((group_read) && (!group_write)) snprintf(perms, PATH_MAX,
+                                        "Read Only");
+        else if ((group_read) && (group_write)) access = 1;
+     }
+   else if ((!owner) && (!group))
+     {
+        if ((!other_read) && (!other_write)) snprintf(perms, PATH_MAX,
+                                        "Forbidden");
+        else if ((other_read) && (!other_write)) snprintf(perms, PATH_MAX,
+                                        "Read Only");
+        else if ((other_read) && (other_write)) access = 1;
+     }
+   if (!access) return strdup(perms);
+   else return strdup("Read-Write");
 }
 
 static char * 



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to