2 * Copyright (c) 2015 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * @file text-label-example.cpp
20 * @brief Basic usage of TextLabel control
24 #include "vertical-layout.h"
27 #include <dali-toolkit/dali-toolkit.h>
28 #include <dali/public-api/text-abstraction/text-abstraction.h>
31 using namespace Dali::Toolkit;
37 std::string languageName;
38 std::string languageRomanName;
42 const Language LANGUAGES[] = {
46 "لإعادة ترتيب الشاشات، يجب تغيير نوع العرض إلى شبكة قابلة للتخصيص."
51 "পৃষ্ঠাসমূহ পুনঃব্যৱস্থিত কৰিবলৈ, আপুনি দৰ্শনৰ প্ৰকাৰ এটা অনুকূলনযোগ্য গ্ৰীডলৈ পৰিৱৰ্তন কৰাটো আৱশ্যক৷"
56 "তথ্য লোড করতে অক্ষম৷ পুনরায় চেষ্টা করতে ট্যাপ করুন৷"
61 "A Quick Brown Fox Jumps Over The Lazy Dog"
66 "No se puede añadir más aplicaciones. Se alcanzó la cantidad máxima."
71 "برای مرتب کردن مجدد صفحهها، باید نوع نمایش را به یک نمای شبکهای قابل تنظیم تغییر دهید."
76 "La nouvelle page sera composée des Dynamic Box S Planner, Tâches et S Memo"
81 "પૃષ્ઠોને ફરીથી ગોઠવવા માટે, તમારે દૃશ્ય પ્રકારને કસ્ટમાઇઝેશન યોગ્ય ગ્રિડ પર બદલવાની જરૂર છે."
86 "पेज पुनः व्यवस्थित करने के लिए, आपको दृश्य प्रकार को अनुकूलित करने योग्य ग्रिड में बदलना होगा।"
91 "Tidak dapat menambahkan aplikasi lagi. Jumlah maksimum aplikasi tercapai."
96 "ដើម្បីរៀបចំទំព័រឡើងវិញ អ្នកត្រូវប្ដូរប្រភេទបង្ហាញទៅក្រឡាចត្រង្គដែលអាចប្ដូរតាមបំណង។"
101 "ಪುಟಗಳನ್ನು ಮರುವ್ಯವಸ್ಥಿತವಾಗಿ ಇರಿಸಲು, ನೀವು ವೀಕ್ಷಣೆ ವಿಧವನ್ನು ಗ್ರಾಹಕೀಕರಿಸಬಲ್ಲ ಗ್ರಿಡ್ಗೆ ಬದಲಾಯಿಸುವುದು ಅಗತ್ಯವಿದೆ."
106 "페이지 순서를 변경하려면 보기 방식을 격자 보기(직접 설정)로 변경하세요."
111 "ເພື່ອຈັດລຽງໜ້າຄືນ, ທ່ານຈໍາເປັນຕ້ອງປ່ຽນຊະນິດຂອງມຸມມອງໄປຫາຕາຕະລາງທີ່ກຳນົດເອງໄດ້."
116 "പേജുകൾ പുനഃക്രമീകരിക്കുന്നതിന്, ഇഷ്ടാനുസൃതമാക്കാവുന്ന ഗ്രിഡിലേക്ക് കാഴ്ചയുടെ തരം നിങ്ങൾ മാറ്റേണ്ടതുണ്ട്."
121 "पृष्ठांची पुनर्रचना करा, आपण सानुकूलित करण्यायोग्य ग्रिडमध्ये व्ह्यू प्रकार बदलणे गरजेचे आहे."
126 "Tidak boleh menambah aplikasi lagi. Bilangan maksimum aplikasi dicapai."
131 "စာမ်က္ႏွာမ်ား ျပန္စီစဥ္ရန္ အျမင္ပံုစံကို စိတ္ၾကိဳက္လုပ္ႏိုင္ေသာ ဂရစ္ တစ္ခုသို႔ ေျပာင္းဖို႔လိုသည္။"
136 "थप अनुप्रयोगहरू थप्न सकिएन। अनुप्रयोगहरूको अधिकतम संख्या पुग्यो।"
141 "ପରବର୍ତ୍ତୀ ପୃଷ୍ଠା ଦେଖିବା ପାଇଁ ଦୁଇ ଆଙ୍ଗୁଠିରେ ସ୍ୱାଇପ୍ କରନ୍ତୁ।"
146 "ਇਹ ਫੋਲਡਰ ਅਤੇ ਇਸ ਵਿੱਚ ਸ਼ਾਮਲ ਸਾਰੇ ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾ ਦੇਵੇਗਾ।"
151 "Para reorganizar páginas, é necessário alterar o tipo de exibição para uma grade personalizável."
156 "පිටු නැවත පෙළ ගැස්වීම සඳහා ඔබ විසින් දසුන් ප්රවර්ගය අභිමතීකෘත්ය ජාලයකට වෙනස් කළ යුතුය."
161 "பக்கங்களை மறுஒழுங்குபடுத்தவென காட்சி வகையை தனிப்பயனாக்கத்தக்க கட்டமைப்பிற்கு மாற்ற வேண்டியுள்ளது."
166 "మరిన్ని అప్లికేషన్లను జోడించడం సాధ్యం కాలేదు. గరిష్ట అప్లికేషన్ల సంఖ్యను చేరుకున్నాయి."
171 "คุณต้องเปลี่ยนชนิดการแสดง เป็นตารางที่กำหนดเองได้ เพื่อจัดหน้าใหม่"
176 "Hindi makapagdagdag ng extra na linya dahil sa paghihigpit sa espasyo"
181 "Sayfaları yeniden düzenlemek için özelleştirilebilir kılavuzun görünüm tipini değiştirmeniz gerekir."
186 "صفحات کو دوبارہ ترتیب دینے کے لئے، آپ کو منظر کی قسم کو ایک حسب ضرورت گرڈ میں تبدیل کرنا ہوگا۔"
191 "Để sắp xếp lại các trang, bạn cần thay đổi kiểu xem sang dạng lưới tùy chỉnh."
196 "若要重新排列页面,您需要将视图类型更改为可自定义网格。"
200 const unsigned int NUMBER_OF_LANGUAGES = 31u;
204 * @brief The main class of the demo.
206 class TextLabelMultiLanguageExample : public ConnectionTracker
210 TextLabelMultiLanguageExample( Application& application )
211 : mApplication( application ),
214 // Connect to the Application's Init signal
215 mApplication.InitSignal().Connect( this, &TextLabelMultiLanguageExample::Create );
218 ~TextLabelMultiLanguageExample()
220 // Nothing to do here.
224 * One-time setup in response to Application InitSignal.
226 void Create( Application& application )
228 Stage stage = Stage::GetCurrent();
230 stage.KeyEventSignal().Connect(this, &TextLabelMultiLanguageExample::OnKeyEvent);
232 mLayout = VerticalLayout::New();
233 mLayout.SetParentOrigin( ParentOrigin::TOP_LEFT );
234 mLayout.SetAnchorPoint( AnchorPoint::TOP_LEFT );
236 stage.Add( mLayout );
238 for( unsigned int index = 0u; index < NUMBER_OF_LANGUAGES; ++index )
240 const Language& language = LANGUAGES[index];
242 TextLabel label = TextLabel::New();
243 label.SetParentOrigin( ParentOrigin::CENTER );
245 label.SetProperty( TextLabel::PROPERTY_MULTI_LINE, true );
247 const std::string text = language.languageName + " " + language.languageRomanName + " " + language.text;
249 label.SetProperty( TextLabel::PROPERTY_TEXT, text );
250 mLayout.AddLabel( label );
252 mLayout.TouchedSignal().Connect( this, &TextLabelMultiLanguageExample::OnTouchEvent );
255 const Vector2& size = Stage::GetCurrent().GetSize();
256 const float height = mLayout.GetHeightForWidth( size.width );
257 mLayout.SetSize( Size( size.width, height ) );
260 bool OnTouchEvent( Actor actor, const TouchEvent& event )
262 if( 1u == event.GetPointCount() )
264 const TouchPoint::State state = event.GetPoint(0u).state;
266 // Clamp to integer values; this is to reduce flicking due to pixel misalignment
267 const float localPoint = static_cast<float>( static_cast<int>( event.GetPoint( 0 ).local.y ) );
269 if( TouchPoint::Down == state )
271 mLastPoint = localPoint;
272 mAnimation = Animation::New( 0.25f );
274 else if( TouchPoint::Motion == state )
278 mAnimation.MoveBy( mLayout, Vector3( 0.f, localPoint - mLastPoint, 0.f ), AlphaFunctions::Linear );
280 mLastPoint = localPoint;
289 * Main key event handler
291 void OnKeyEvent(const KeyEvent& event)
293 if(event.state == KeyEvent::Down)
295 if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
304 Application& mApplication;
305 VerticalLayout mLayout;
306 Animation mAnimation;
310 void RunTest( Application& application )
312 TextLabelMultiLanguageExample test( application );
314 application.MainLoop();
317 /** Entry point for Linux & Tizen applications */
318 int main( int argc, char **argv )
320 Application application = Application::New( &argc, &argv );
322 RunTest( application );