Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7baf0f88 authored by Wysie's avatar Wysie
Browse files

2.8

Fixed bug at [url]http://code.google.com/p/cyanogenmod.../detail?id=999[/url]
Added German translations, thanks to thiasB!
Patched Call Logs by niuchl. It's supposed to be faster. Do report if it's faster/slow/bugs anything. His implementation does NOT make use of a HashTable or any cache.
parent d180c678
Loading
Loading
Loading
Loading
+167 −0
Original line number Diff line number Diff line
@@ -224,4 +224,171 @@
    <string name="fail_reason_could_not_open_file" msgid="4013520943128739511">"\"<xliff:g id="FILE_NAME">%s</xliff:g>\" konnte nicht geöffnet werden: <xliff:g id="EXACT_REASON">%s</xliff:g>"</string>
    <string name="exporting_contact_list_progress" msgid="560522409559101193">"<xliff:g id="CURRENT_NUMBER">%s</xliff:g> von <xliff:g id="TOTAL_NUMBER">%s</xliff:g> Kontakten"</string>
    <string name="search_settings_description" msgid="2675223022992445813">"Namen Ihrer Kontakte"</string>

    <string name="recentCalls_deleteAllMissed">Verpasste löschen</string>
    <string name="recentCalls_deleteAllOutgoing">Ausgehende löschen</string>
    <string name="recentCalls_deleteAllIncoming">Eingehende löschen</string>

    <!-- Wysie_Soh: Contacts menu (across all 4, ie. Dialer, Contacts, Call log, Favourites -->
    <string name="menu_preferences">Einstellungen</string>
    <string name="contacts_manage_groups">Gruppen verwalten</string>

    <string name="menu_show_all">Zeige alle Gruppen</string>
    <string name="menu_show_contacts_phones">Zeige Kontakte mit Rufnummer</string>

    <!-- Wysie_Soh: Dialer menu -->
    <string name="dialer_menu_sms">SMS/MMS</string>

    <!-- Wysie_Soh: Call log menu -->
    <string name="call_log_menu_total_duration">Geprächsdauer gesamt</string>

    <!-- Wysie_Soh: Total incoming/outgoing dialog -->
    <string name="totalcalllog">Dauer total eingehend/ausgehend</string>
    <string name="total_incoming">Eingehend</string>
    <string name="total_outgoing">Ausgehend</string>
    <string name="total_button_ok">Ok</string>

    <!-- Favourites menu -->
    <string name="fav_clear_freq">Häufig angerufen leeren</string>

    <!-- Wysie_Soh: Preferences strings (based on ChainsDD's code) -->
    <string name="title_dialer_category">Telefon</string>
    <string name="title_vm_button">Linke Aktionstaste (LAT)</string>
    <string name="title_vm_handler">Mailbox Verwaltung</string>
    <string name="title_disable_num_check">Nummernprüfung ausschalten</string>
    <string name="summaryon_disable_num_check">Linke Aktionstaste (LAT) und Menü werden dauerhaft aktiviert.</string>
    <string name="summaryoff_disable_num_check">LAT und Menü werden aktiviert, wenn mindestens eine Nummer eingegeben wurde (ausser Mailbox).</string>
    <string name="title_use_1_for_reg_vm">1 wählt Mailbox</string>
    <string name="summaryon_use_1_for_reg_vm">Taste 1 wird für Mailbox genutzt.</string>
    <string name="summaryoff_use_1_for_reg_vm">Taste 1 entsprechend Mailbox Verwaltung.</string>
    <string name="title_enable_haptic_feedback">Nutze haptische Rückmeldung</string>

    <string name="title_digits_color_unselected">Farbe der Zahlen (normal)</string>
    <string name="title_digits_color_focused">Farbe der Zahlen (fokusiert)</string>
    <string name="title_digits_color_pressed">Farbe der Zahlen (gedrückt)</string>
    <string name="title_choose_color">Farbe wählen</string>
    <string name="title_use_custom_color">Nutze eigene Farben für Zahlen</string>
    <string name="summaryon_custom_color">Unterstützte Formate: #RRGGBB oder #AARRGGBB (mit #).</string>

    <string name="title_change_digits_color">Farbe der Zahlen ändern</string>

    <string name="title_call_log_category">Anrufliste</string>
    <string name="title_cl_relative_time">Relative Zeiten</string>
    <string name="summaryon_cl_relative_time">Zeige relative Zeiten in Anrufliste.</string>
    <string name="summaryoff_cl_relative_time">Zeige exakte Zeiten in Anrufliste.</string>
    <string name="title_cl_show_seconds">Zeige Sekunden</string>
    <string name="summary_cl_show_seconds">Zeige Sekunden bei exakten Zeiten.</string>
    <string name="title_cl_ask_before_clear">Anrufliste löschen bestätigen</string>
    <string name="summaryon_cl_ask_before_clear">Anrufliste löschen mit Bestätigung.</string>
    <string name="summaryoff_cl_ask_before_clear">Anrufliste löschen ohne Bestätigung.</string>
    <string name="title_cl_always_clear_cache">Nummernspeicher immer leeren</string>
    <string name="summaryon_cl_always_clear_cache">Aktuelle Anrufliste ist immer sichergestellt.</string>
    <string name="summaryoff_cl_always_clear_cache">Schnellerer Wechsel zur Anrufliste aber evtl. nicht aktuelle Kontaktinformationen nach Änderung.</string>

    <string name="title_view_cl">Individuelle Anruflisten</string>
    <string name="summary_view_cl">Einstellungen für individuelle Anruflisten.</string>

    <string name="title_cl_grouping_settings">Gruppieren von Ruflisteneinstellungen</string>
    <string name="title_cl_use_exp_grouping">Gruppieren unbekannter Nummern (experimentell)</string>
    <string name="summary_cl_use_exp_grouping">Versuche ungespeicherte Nummern zu gruppieren. Betrifft auch Löschen von Anruflisten.</string>
    <string name="title_cl_exp_grouping_num">Anzahl zu vergleichender Zahlen</string>
    <string name="summary_cl_exp_grouping_num">Genauer, je größer die Anzahl.</string>

    <string name="title_contacts_category">Kontakte</string>
    <string name="title_contacts_show_pic">Zeige Kontaktbilder</string>
    <string name="summary_contacts_show_pic">Zeige Bilder von Kontakten an.</string>
    <string name="title_contacts_show_dial_button">Zeige Anruftaste</string>
    <string name="summary_contacts_show_dial_button">Zeige Anruftaste für Kontakte mit Rufnummern.</string>
    <string name="title_contacts_view_pic_size">Größe der Kontaktbilder</string>
    <string name="summary_contacts_view_pic_size">Größe der Kontaktbilder im Profil einstellen. Betrifft auch Favoriten.</string>
    <string name="title_contacts_choose_pic_size">Größe wählen</string>
    <string name="title_contacts_show_separators">Alphabetische Trennmarke</string>
    <string name="summaryon_contacts_show_separators">Alphabetische Trennung wird angezeigt in der Kontaktliste.</string>
    <string name="summaryoff_contacts_show_separators">Alphabetische Trennung wird nicht angezeigt in der Kontaktliste.</string>
    <string name="title_auto_show_keyboard">Virt. Tastatur autom. zeigen</string>
    <string name="summary_auto_show_keyboard">Die virtuelle Tastatur wird eingeblendet, sobald das Kontaktprofil betreten wird.</string>
    <string name="title_auto_hide_keyboard">Virt. Tastatur verbergen</string>
    <string name="summary_auto_hide_keyboard">Die virtuelle Tastatur wird ausgeblendet beim Scrollen.</string>
    <string name="title_view_contact">Kontakt anzeigen</string>
    <string name="summary_view_contact">Einstellungen für Ansicht eines Kontaktes ändern.</string>
    <string name="title_show_text_mobile_only">Textaktionen nur für Handys</string>
    <string name="summaryon_show_text_mobile_only"> Text/SMS Aktion nur für Mobilfunknummern.</string>
    <string name="summaryoff_show_text_mobile_only">Text/SMS Aktion nur für alle Nummern.</string>

    <string name="groups_manager_title">Gruppen bearbeiten</string>
    <string name="groups_manager_summary">Einstellungen für Gruppen bearbeiten.</string>
    <string name="title_groups_ask_before_del">Löschen bestätigen</string>
    <string name="summaryon_groups_ask_before_del">Löschen von Gruppen mit Bestätigung.</string>
    <string name="summaryoff_groups_ask_before_del">Löschen von Gruppen ohne Bestätigung.</string>

    <string name="title_favourites_category">Häufig gewählt</string>
    <string name="title_favourites_hide_freq_call">Häufig Gewählte verbergen.</string>
    <string name="summary_favourites_hide_freq_call">Die Daten werden nicht gelöscht, nur verborgen.</string>
    <string name="title_favs_ask_before_clear">Leeren bestätigen</string>
    <string name="summaryon_favs_ask_before_clear">Leeren der Liste mit Bestätigung.</string>
    <string name="summaryoff_favs_ask_before_clear">Leeren der Liste ohne Bestätigung.</string>

    <string name="title_all_show_label">Zeige Kennung</string>
    <string name="summaryon_all_show_label">Kennungen (mobil, privat, etc.) werden angezeigt.</string>
    <string name="summaryoff_all_show_label">Kennungen (mobil, privat, etc.) werden nicht angezeigt.</string>

    <string name="title_all_show_number">Zeige Rufnummer</string>
    <string name="summaryon_all_show_number">Rufnummer wird gezeigt.</string>
    <string name="summaryoff_all_show_number">Rufnummer wird nicht gezeigt.</string>

    <string name="title_misc_category">Sonstiges</string>
    <string name="title_sensor_rotation">Autorotation verwenden</string>

    <string name="title_about">Über</string>
    <string name="title_about_name">Mod Name</string>
    <string name="summary_about_name">Wysie Contacts</string>
    <string name="title_about_version">Version</string>
    <string name="summary_about_version">2.7</string>
    <string name="title_about_credits">Danksagung</string>
    <string name="summary_about_credits">ChainsDD, geesun and the rest of XDA! :)</string>

    <!-- Wysie_Soh: Call log strings -->

    <string name="alert_clear_call_log_title">Anrufliste leeren</string>
    <string name="alert_clear_call_log_message">Bist du sicher, dass du die Anrufliste leeren möchtest?</string>
    <string name="menu_cl_clear_type">Lösche alle %s</string>
    <string name="recentCalls_removeAllFrom">Lösche alle </string>

    <string name="alert_clear_cl_person">Bist du sicher, dass du alle Anrufe von %s löschen möchtest?</string>
    <string name="alert_clear_cl_person_incoming">Bist du sicher, dass du alle eingegangenen Anrufe von %s löschen möchtest?</string>
    <string name="alert_clear_cl_person_outgoing">Bist du sicher, dass du alle ausgegangenen Anrufe an %s löschen möchtest?</string>
    <string name="alert_clear_cl_person_missed">Bist du sicher, dass du alle verpassten Anrufe von %s löschen möchtest?</string>

    <string name="alert_clear_cl_all_incoming">Bist du sicher, dass du alle eingegangenen Anrufe löschen möchtest?</string>
    <string name="alert_clear_cl_all_outgoing">Bist du sicher, dass du alle ausgegangenen Anrufe löschen möchtest?</string>
    <string name="alert_clear_cl_all_missed">Bist du sicher, dass du alle verpassten Anrufe löschen möchtest?</string>

    <!-- Wysie_Soh: Frequently called strings -->
    <string name="alert_clear_freq_called">Lösche häufig Angerufene</string>
    <string name="alert_clear_freq_called_msg">Bist du sicher, dass du die Liste der häufig angerufenen Kontakte löschen möchtest?</string>

    <!-- Wysie_Soh: View contact strings -->
    <string name="view_contact_navigate">Gehe zu</string>
    <string name="view_contact_groups">Gruppen</string>
    <string name="view_call_log">Anrufliste ansehen</string>
    <string name="view_contact_select_cl_number">Nummer auswählen um Log einzusehen</string>

    <!-- Wysie_Soh: Groups management -->
    <string name="help_title">Nutzung</string>
    <string name="help_message">Gruppenname gedrückt halten zum umbenennen oder löschen. Für neue Gruppe Menü drücken. Dieser Text wird bis zum nächsten Update nicht gezeigt.
    </string>

    <string name="title_groups_manager">Gruppen verwalten</string>
    <string name="option_create_group">Neue Gruppe</string>
    <string name="alert_create_group_message">Gruppenname eingeben</string>
    <string name="context_rename_group">Gruppe umbenennen</string>
    <string name="context_delete_group">Gruppe löschen</string>
    <string name="alert_rename_group_message">Neuen Gruppennamen eingeben</string>
    <string name="alert_delete_group_message">Sicher, dass du diese Gruppe löschen möchstest?</string>

    <!-- Wysie_Soh: Others -->
    <!-- Toast for call detail screen when couldn't read the requested details -->
    <string name="toast_call_detail_error_wysie">Kein Kontakt oder Ruflisteneintrag für diese Nummer gefunden.</string>
    <string name="menu_copy_string">Kopiere \"%s\"</string>
    <string name="cl_total_cl">Gesamtdauer</string>
</resources>
+2 −2
Original line number Diff line number Diff line
@@ -858,9 +858,9 @@
    <string name="title_about_name">Mod Name</string>
    <string name="summary_about_name">Wysie Contacts</string>
    <string name="title_about_version">Version</string>
    <string name="summary_about_version">2.7</string>
    <string name="summary_about_version">2.8</string>
    <string name="title_about_credits">Credits</string>
    <string name="summary_about_credits">ChainsDD, geesun and the rest of XDA! :)</string>
    <string name="summary_about_credits">ChainsDD, geesun, niuchl, rac2030 and the rest of XDA! :)</string>
    
    <!-- Wysie_Soh: Call log strings -->  
    <string name="alert_clear_call_log_title">Clear call log</string>
