Changeset 4e250df417f3de29fc2cf826a93cb136ee515780

Show
Ignore:
Timestamp:
11/07/09 17:04:47 (4 years ago)
Author:
Armin Burgmeier <armin@…>
git-author:
Gabríel A. Pétursson <gabrielp@simnet.is> / 2009-11-07T17:04:47Z+0100
Parents:
aeee99c57e344cc454862664af4e14e70059fa24
Children:
1c0f9eaecee4addf07208e81f777f28e409cbfe7
git-committer:
Armin Burgmeier <armin@arbur.net> / 2009-11-07T17:04:47Z+0100
Message:

Sort browser view alphabetically

2009-11-07 Gabríel A. Pétursson <gabrielp@…>

  • code/commands/file-commands.cpp:
  • code/core/browser.hpp:
  • code/core/browser.cpp: Alphabetical sorting of directory and file names.

Signed-off-by: Armin Burgmeier <armin@…>

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • ChangeLog

    raeee99c r4e250df  
     12009-11-07  Gabríel A. Pétursson  <gabrielp@simnet.is> 
     2 
     3        * code/commands/file-commands.cpp: 
     4        * code/core/browser.hpp: 
     5        * code/core/browser.cpp: Alphabetical sorting of directory and file 
     6        names. 
     7 
    182009-11-06  Armin Burgmeier  <armin@arbur.net> 
    29 
  • code/commands/file-commands.cpp

    rb24d6e3 r4e250df  
    127127                sigc::mem_fun(*this, &FileCommands::on_document_changed)); 
    128128 
    129         InfGtkBrowserStore* store = browser.get_store(); 
     129        InfGtkBrowserModelSort* store = browser.get_store(); 
    130130        m_row_inserted_handler = 
    131131                g_signal_connect(G_OBJECT(store), "row-inserted", 
     
    140140Gobby::FileCommands::~FileCommands() 
    141141{ 
    142         InfGtkBrowserStore* store = m_browser.get_store(); 
     142        InfGtkBrowserModelSort* store = m_browser.get_store(); 
    143143        g_signal_handler_disconnect(G_OBJECT(store), m_row_inserted_handler); 
    144144        g_signal_handler_disconnect(G_OBJECT(store), m_row_deleted_handler); 
  • code/core/browser.cpp

    r6cbb77d r4e250df  
    3131#endif 
    3232 
     33gint compare_func(GtkTreeModel* model, GtkTreeIter* first, GtkTreeIter* second, gpointer user_data) 
     34{ 
     35        gint result = 0; 
     36        InfcBrowser* br_one; 
     37        InfcBrowser* br_two; 
     38        InfcBrowserIter* bri_one; 
     39        InfcBrowserIter* bri_two; 
     40        GtkTreeIter parent; 
     41 
     42        /* Don't sort top level */ 
     43        if(!gtk_tree_model_iter_parent(model, &parent, first)) 
     44        { 
     45                g_assert(!gtk_tree_model_iter_parent(model, &parent, second)); 
     46                return 0; 
     47        } 
     48 
     49        gtk_tree_model_get(model, first,  INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_one, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_one, -1); 
     50        gtk_tree_model_get(model, second, INF_GTK_BROWSER_MODEL_COL_BROWSER, &br_two, INF_GTK_BROWSER_MODEL_COL_NODE, &bri_two, -1); 
     51 
     52        if (infc_browser_iter_is_subdirectory(br_one, bri_one) && !infc_browser_iter_is_subdirectory(br_two, bri_two)) 
     53                result = -1; 
     54        else if (!infc_browser_iter_is_subdirectory(br_one, bri_one) && infc_browser_iter_is_subdirectory(br_two, bri_two)) 
     55                result = 1; 
     56        else 
     57        { 
     58                gchar* name_one; 
     59                gchar* name_two; 
     60                 
     61                gtk_tree_model_get(model, first,  INF_GTK_BROWSER_MODEL_COL_NAME, &name_one, -1); 
     62                gtk_tree_model_get(model, second, INF_GTK_BROWSER_MODEL_COL_NAME, &name_two, -1); 
     63                 
     64                gchar* one = g_utf8_casefold(name_one, -1); 
     65                gchar* two = g_utf8_casefold(name_two, -1); 
     66                 
     67                result = g_utf8_collate(one, two); 
     68                 
     69                g_free(name_one); 
     70                g_free(name_two); 
     71                g_free(one); 
     72                g_free(two); 
     73        } 
     74         
     75        g_object_unref(br_one); 
     76        g_object_unref(br_two); 
     77        infc_browser_iter_free(bri_one); 
     78        infc_browser_iter_free(bri_two); 
     79         
     80        return result; 
     81} 
     82 
    3383Gobby::Browser::Browser(Gtk::Window& parent, 
    3484                        const InfcNotePlugin* text_plugin, 
     
    65115                                                    communication_manager); 
    66116        g_object_unref(communication_manager); 
     117         
     118        m_sort_model = inf_gtk_browser_model_sort_new(INF_GTK_BROWSER_MODEL(m_browser_store)); 
     119        gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(m_sort_model), compare_func, NULL, NULL); 
    67120 
    68121        m_xmpp_manager = inf_xmpp_manager_new(); 
     
    87140                INF_GTK_BROWSER_VIEW( 
    88141                        inf_gtk_browser_view_new_with_model( 
    89                                 INF_GTK_BROWSER_MODEL(m_browser_store))); 
     142                                INF_GTK_BROWSER_MODEL(m_sort_model))); 
    90143 
    91144        gtk_widget_show(GTK_WIDGET(m_browser_view)); 
     
    132185 
    133186        g_object_unref(m_browser_store); 
     187        g_object_unref(m_sort_model); 
    134188        g_object_unref(m_cert_manager); 
    135189        g_object_unref(m_xmpp_manager); 
     
    169223        InfcBrowserIter* browser_iter; 
    170224 
    171         gtk_tree_model_get(GTK_TREE_MODEL(m_browser_store), iter, 
     225        gtk_tree_model_get(GTK_TREE_MODEL(m_sort_model), iter, 
    172226                           INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, 
    173227                           INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, 
     
    281335 
    282336        gtk_tree_model_get( 
    283                 GTK_TREE_MODEL(m_browser_store), &tree_iter, 
     337                GTK_TREE_MODEL(m_sort_model), &tree_iter, 
    284338                INF_GTK_BROWSER_MODEL_COL_BROWSER, &tmp_browser, 
    285339                -1); 
     
    289343 
    290344        gtk_tree_model_get( 
    291                 GTK_TREE_MODEL(m_browser_store), &tree_iter, 
     345                GTK_TREE_MODEL(m_sort_model), &tree_iter, 
    292346                INF_GTK_BROWSER_MODEL_COL_NODE, &tmp_iter, 
    293347                -1); 
     
    307361 
    308362        gboolean has_iter = inf_gtk_browser_model_browser_iter_to_tree_iter( 
    309                 INF_GTK_BROWSER_MODEL(m_browser_store), 
     363                INF_GTK_BROWSER_MODEL(m_sort_model), 
    310364                browser, iter, &tree_iter); 
    311365        g_assert(has_iter == TRUE); 
  • code/core/browser.hpp

    r6cbb77d r4e250df  
    3333#include <libinfinity/common/inf-xmpp-manager.h> 
    3434#include <libinfinity/inf-config.h> 
     35#include <libinfgtk/inf-gtk-browser-model.h> 
     36#include <libinfgtk/inf-gtk-browser-model-sort.h> 
    3537 
    3638#include <gtkmm/window.h> 
     
    6567        ~Browser(); 
    6668 
    67         InfGtkBrowserStore* get_store() { return m_browser_store; } 
    68         const InfGtkBrowserStore* get_store() const { 
    69                 return m_browser_store; 
     69        InfGtkBrowserModelSort* get_store() { return m_sort_model; } 
     70        const InfGtkBrowserModelSort* get_store() const { 
     71                return m_sort_model; 
    7072        } 
    7173 
     
    137139        ResolvMap m_resolv_map; 
    138140        SignalActivate m_signal_activate; 
     141         
     142        InfGtkBrowserModelSort* m_sort_model; 
    139143}; 
    140144