Start work on search
app/src/main/java/eu/lepiller/nani/DictionaryDownloadActivity.java
| 46 | 46 | TextView name_view = findViewById(R.id.name_view); | |
| 47 | 47 | name_view.setText(d.getName()); | |
| 48 | 48 | ||
| 49 | - | TextView description_view = findViewById(R.id.description_view); | |
| 49 | + | TextView description_view = findViewById(R.id.additional_info_view); | |
| 50 | 50 | description_view.setText(d.getDescription()); | |
| 51 | 51 | ||
| 52 | 52 | download_bar = findViewById(R.id.download_progress); |
app/src/main/java/eu/lepiller/nani/MainActivity.java
| 13 | 13 | import android.widget.EditText; | |
| 14 | 14 | import android.widget.ListView; | |
| 15 | 15 | ||
| 16 | + | import java.util.ArrayList; | |
| 17 | + | ||
| 18 | + | import eu.lepiller.nani.dictionary.DictionaryFactory; | |
| 19 | + | import eu.lepiller.nani.result.Result; | |
| 20 | + | import eu.lepiller.nani.result.ResultAdapter; | |
| 21 | + | ||
| 16 | 22 | public class MainActivity extends AppCompatActivity { | |
| 17 | 23 | ||
| 18 | 24 | @Override | |
… | |||
| 30 | 36 | @Override | |
| 31 | 37 | public void onClick(View v) { | |
| 32 | 38 | String text = search_form.getText().toString(); | |
| 33 | - | //List<SearchResult> results = search(text); | |
| 34 | - | //result_view.setAdapter(new SearchAdapter(results)); | |
| 39 | + | ArrayList<Result> searchResult = DictionaryFactory.search(getApplicationContext(), text); | |
| 40 | + | result_view.setAdapter(new ResultAdapter(getApplicationContext(), searchResult)); | |
| 35 | 41 | } | |
| 36 | 42 | }); | |
| 37 | 43 | } | |
app/src/main/java/eu/lepiller/nani/dictionary/DictionariesAdapter.java
| 2 | 2 | ||
| 3 | 3 | import android.content.Context; | |
| 4 | 4 | import android.graphics.drawable.Drawable; | |
| 5 | - | import android.os.Build; | |
| 6 | - | import android.support.graphics.drawable.VectorDrawableCompat; | |
| 7 | 5 | import android.view.LayoutInflater; | |
| 8 | 6 | import android.view.View; | |
| 9 | 7 | import android.view.ViewGroup; | |
| 10 | 8 | import android.widget.ArrayAdapter; | |
| 11 | - | import android.widget.ImageButton; | |
| 12 | 9 | import android.widget.ImageView; | |
| 13 | - | import android.widget.ProgressBar; | |
| 14 | 10 | import android.widget.TextView; | |
| 15 | 11 | ||
| 16 | 12 | import java.util.ArrayList; | |
… | |||
| 41 | 37 | // Lookup view for data population | |
| 42 | 38 | ImageView icon_view = (ImageView) convertView.findViewById(R.id.icon_view); | |
| 43 | 39 | TextView name_view = (TextView) convertView.findViewById(R.id.name_view); | |
| 44 | - | TextView description_view = (TextView) convertView.findViewById(R.id.description_view); | |
| 40 | + | TextView description_view = (TextView) convertView.findViewById(R.id.additional_info_view); | |
| 45 | 41 | ||
| 46 | 42 | // Populate the data into the template view using the data object | |
| 47 | 43 | Drawable icon = dictionary.getDrawable(context); | |
app/src/main/java/eu/lepiller/nani/dictionary/DictionaryFactory.java
| 5 | 5 | import java.util.ArrayList; | |
| 6 | 6 | ||
| 7 | 7 | import eu.lepiller.nani.R; | |
| 8 | + | import eu.lepiller.nani.result.Result; | |
| 8 | 9 | ||
| 9 | 10 | public class DictionaryFactory { | |
| 10 | 11 | private static DictionaryFactory instance; | |
… | |||
| 28 | 29 | "https://xana.lepiller.eu/nani/dico/example_jmdict")); | |
| 29 | 30 | } | |
| 30 | 31 | ||
| 32 | + | public static ArrayList<Result> search(Context context, String text) { | |
| 33 | + | if(instance == null) | |
| 34 | + | instance = new DictionaryFactory(context); | |
| 35 | + | ||
| 36 | + | ArrayList<Result> results = new ArrayList<>(); | |
| 37 | + | for(Dictionary d: dictionaries) { | |
| 38 | + | if (d instanceof JMDict) { | |
| 39 | + | results.addAll(d.search(text)); | |
| 40 | + | } | |
| 41 | + | } | |
| 42 | + | return results; | |
| 43 | + | } | |
| 44 | + | ||
| 31 | 45 | public static Dictionary get(int position) { | |
| 32 | 46 | return dictionaries.get(position); | |
| 33 | 47 | } | |
app/src/main/java/eu/lepiller/nani/dictionary/JMDict.java
| 1 | 1 | package eu.lepiller.nani.dictionary; | |
| 2 | 2 | ||
| 3 | 3 | import java.io.File; | |
| 4 | + | import java.io.FileInputStream; | |
| 5 | + | import java.io.FileNotFoundException; | |
| 6 | + | import java.io.InputStream; | |
| 4 | 7 | import java.net.MalformedURLException; | |
| 5 | 8 | import java.net.URL; | |
| 9 | + | import java.util.ArrayList; | |
| 6 | 10 | import java.util.HashMap; | |
| 7 | 11 | import java.util.Map; | |
| 8 | 12 | ||
| 9 | 13 | import eu.lepiller.nani.R; | |
| 14 | + | import eu.lepiller.nani.result.Result; | |
| 10 | 15 | ||
| 11 | 16 | public class JMDict extends Dictionary { | |
| 12 | 17 | private String mUrl; | |
… | |||
| 53 | 58 | File file = getFile(); | |
| 54 | 59 | file.delete(); | |
| 55 | 60 | } | |
| 61 | + | ||
| 62 | + | public ArrayList<Result> search(String text) { | |
| 63 | + | ArrayList<Result> results = new ArrayList<>(); | |
| 64 | + | if (isDownloaded()) { | |
| 65 | + | // Actually read the file and find something | |
| 66 | + | try { | |
| 67 | + | InputStream is = new FileInputStream(getFile()); | |
| 68 | + | } catch (FileNotFoundException ignored) { | |
| 69 | + | } | |
| 70 | + | } | |
| 71 | + | return results; | |
| 72 | + | } | |
| 56 | 73 | } | |
app/src/main/java/eu/lepiller/nani/result/Result.java unknown status 1
| 1 | + | package eu.lepiller.nani.result; | |
| 2 | + | ||
| 3 | + | import java.lang.reflect.Array; | |
| 4 | + | import java.util.ArrayList; | |
| 5 | + | ||
| 6 | + | public class Result { | |
| 7 | + | enum Tag { | |
| 8 | + | // Obtained by: | |
| 9 | + | // cat entities | cut -c 10- | sed -e 's|">$||' -e 's| "|, // |' -e 's|^\([^,]\)|\U\1|' | |
| 10 | + | // and modifing things a bit ;) | |
| 11 | + | MA, // martial arts term | |
| 12 | + | X, // rude or X-rated term (not displayed in educational software) | |
| 13 | + | Abbr, // abbreviation | |
| 14 | + | Adj_i, // adjective (keiyoushi) | |
| 15 | + | Adj_ix, // adjective (keiyoushi) - yoi/ii class | |
| 16 | + | Adj_na, // adjectival nouns or quasi-adjectives (keiyodoshi) | |
| 17 | + | Adj_no, // nouns which may take the genitive case particle `no' | |
| 18 | + | Adj_pn, // pre-noun adjectival (rentaishi) | |
| 19 | + | Adj_t, // `taru' adjective | |
| 20 | + | Adj_1f, // noun or verb acting prenominally | |
| 21 | + | Adv, // adverb (fukushi) | |
| 22 | + | Adv_to, // adverb taking the `to' particle | |
| 23 | + | Arch, // archaism | |
| 24 | + | Ateji, // ateji (phonetic) reading | |
| 25 | + | Aux, // auxiliary | |
| 26 | + | Aux_v, // auxiliary verb | |
| 27 | + | Aux_adj, // auxiliary adjective | |
| 28 | + | Buddh, // Buddhist term | |
| 29 | + | Chem, // chemistry term | |
| 30 | + | Chn, // children's language | |
| 31 | + | Col, // colloquialism | |
| 32 | + | Comp, // computer terminology | |
| 33 | + | Conj, // conjunction | |
| 34 | + | Cop_da, // copula | |
| 35 | + | Ctr, // counter | |
| 36 | + | Derog, // derogatory | |
| 37 | + | EK, // exclusively kanji | |
| 38 | + | Ek, // exclusively kana | |
| 39 | + | Exp, // expressions (phrases, clauses, etc.) | |
| 40 | + | Fam, // familiar language | |
| 41 | + | Fem, // female term or language | |
| 42 | + | Food, // food term | |
| 43 | + | Geom, // geometry term | |
| 44 | + | Gikun, // gikun (meaning as reading) or jukujikun (special kanji reading) | |
| 45 | + | Hon, // honorific or respectful (sonkeigo) language | |
| 46 | + | Hum, // humble (kenjougo) language | |
| 47 | + | IK, // word containing irregular kanji usage | |
| 48 | + | Id, // idiomatic expression | |
| 49 | + | Ik, // word containing irregular kana usage | |
| 50 | + | Int, // interjection (kandoushi) | |
| 51 | + | Io, // irregular okurigana usage | |
| 52 | + | Iv, // irregular verb | |
| 53 | + | Ling, // linguistics terminology | |
| 54 | + | M_sl, // manga slang | |
| 55 | + | Male, // male term or language | |
| 56 | + | Male_sl, // male slang | |
| 57 | + | Math, // mathematics | |
| 58 | + | Mil, // military | |
| 59 | + | N, // noun (common) (futsuumeishi) | |
| 60 | + | N_adv, // adverbial noun (fukushitekimeishi) | |
| 61 | + | N_suf, // noun, used as a suffix | |
| 62 | + | N_pref, // noun, used as a prefix | |
| 63 | + | N_t, // noun (temporal) (jisoumeishi) | |
| 64 | + | Num, // numeric | |
| 65 | + | OK, // word containing out-dated kanji | |
| 66 | + | Obs, // obsolete term | |
| 67 | + | Obsc, // obscure term | |
| 68 | + | Ok, // out-dated or obsolete kana usage | |
| 69 | + | Oik, // old or irregular kana form | |
| 70 | + | On_mim, // onomatopoeic or mimetic word | |
| 71 | + | Pn, // pronoun | |
| 72 | + | Poet, // poetical term | |
| 73 | + | Pol, // polite (teineigo) language | |
| 74 | + | Pref, // prefix | |
| 75 | + | Proverb, // proverb | |
| 76 | + | Prt, // particle | |
| 77 | + | Physics, // physics terminology | |
| 78 | + | Quote, // quotation | |
| 79 | + | Rare, // rare | |
| 80 | + | Sens, // sensitive | |
| 81 | + | Sl, // slang | |
| 82 | + | Suf, // suffix | |
| 83 | + | UK, // word usually written using kanji alone | |
| 84 | + | Uk, // word usually written using kana alone | |
| 85 | + | Unc, // unclassified | |
| 86 | + | Yoji, // yojijukugo | |
| 87 | + | V1, // Ichidan verb | |
| 88 | + | V1_s, // Ichidan verb - kureru special class | |
| 89 | + | V2a_s, // Nidan verb with 'u' ending (archaic) | |
| 90 | + | V4h, // Yodan verb with `hu/fu' ending (archaic) | |
| 91 | + | V4r, // Yodan verb with `ru' ending (archaic) | |
| 92 | + | V5aru, // Godan verb - -aru special class | |
| 93 | + | V5b, // Godan verb with `bu' ending | |
| 94 | + | V5g, // Godan verb with `gu' ending | |
| 95 | + | V5k, // Godan verb with `ku' ending | |
| 96 | + | V5k_s, // Godan verb - Iku/Yuku special class | |
| 97 | + | V5m, // Godan verb with `mu' ending | |
| 98 | + | V5n, // Godan verb with `nu' ending | |
| 99 | + | V5r, // Godan verb with `ru' ending | |
| 100 | + | V5r_i, // Godan verb with `ru' ending (irregular verb) | |
| 101 | + | V5s, // Godan verb with `su' ending | |
| 102 | + | V5t, // Godan verb with `tsu' ending | |
| 103 | + | V5u, // Godan verb with `u' ending | |
| 104 | + | V5u_s, // Godan verb with `u' ending (special class) | |
| 105 | + | V5uru, // Godan verb - Uru old class verb (old form of Eru) | |
| 106 | + | Vz, // Ichidan verb - zuru verb (alternative form of -jiru verbs) | |
| 107 | + | Vi, // intransitive verb | |
| 108 | + | Vk, // Kuru verb - special class | |
| 109 | + | Vn, // irregular nu verb | |
| 110 | + | Vr, // irregular ru verb, plain form ends with -ri | |
| 111 | + | Vs, // noun or participle which takes the aux. verb suru | |
| 112 | + | Vs_c, // su verb - precursor to the modern suru | |
| 113 | + | Vs_s, // suru verb - special class | |
| 114 | + | Vs_i, // suru verb - included | |
| 115 | + | Kyb, // Kyoto-ben | |
| 116 | + | Osb, // Osaka-ben | |
| 117 | + | Ksb, // Kansai-ben | |
| 118 | + | Ktb, // Kantou-ben | |
| 119 | + | Tsb, // Tosa-ben | |
| 120 | + | Thb, // Touhoku-ben | |
| 121 | + | Tsug, // Tsugaru-ben | |
| 122 | + | Kyu, // Kyuushuu-ben | |
| 123 | + | Rkb, // Ryuukyuu-ben | |
| 124 | + | Nab, // Nagano-ben | |
| 125 | + | Hob, // Hokkaido-ben | |
| 126 | + | Vt, // transitive verb | |
| 127 | + | Vulg, // vulgar expression or word | |
| 128 | + | Adj_kari, // `kari' adjective (archaic) | |
| 129 | + | Adj_ku, // `ku' adjective (archaic) | |
| 130 | + | Adj_shiku, // `shiku' adjective (archaic) | |
| 131 | + | Adj_nari, // archaic/formal form of na-adjective | |
| 132 | + | N_pr, // proper noun | |
| 133 | + | V_unspec, // verb unspecified | |
| 134 | + | V4k, // Yodan verb with `ku' ending (archaic) | |
| 135 | + | V4g, // Yodan verb with `gu' ending (archaic) | |
| 136 | + | V4s, // Yodan verb with `su' ending (archaic) | |
| 137 | + | V4t, // Yodan verb with `tsu' ending (archaic) | |
| 138 | + | V4n, // Yodan verb with `nu' ending (archaic) | |
| 139 | + | V4b, // Yodan verb with `bu' ending (archaic) | |
| 140 | + | V4m, // Yodan verb with `mu' ending (archaic) | |
| 141 | + | V2k_k, // Nidan verb (upper class) with `ku' ending (archaic) | |
| 142 | + | V2g_k, // Nidan verb (upper class) with `gu' ending (archaic) | |
| 143 | + | V2t_k, // Nidan verb (upper class) with `tsu' ending (archaic) | |
| 144 | + | V2d_k, // Nidan verb (upper class) with `dzu' ending (archaic) | |
| 145 | + | V2h_k, // Nidan verb (upper class) with `hu/fu' ending (archaic) | |
| 146 | + | V2b_k, // Nidan verb (upper class) with `bu' ending (archaic) | |
| 147 | + | V2m_k, // Nidan verb (upper class) with `mu' ending (archaic) | |
| 148 | + | V2y_k, // Nidan verb (upper class) with `yu' ending (archaic) | |
| 149 | + | V2r_k, // Nidan verb (upper class) with `ru' ending (archaic) | |
| 150 | + | V2k_s, // Nidan verb (lower class) with `ku' ending (archaic) | |
| 151 | + | V2g_s, // Nidan verb (lower class) with `gu' ending (archaic) | |
| 152 | + | V2s_s, // Nidan verb (lower class) with `su' ending (archaic) | |
| 153 | + | V2z_s, // Nidan verb (lower class) with `zu' ending (archaic) | |
| 154 | + | V2t_s, // Nidan verb (lower class) with `tsu' ending (archaic) | |
| 155 | + | V2d_s, // Nidan verb (lower class) with `dzu' ending (archaic) | |
| 156 | + | V2n_s, // Nidan verb (lower class) with `nu' ending (archaic) | |
| 157 | + | V2h_s, // Nidan verb (lower class) with `hu/fu' ending (archaic) | |
| 158 | + | V2b_s, // Nidan verb (lower class) with `bu' ending (archaic) | |
| 159 | + | V2m_s, // Nidan verb (lower class) with `mu' ending (archaic) | |
| 160 | + | V2y_s, // Nidan verb (lower class) with `yu' ending (archaic) | |
| 161 | + | V2r_s, // Nidan verb (lower class) with `ru' ending (archaic) | |
| 162 | + | V2w_s, // Nidan verb (lower class) with `u' ending and `we' conjugation (archaic) | |
| 163 | + | Archit, // architecture term | |
| 164 | + | Astron, // astronomy, etc. term | |
| 165 | + | Baseb, // baseball term | |
| 166 | + | Biol, // biology term | |
| 167 | + | Bot, // botany term | |
| 168 | + | Bus, // business term | |
| 169 | + | Econ, // economics term | |
| 170 | + | Engr, // engineering term | |
| 171 | + | Finc, // finance term | |
| 172 | + | Geol, // geology, etc. term | |
| 173 | + | Law, // law, etc. term | |
| 174 | + | Mahj, // mahjong term | |
| 175 | + | Med, // medicine, etc. term | |
| 176 | + | Music, // music term | |
| 177 | + | Shinto, // Shinto term | |
| 178 | + | Shogi, // shogi term | |
| 179 | + | Sports, // sports term | |
| 180 | + | Sumo, // sumo term | |
| 181 | + | Zool, // zoology term | |
| 182 | + | Joc, // jocular, humorous term | |
| 183 | + | Anat, // anatomical term | |
| 184 | + | } | |
| 185 | + | ||
| 186 | + | public static class Sense { | |
| 187 | + | private ArrayList<String> senses; | |
| 188 | + | private ArrayList<Tag> tags; | |
| 189 | + | ||
| 190 | + | public Sense(ArrayList<String> senses, ArrayList<Tag> tags) { | |
| 191 | + | this.senses = senses; | |
| 192 | + | this.tags = tags; | |
| 193 | + | } | |
| 194 | + | } | |
| 195 | + | ||
| 196 | + | private String kanji, kana; | |
| 197 | + | private ArrayList<Sense> senses; | |
| 198 | + | private ArrayList<String> alternatives; | |
| 199 | + | private ArrayList<Tag> tags; | |
| 200 | + | ||
| 201 | + | public Result(String kanji, String kana, ArrayList<Sense> senses, ArrayList<String> alternatives) { | |
| 202 | + | this.kanji = kanji; | |
| 203 | + | this.kana = kana; | |
| 204 | + | this.senses = senses; | |
| 205 | + | this.alternatives = alternatives; | |
| 206 | + | } | |
| 207 | + | ||
| 208 | + | public String getKanji() { | |
| 209 | + | return kanji; | |
| 210 | + | } | |
| 211 | + | ||
| 212 | + | public String getKana() { | |
| 213 | + | return kana; | |
| 214 | + | } | |
| 215 | + | ||
| 216 | + | public ArrayList<Sense> getSenses() { | |
| 217 | + | return senses; | |
| 218 | + | } | |
| 219 | + | ||
| 220 | + | public ArrayList<String> getAlternatives() { | |
| 221 | + | return alternatives; | |
| 222 | + | } | |
| 223 | + | } |
app/src/main/java/eu/lepiller/nani/result/ResultAdapter.java unknown status 1
| 1 | + | package eu.lepiller.nani.result; | |
| 2 | + | ||
| 3 | + | import android.content.Context; | |
| 4 | + | import android.view.LayoutInflater; | |
| 5 | + | import android.view.View; | |
| 6 | + | import android.view.ViewGroup; | |
| 7 | + | import android.widget.ArrayAdapter; | |
| 8 | + | import android.widget.TextView; | |
| 9 | + | ||
| 10 | + | import java.util.ArrayList; | |
| 11 | + | ||
| 12 | + | import eu.lepiller.nani.R; | |
| 13 | + | ||
| 14 | + | public class ResultAdapter extends ArrayAdapter<Result> { | |
| 15 | + | Context context; | |
| 16 | + | public ResultAdapter(Context context, ArrayList<Result> results) { | |
| 17 | + | super(context, 0, results); | |
| 18 | + | this.context = context; | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | @Override | |
| 22 | + | public View getView(int position, View convertView, ViewGroup parent) { | |
| 23 | + | // Get the data item for this position | |
| 24 | + | Result result = getItem(position); | |
| 25 | + | ||
| 26 | + | // Check if an existing view is being reused, otherwise inflate the view | |
| 27 | + | if (convertView == null) { | |
| 28 | + | convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_result, parent, false); | |
| 29 | + | } | |
| 30 | + | ||
| 31 | + | if (result == null) { | |
| 32 | + | return convertView; | |
| 33 | + | } | |
| 34 | + | ||
| 35 | + | // Lookup view for data population | |
| 36 | + | TextView kanji_view = convertView.findViewById(R.id.kanji_view); | |
| 37 | + | ||
| 38 | + | // Populate the data into the template view using the data object | |
| 39 | + | kanji_view.setText(result.getKanji()); | |
| 40 | + | ||
| 41 | + | // Return the completed view to render on screen | |
| 42 | + | return convertView; | |
| 43 | + | } | |
| 44 | + | } |
app/src/main/res/layout/activity_dictionary_download.xml
| 38 | 38 | </LinearLayout> | |
| 39 | 39 | ||
| 40 | 40 | <TextView | |
| 41 | - | android:id="@+id/description_view" | |
| 41 | + | android:id="@+id/additional_info_view" | |
| 42 | 42 | android:layout_width="wrap_content" | |
| 43 | 43 | android:layout_height="wrap_content" | |
| 44 | 44 | android:layout_margin="8dp" | |
… | |||
| 64 | 64 | android:orientation="horizontal" | |
| 65 | 65 | app:layout_constraintEnd_toEndOf="parent" | |
| 66 | 66 | app:layout_constraintStart_toStartOf="parent" | |
| 67 | - | app:layout_constraintTop_toBottomOf="@+id/description_view"> | |
| 67 | + | app:layout_constraintTop_toBottomOf="@+id/additional_info_view"> | |
| 68 | 68 | ||
| 69 | 69 | <ProgressBar | |
| 70 | 70 | android:id="@+id/download_progress" | |
app/src/main/res/layout/layout_dictionary.xml
| 34 | 34 | android:text="Name" /> | |
| 35 | 35 | ||
| 36 | 36 | <TextView | |
| 37 | - | android:id="@+id/description_view" | |
| 37 | + | android:id="@+id/additional_info_view" | |
| 38 | 38 | android:layout_width="match_parent" | |
| 39 | 39 | android:layout_height="wrap_content" | |
| 40 | 40 | android:layout_marginStart="8dp" |
app/src/main/res/layout/layout_result.xml unknown status 1
| 1 | + | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | + | <LinearLayout | |
| 3 | + | xmlns:android="http://schemas.android.com/apk/res/android" | |
| 4 | + | xmlns:app="http://schemas.android.com/apk/res-auto" | |
| 5 | + | xmlns:tools="http://schemas.android.com/tools" | |
| 6 | + | android:layout_width="match_parent" | |
| 7 | + | android:layout_height="wrap_content"> | |
| 8 | + | ||
| 9 | + | <TextView | |
| 10 | + | android:id="@+id/kanji_view" | |
| 11 | + | android:layout_width="64dp" | |
| 12 | + | android:layout_height="64dp" | |
| 13 | + | android:layout_gravity="center" | |
| 14 | + | android:layout_weight="0" | |
| 15 | + | android:contentDescription="@string/icon_description" /> | |
| 16 | + | ||
| 17 | + | <ScrollView | |
| 18 | + | android:layout_width="match_parent" | |
| 19 | + | android:layout_height="match_parent" | |
| 20 | + | android:layout_weight="0"> | |
| 21 | + | ||
| 22 | + | <LinearLayout | |
| 23 | + | android:layout_width="wrap_content" | |
| 24 | + | android:layout_height="wrap_content" | |
| 25 | + | android:layout_gravity="center" | |
| 26 | + | android:layout_weight="100" | |
| 27 | + | android:orientation="vertical"> | |
| 28 | + | ||
| 29 | + | <ListView | |
| 30 | + | android:id="@+id/sense_view" | |
| 31 | + | android:layout_width="wrap_content" | |
| 32 | + | android:layout_height="wrap_content" /> | |
| 33 | + | ||
| 34 | + | <TextView | |
| 35 | + | android:id="@+id/additional_info_view" | |
| 36 | + | android:layout_width="match_parent" | |
| 37 | + | android:layout_height="wrap_content" | |
| 38 | + | android:layout_marginStart="8dp" | |
| 39 | + | android:layout_marginLeft="8dp" | |
| 40 | + | android:layout_marginTop="8dp" | |
| 41 | + | android:layout_marginEnd="8dp" | |
| 42 | + | android:layout_marginRight="8dp" /> | |
| 43 | + | </LinearLayout> | |
| 44 | + | </ScrollView> | |
| 45 | + | ||
| 46 | + | </LinearLayout> | |
| 46 | < | ||
| 0 | 47 | < | \ No newline at end of file |
app/src/main/res/values/strings.xml
| 15 | 15 | <!-- Dictionnary descriptions --> | |
| 16 | 16 | <string name="dico_example">An example dictionary with only an entry for ?????? (gathering up). Used in development.</string> | |
| 17 | 17 | ||
| 18 | + | <!-- JMdict tags, obtained with | |
| 19 | + | cat entities | cut -c 10- | sed -e 's|">$||' -e 's|.* "|<item>|' -e 's|$|</item>|' -e "s|\`|'|g" | sed "s|'|\\\'|g" | |
| 20 | + | --> | |
| 21 | + | <string-array name="jmdict_tags"> | |
| 22 | + | <item id="MA">martial arts term</item> | |
| 23 | + | <item id="X">rude or X-rated term (not displayed in educational software)</item> | |
| 24 | + | <item id="abbr">abbreviation</item> | |
| 25 | + | <item>adjective (keiyoushi)</item> | |
| 26 | + | <item>adjective (keiyoushi) - yoi/ii class</item> | |
| 27 | + | <item>adjectival nouns or quasi-adjectives (keiyodoshi)</item> | |
| 28 | + | <item>nouns which may take the genitive case particle \'no\'</item> | |
| 29 | + | <item>pre-noun adjectival (rentaishi)</item> | |
| 30 | + | <item>\'taru\' adjective</item> | |
| 31 | + | <item>noun or verb acting prenominally</item> | |
| 32 | + | <item>adverb (fukushi)</item> | |
| 33 | + | <item>adverb taking the \'to\' particle</item> | |
| 34 | + | <item>archaism</item> | |
| 35 | + | <item>ateji (phonetic) reading</item> | |
| 36 | + | <item>auxiliary</item> | |
| 37 | + | <item>auxiliary verb</item> | |
| 38 | + | <item>auxiliary adjective</item> | |
| 39 | + | <item>Buddhist term</item> | |
| 40 | + | <item>chemistry term</item> | |
| 41 | + | <item>children\'s language</item> | |
| 42 | + | <item>colloquialism</item> | |
| 43 | + | <item>computer terminology</item> | |
| 44 | + | <item>conjunction</item> | |
| 45 | + | <item>copula</item> | |
| 46 | + | <item>counter</item> | |
| 47 | + | <item>derogatory</item> | |
| 48 | + | <item>exclusively kanji</item> | |
| 49 | + | <item>exclusively kana</item> | |
| 50 | + | <item>expressions (phrases, clauses, etc.)</item> | |
| 51 | + | <item>familiar language</item> | |
| 52 | + | <item>female term or language</item> | |
| 53 | + | <item>food term</item> | |
| 54 | + | <item>geometry term</item> | |
| 55 | + | <item>gikun (meaning as reading) or jukujikun (special kanji reading)</item> | |
| 56 | + | <item>honorific or respectful (sonkeigo) language</item> | |
| 57 | + | <item>humble (kenjougo) language</item> | |
| 58 | + | <item>word containing irregular kanji usage</item> | |
| 59 | + | <item>idiomatic expression</item> | |
| 60 | + | <item>word containing irregular kana usage</item> | |
| 61 | + | <item>interjection (kandoushi)</item> | |
| 62 | + | <item>irregular okurigana usage</item> | |
| 63 | + | <item>irregular verb</item> | |
| 64 | + | <item>linguistics terminology</item> | |
| 65 | + | <item>manga slang</item> | |
| 66 | + | <item>male term or language</item> | |
| 67 | + | <item>male slang</item> | |
| 68 | + | <item>mathematics</item> | |
| 69 | + | <item>military</item> | |
| 70 | + | <item>noun (common) (futsuumeishi)</item> | |
| 71 | + | <item>adverbial noun (fukushitekimeishi)</item> | |
| 72 | + | <item>noun, used as a suffix</item> | |
| 73 | + | <item>noun, used as a prefix</item> | |
| 74 | + | <item>noun (temporal) (jisoumeishi)</item> | |
| 75 | + | <item>numeric</item> | |
| 76 | + | <item>word containing out-dated kanji</item> | |
| 77 | + | <item>obsolete term</item> | |
| 78 | + | <item>obscure term</item> | |
| 79 | + | <item>out-dated or obsolete kana usage</item> | |
| 80 | + | <item>old or irregular kana form</item> | |
| 81 | + | <item>onomatopoeic or mimetic word</item> | |
| 82 | + | <item>pronoun</item> | |
| 83 | + | <item>poetical term</item> | |
| 84 | + | <item>polite (teineigo) language</item> | |
| 85 | + | <item>prefix</item> | |
| 86 | + | <item>proverb</item> | |
| 87 | + | <item>particle</item> | |
| 88 | + | <item>physics terminology</item> | |
| 89 | + | <item>quotation</item> | |
| 90 | + | <item>rare</item> | |
| 91 | + | <item>sensitive</item> | |
| 92 | + | <item>slang</item> | |
| 93 | + | <item>suffix</item> | |
| 94 | + | <item>word usually written using kanji alone</item> | |
| 95 | + | <item>word usually written using kana alone</item> | |
| 96 | + | <item>unclassified</item> | |
| 97 | + | <item>yojijukugo</item> | |
| 98 | + | <item>Ichidan verb</item> | |
| 99 | + | <item>Ichidan verb - kureru special class</item> | |
| 100 | + | <item>Nidan verb with \'u\' ending (archaic)</item> | |
| 101 | + | <item>Yodan verb with \'hu/fu\' ending (archaic)</item> | |
| 102 | + | <item>Yodan verb with \'ru\' ending (archaic)</item> | |
| 103 | + | <item>Godan verb - -aru special class</item> | |
| 104 | + | <item>Godan verb with \'bu\' ending</item> | |
| 105 | + | <item>Godan verb with \'gu\' ending</item> | |
| 106 | + | <item>Godan verb with \'ku\' ending</item> | |
| 107 | + | <item>Godan verb - Iku/Yuku special class</item> | |
| 108 | + | <item>Godan verb with \'mu\' ending</item> | |
| 109 | + | <item>Godan verb with \'nu\' ending</item> | |
| 110 | + | <item>Godan verb with \'ru\' ending</item> | |
| 111 | + | <item>Godan verb with \'ru\' ending (irregular verb)</item> | |
| 112 | + | <item>Godan verb with \'su\' ending</item> | |
| 113 | + | <item>Godan verb with \'tsu\' ending</item> | |
| 114 | + | <item>Godan verb with \'u\' ending</item> | |
| 115 | + | <item>Godan verb with \'u\' ending (special class)</item> | |
| 116 | + | <item>Godan verb - Uru old class verb (old form of Eru)</item> | |
| 117 | + | <item>Ichidan verb - zuru verb (alternative form of -jiru verbs)</item> | |
| 118 | + | <item>intransitive verb</item> | |
| 119 | + | <item>Kuru verb - special class</item> | |
| 120 | + | <item>irregular nu verb</item> | |
| 121 | + | <item>irregular ru verb, plain form ends with -ri</item> | |
| 122 | + | <item>noun or participle which takes the aux. verb suru</item> | |
| 123 | + | <item>su verb - precursor to the modern suru</item> | |
| 124 | + | <item>suru verb - special class</item> | |
| 125 | + | <item>suru verb - included</item> | |
| 126 | + | <item>Kyoto-ben</item> | |
| 127 | + | <item>Osaka-ben</item> | |
| 128 | + | <item>Kansai-ben</item> | |
| 129 | + | <item>Kantou-ben</item> | |
| 130 | + | <item>Tosa-ben</item> | |
| 131 | + | <item>Touhoku-ben</item> | |
| 132 | + | <item>Tsugaru-ben</item> | |
| 133 | + | <item>Kyuushuu-ben</item> | |
| 134 | + | <item>Ryuukyuu-ben</item> | |
| 135 | + | <item>Nagano-ben</item> | |
| 136 | + | <item>Hokkaido-ben</item> | |
| 137 | + | <item>transitive verb</item> | |
| 138 | + | <item>vulgar expression or word</item> | |
| 139 | + | <item>\'kari\' adjective (archaic)</item> | |
| 140 | + | <item>\'ku\' adjective (archaic)</item> | |
| 141 | + | <item>\'shiku\' adjective (archaic)</item> | |
| 142 | + | <item>archaic/formal form of na-adjective</item> | |
| 143 | + | <item>proper noun</item> | |
| 144 | + | <item>verb unspecified</item> | |
| 145 | + | <item>Yodan verb with \'ku\' ending (archaic)</item> | |
| 146 | + | <item>Yodan verb with \'gu\' ending (archaic)</item> | |
| 147 | + | <item>Yodan verb with \'su\' ending (archaic)</item> | |
| 148 | + | <item>Yodan verb with \'tsu\' ending (archaic)</item> | |
| 149 | + | <item>Yodan verb with \'nu\' ending (archaic)</item> | |
| 150 | + | <item>Yodan verb with \'bu\' ending (archaic)</item> | |
| 151 | + | <item>Yodan verb with \'mu\' ending (archaic)</item> | |
| 152 | + | <item>Nidan verb (upper class) with \'ku\' ending (archaic)</item> | |
| 153 | + | <item>Nidan verb (upper class) with \'gu\' ending (archaic)</item> | |
| 154 | + | <item>Nidan verb (upper class) with \'tsu\' ending (archaic)</item> | |
| 155 | + | <item>Nidan verb (upper class) with \'dzu\' ending (archaic)</item> | |
| 156 | + | <item>Nidan verb (upper class) with \'hu/fu\' ending (archaic)</item> | |
| 157 | + | <item>Nidan verb (upper class) with \'bu\' ending (archaic)</item> | |
| 158 | + | <item>Nidan verb (upper class) with \'mu\' ending (archaic)</item> | |
| 159 | + | <item>Nidan verb (upper class) with \'yu\' ending (archaic)</item> | |
| 160 | + | <item>Nidan verb (upper class) with \'ru\' ending (archaic)</item> | |
| 161 | + | <item>Nidan verb (lower class) with \'ku\' ending (archaic)</item> | |
| 162 | + | <item>Nidan verb (lower class) with \'gu\' ending (archaic)</item> | |
| 163 | + | <item>Nidan verb (lower class) with \'su\' ending (archaic)</item> | |
| 164 | + | <item>Nidan verb (lower class) with \'zu\' ending (archaic)</item> | |
| 165 | + | <item>Nidan verb (lower class) with \'tsu\' ending (archaic)</item> | |
| 166 | + | <item>Nidan verb (lower class) with \'dzu\' ending (archaic)</item> | |
| 167 | + | <item>Nidan verb (lower class) with \'nu\' ending (archaic)</item> | |
| 168 | + | <item>Nidan verb (lower class) with \'hu/fu\' ending (archaic)</item> | |
| 169 | + | <item>Nidan verb (lower class) with \'bu\' ending (archaic)</item> | |
| 170 | + | <item>Nidan verb (lower class) with \'mu\' ending (archaic)</item> | |
| 171 | + | <item>Nidan verb (lower class) with \'yu\' ending (archaic)</item> | |
| 172 | + | <item>Nidan verb (lower class) with \'ru\' ending (archaic)</item> | |
| 173 | + | <item>Nidan verb (lower class) with \'u\' ending and \'we\' conjugation (archaic)</item> | |
| 174 | + | <item>architecture term</item> | |
| 175 | + | <item>astronomy, etc. term</item> | |
| 176 | + | <item>baseball term</item> | |
| 177 | + | <item>biology term</item> | |
| 178 | + | <item>botany term</item> | |
| 179 | + | <item>business term</item> | |
| 180 | + | <item>economics term</item> | |
| 181 | + | <item>engineering term</item> | |
| 182 | + | <item>finance term</item> | |
| 183 | + | <item>geology, etc. term</item> | |
| 184 | + | <item>law, etc. term</item> | |
| 185 | + | <item>mahjong term</item> | |
| 186 | + | <item>medicine, etc. term</item> | |
| 187 | + | <item>music term</item> | |
| 188 | + | <item>Shinto term</item> | |
| 189 | + | <item>shogi term</item> | |
| 190 | + | <item>sports term</item> | |
| 191 | + | <item>sumo term</item> | |
| 192 | + | <item>zoology term</item> | |
| 193 | + | <item>jocular, humorous term</item> | |
| 194 | + | <item>anatomical term</item> | |
| 195 | + | </string-array> | |
| 196 | + | ||
| 18 | 197 | <!-- About activity --> | |
| 19 | 198 | <string name="nani_about">Hi, tyreunom here!\n | |
| 20 | 199 | I\'m a japanese learner and programmer. I found that there were no app for my use case, |