+18 −19
Original line number Diff line number Diff line
@@ -2208,17 +2208,15 @@ public final class ContactsListActivity extends ListActivity
            size = cache.numberBuffer.sizeCopied;
            
            if (size != 0) {
                
                if ((showContactsNumber && mContactsTab) || (showFavsNumber && mFavTab)) {
                //Wysie_Soh: 2.8 changes. Always show first. Only hide if preference is set to hide.
                numberView.setText(cache.numberBuffer.data, 0, size);                              
                numberView.setVisibility(View.VISIBLE);
                }
                else {
                labelView.setVisibility(View.VISIBLE);
                
                if ((!showContactsNumber && mContactsTab) || (!showFavsNumber && mFavTab)) {
                    numberView.setVisibility(View.GONE);
                }
                
                labelView.setVisibility(View.VISIBLE);
                
                if ((showContactsDialButton && mContactsTab) || (showFavsDialButton && mFavTab)) {
                	callView.setTag(new String(cache.numberBuffer.data, 0, size)); //Wysie_Soh: Set tag to green dial button
                	callView.setVisibility(View.VISIBLE);
@@ -2237,8 +2235,7 @@ public final class ContactsListActivity extends ListActivity
            }

            // Set the label
            if (!cursor.isNull(TYPE_COLUMN_INDEX) && ((showContactsLabel && mContactsTab) ||
                    (showFavsLabel && mFavTab))) {
            if (!cursor.isNull(TYPE_COLUMN_INDEX)) {
                int type = cursor.getInt(TYPE_COLUMN_INDEX);

                if (type != People.Phones.TYPE_CUSTOM) {
@@ -2262,10 +2259,8 @@ public final class ContactsListActivity extends ListActivity
                cache.nameView.setLayoutParams(newNameLayout);
                numberView.setLayoutParams(newNumberLayout);
                
            } else {
                // There is no label, hide the the view
                if ((!showContactsLabel && mContactsTab) || (!showFavsLabel && mFavTab)) {
                    labelView.setVisibility(View.GONE);
                
                    //Wysie_Soh: Set layout rules programmatically                    
                    newNameLayout.addRule(RelativeLayout.ABOVE, R.id.number);
                    newNumberLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
@@ -2275,6 +2270,10 @@ public final class ContactsListActivity extends ListActivity
                    cache.nameView.setLayoutParams(newNameLayout);
                    numberView.setLayoutParams(newNumberLayout);
                }                    
            } else {
                // There is no label, hide the the view
                labelView.setVisibility(View.GONE);
            }

            // Set the proper icon (star or presence or nothing)
            ImageView presenceView = cache.presenceView;
+72 −92
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.database.sqlite.SQLiteDiskIOException;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteFullException;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
@@ -74,23 +73,18 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.ResourceCursorAdapter;
import android.widget.TextView;

import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.ITelephony;

import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import java.util.Map;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Locale;
import java.util.Set;
import java.util.HashSet;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;

@@ -99,8 +93,6 @@ import android.view.LayoutInflater;
import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.List;
import android.widget.Toast;


/**
 * Displays a list of call log entries.
@@ -840,13 +832,19 @@ public class RecentCallsListActivity extends ListActivity
        @Override
        protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
            final RecentCallsListActivity activity = mActivity.get();
            final Cursor fCursor = cursor;

            if (activity != null && !activity.isFinishing()) {
                // final RecentCallsListActivity.RecentCallsAdapter callsAdapter = activity.mAdapter;
                final RecentCallsListActivity.RecentCallsArrayAdapter callsAdapter = activity.mArrayAdapter;

                // niuchl: Process time consuming job asynchronously, so that the main thread will not be blocked.
                new Handler().post(new Runnable() {
                    public void run() {
                      activity.getUpdateCallLogsItem(fCursor);
                      callsAdapter.setLoading(false);
                activity.getUpdateCallLogsItem(cursor);
                    }
                  });
				   
                // callsAdapter.changeCursor(cursor);
            } else {
@@ -942,6 +940,63 @@ public class RecentCallsListActivity extends ListActivity
            return false;
    }
    
    private Map<String, Set<Long>> nameIdMap = null;
    private Map<Long, Set<String>> idPhoneMap = null;
    // niuchl: Querying database in batch mode, and the performace is improved a lot.
    private void initNumberList() {
      if (tempNumList != null && nameIdMap != null && idPhoneMap != null) {
        return;
      }

      tempNumList = new Hashtable<String, Long>();
      nameIdMap = new HashMap<String, Set<Long>>();
      idPhoneMap = new HashMap<Long, Set<String>>();
      Cursor cursor = getContentResolver().query(Phones.CONTENT_URI,
                                                 new String[] {Phones.NUMBER, Phones.PERSON_ID, Phones.DISPLAY_NAME},
                                                 null, null, null);

      if (cursor != null && cursor.moveToFirst()) {
        do {
          String phone = cursor.getString(0);
          Long id = cursor.getLong(1);
          String name = cursor.getString(2);
          tempNumList.put(phone, id);
          if (nameIdMap.containsKey(name)) {
            nameIdMap.get(name).add(id);
          } else {
            Set<Long> idSet = new HashSet();
            idSet.add(id);
            nameIdMap.put(name, idSet);
          }
          if (idPhoneMap.containsKey(id)) {
            idPhoneMap.get(id).add(phone);
          } else {
            Set<String> phoneSet = new HashSet();
            phoneSet.add(phone);
            idPhoneMap.put(id, phoneSet);
          }
        } while (cursor.moveToNext());
        cursor.close();
      }
    }

    private long getPersonId(String phoneNumber, String userName) {
      if (nameIdMap.containsKey(userName)) {
        Set<Long> idSet = nameIdMap.get(userName);
        for (Long id : idSet) {
          if (idPhoneMap.containsKey(id)) {
            Set<String> phoneSet = idPhoneMap.get(id);
            for (String phone : phoneSet) {
              if (phone.equals(phoneNumber) || PhoneNumberUtils.compare(phone, phoneNumber)) {
                return id;
              }
            }
          }
        }
      }
      return -1;
    }

    public void getUpdateCallLogsItem(Cursor cursor) {
        mListCallLogs.clear();
        numbersCache.clear();
@@ -951,11 +1006,12 @@ public class RecentCallsListActivity extends ListActivity
            return;
        }

        initNumberList();
        
        Cursor phonesCursor = null;        
        int number = -1;
        cacheUpdated = false;
        if (cursor.getCount() != 0) {
            cursor.moveToFirst();
        if (cursor.getCount() != 0 && cursor.moveToFirst()) {
            do { 
                RecentCallsInfo item = new RecentCallsInfo();

@@ -977,44 +1033,18 @@ public class RecentCallsListActivity extends ListActivity
                item.duration = cursor.getInt(
                        RecentCallsListActivity.DURATION_COLUMN_INDEX);
                        
                //Wysie_Soh: The following portion of code to retrieve personId
                //really slows down the performance. However, without it,
                //call logs will not be grouped by contact, and instead will be grouped
                //by number (non-ideal). Thus, we make use of a Hashtable to keep
                //numbers and ids pairs, and avoid querying. This speeds it up significantly,
                //but it's still slower than default/without querying personId
                item.personId = -1;
                try {            
                    item.personId = tempNumList.get(item.number);
                } catch (NullPointerException e) {
                }

                if (item.personId == -1) {                
                    phonesCursor = getContentResolver().query(
                                    Uri.withAppendedPath(Phones.CONTENT_FILTER_URL,
                                    Uri.encode(item.number)), PHONES_ID_PROJECTION, null, null, null);
                
                    if (phonesCursor != null && phonesCursor.moveToFirst()) {
                        item.personId = phonesCursor.getLong(PERSON_ID_COLUMN_INDEX);
                        tempNumList.put(item.number, item.personId);
                        cacheUpdated = true;                        
                        phonesCursor.close();
                    }
                }
                item.personId = getPersonId(item.number, item.name);

                addItemIntoList(item);
                
            } while (cursor.moveToNext());        
            cursor.close();
            
        }
        // Log.e(TAG,"getUpdateCallLogsItem");
        numbersCache.clear();
        numbersCachePosition.clear();
        personIdCache.clear();              
        mArrayAdapter.notifyDataSetChanged();
        writeCacheToFile();
		
    }
    
    static String numbersOnly(String s) {
@@ -1054,7 +1084,6 @@ public class RecentCallsListActivity extends ListActivity

    @Override
    protected void onResume() {
        loadCacheFromFile();
        
        /*
        mListCallLogs.clear();
@@ -1763,53 +1792,4 @@ public class RecentCallsListActivity extends ListActivity
    
    //WYSIE TODO: Implement manual delete.
    
    //Wysie: The purpose is to save the existing tempNumList hashtable to a binary file
    //so that upon the next start, we can load from here directly, instead of querying
    //CONTENT_FILTER_URL which is very slow.
    private void writeCacheToFile() {
        if (!cacheUpdated)
            return;
        try {
            FileOutputStream fOut = openFileOutput(CACHEFILENAME, 0);
            ObjectOutputStream oOut = new ObjectOutputStream(fOut);
            oOut.writeObject(tempNumList);
            oOut.close();
            fOut.close();
            //Log.d("WYSIE", "FILE SAVE SUCCESS");
        }
        catch (FileNotFoundException e) {
            //Do nothing
        }
        catch (IOException e) {
            //Do nothing
        }
    }
    
    //Wysie: Load the Hashtable from file. Check EditContactActivity for the line
    //deleteFile(CACHEFILENAME). The current logic works by ALWAYS deleting the cached/saved file
    //as long as a contact info has been edited. This ensures that the call logs are always up to date.
    private void loadCacheFromFile() {
        try {
            FileInputStream fIn = openFileInput(CACHEFILENAME);
            ObjectInputStream oIn = new ObjectInputStream(fIn);
            tempNumList = (Hashtable<String,Long>)oIn.readObject();
            oIn.close();
            fIn.close();
            //Log.d("WYSIE", "FILE LOAD SUCCESS");
        }
        //In case of exceptions, create new tempNumList
        catch (ClassNotFoundException e) {
            tempNumList = new Hashtable<String,Long>();
            //Log.d("WYSIE", "FILE LOAD ERROR");
        }
        catch (FileNotFoundException e) {
            tempNumList = new Hashtable<String,Long>();
            //Log.d("WYSIE", "FILE LOAD ERROR");        
        }
        catch (IOException e) {
            tempNumList = new Hashtable<String,Long>();
            //Log.d("WYSIE", "FILE LOAD ERROR");
        }
    }
    
}