Resolve defect of showing wrong date on YearView and MonthView.
authorSungWan Kim <sw0726.kim@samsung.com>
Mon, 15 Apr 2013 08:10:59 +0000 (17:10 +0900)
committerSungWan Kim <sw0726.kim@samsung.com>
Mon, 15 Apr 2013 08:10:59 +0000 (17:10 +0900)
Change-Id: I9d1beec98da982ed7188c7d95d1093326bb8e77e
Signed-off-by: SungWan Kim <sw0726.kim@samsung.com>
inc/ClEventListPresentationModel.h
src/ClEventListPresentationModel.cpp

index 3e3c6c1..ce9ea87 100644 (file)
@@ -113,6 +113,8 @@ private:
        int ConvertDayOfWeek(int dayOfWeek) const;
        int FindGroupIndex(const Tizen::Base::DateTime& date, int start, int end) const;
        void FireCalendarEventChangedEvent(void);
+       const Tizen::Base::String GetMonthFormatterPattern(const Tizen::Base::String& fullDatePattern) const;
+       const Tizen::Base::String GetYearFormatterPattern(const Tizen::Base::String& fullDatePattern) const;
        result LoadEvents(const Tizen::Base::DateTime& start, const Tizen::Base::DateTime& end);
        void RemoveAllEvents(void);
        void UnloadEvents(const Tizen::Base::DateTime& start, const Tizen::Base::DateTime& end);
index dabba4b..be660fd 100644 (file)
@@ -31,6 +31,7 @@
 using namespace Tizen;
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
 using namespace Tizen::Base::Runtime;
 using namespace Tizen::Graphics;
 using namespace Tizen::Social;
@@ -1001,47 +1002,11 @@ EventListPresentationModel::Construct(void)
        __pDateFormatter = ResourceManager::CreateDateFormatterN(Locales::DATE_TIME_STYLE_FULL);
 
        String pattern = __pDateFormatter->GetPattern();
-       int startIndex = -1;
-       int endIndex = -1;
-       pattern.IndexOf(L"E", 0, startIndex);
-       pattern.IndexOf(L" ", startIndex, endIndex);
-       if (endIndex > 0)
-       {
-               pattern.Remove(startIndex, endIndex - startIndex + 1);
-       }
-       else
-       {
-               pattern.Remove(startIndex, pattern.GetLength() - startIndex);
-       }
-       startIndex = -1;
-       endIndex = -1;
-       pattern.IndexOf(L"d", 0, startIndex);
-       pattern.IndexOf(L" ", startIndex, endIndex);
-       if (endIndex > 0)
-       {
-               pattern.Remove(startIndex, endIndex - startIndex + 1);
-       }
-       else
-       {
-               pattern.Remove(startIndex, pattern.GetLength() - startIndex);
-       }
        __pMonthFormatter = ResourceManager::CreateDateFormatterN(Locales::DATE_TIME_STYLE_NONE);
-       __pMonthFormatter->ApplyPattern(pattern);
+       __pMonthFormatter->ApplyPattern(GetMonthFormatterPattern(pattern));
 
-       startIndex = -1;
-       endIndex = -1;
-       pattern.IndexOf(L"y", 0, startIndex);
-       pattern.IndexOf(L" ", startIndex, endIndex);
-       if (endIndex > 0)
-       {
-               pattern.Remove(endIndex, pattern.GetLength() - endIndex);
-       }
-       else
-       {
-               pattern.Remove(0, startIndex);
-       }
        __pYearFormatter = ResourceManager::CreateDateFormatterN(Locales::DATE_TIME_STYLE_NONE);
-       __pYearFormatter->ApplyPattern(pattern);
+       __pYearFormatter->ApplyPattern(GetYearFormatterPattern(pattern));
 
        __pTimeFormatter = ResourceManager::CreateTimeFormatterN();
 
@@ -1124,6 +1089,78 @@ EventListPresentationModel::FireCalendarEventChangedEvent(void)
        }
 }
 
+const String
+EventListPresentationModel::GetMonthFormatterPattern(const String& fullDatePattern) const
+{
+       String pattern;
+       StringTokenizer tokenizer(fullDatePattern);
+       bool addPattern = false;
+       while (tokenizer.HasMoreTokens() == true)
+       {
+               String token;
+               tokenizer.GetNextToken(token);
+               if (token.StartsWith(L"M", 0) == true || token.StartsWith(L"y", 0) == true)
+               {
+                       if (pattern.IsEmpty() == true)
+                       {
+                               pattern = token;
+                       }
+                       else
+                       {
+                               pattern.Append(L" ");
+                               pattern.Append(token);
+                       }
+                       addPattern = true;
+               }
+               else if (token.StartsWith(L"E", 0) == true || token.StartsWith(L"d", 0) == true)
+               {
+                       addPattern = false;
+               }
+               else if (addPattern == true)
+               {
+                       pattern.Append(L" ");
+                       pattern.Append(token);
+               }
+       }
+       return pattern;
+}
+
+const String
+EventListPresentationModel::GetYearFormatterPattern(const String& fullDatePattern) const
+{
+       String pattern;
+       StringTokenizer tokenizer(fullDatePattern);
+       bool addPattern = false;
+       while (tokenizer.HasMoreTokens() == true)
+       {
+               String token;
+               tokenizer.GetNextToken(token);
+               if (token.StartsWith(L"y", 0) == true)
+               {
+                       if (pattern.IsEmpty() == true)
+                       {
+                               pattern = token;
+                       }
+                       else
+                       {
+                               pattern.Append(L" ");
+                               pattern.Append(token);
+                       }
+                       addPattern = true;
+               }
+               else if (token.StartsWith(L"M", 0) == true || token.StartsWith(L"E", 0) == true || token.StartsWith(L"d", 0) == true)
+               {
+                       addPattern = false;
+               }
+               else if (addPattern == true)
+               {
+                       pattern.Append(L" ");
+                       pattern.Append(token);
+               }
+       }
+       return pattern;
+}
+
 result
 EventListPresentationModel::LoadEvents(const DateTime& start, const DateTime& end)
 {