OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/input_method/candidate_window.h" | 5 #include "chrome/browser/chromeos/input_method/candidate_window.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 const int kMinPreeditAreaWidth = 134; | 73 const int kMinPreeditAreaWidth = 134; |
74 | 74 |
75 // The milliseconds of the delay to show the infolist window. | 75 // The milliseconds of the delay to show the infolist window. |
76 const int kInfolistShowDelayMilliSeconds = 500; | 76 const int kInfolistShowDelayMilliSeconds = 500; |
77 // The milliseconds of the delay to hide the infolist window. | 77 // The milliseconds of the delay to hide the infolist window. |
78 const int kInfolistHideDelayMilliSeconds = 500; | 78 const int kInfolistHideDelayMilliSeconds = 500; |
79 | 79 |
80 // VerticalCandidateLabel is used for rendering candidate text in | 80 // VerticalCandidateLabel is used for rendering candidate text in |
81 // the vertical candidate window. | 81 // the vertical candidate window. |
82 class VerticalCandidateLabel : public views::Label { | 82 class VerticalCandidateLabel : public views::Label { |
| 83 public: |
| 84 VerticalCandidateLabel() {} |
| 85 |
| 86 private: |
83 virtual ~VerticalCandidateLabel() {} | 87 virtual ~VerticalCandidateLabel() {} |
84 | 88 |
85 // Returns the preferred size, but guarantees that the width has at | 89 // Returns the preferred size, but guarantees that the width has at |
86 // least kMinCandidateLabelWidth pixels. | 90 // least kMinCandidateLabelWidth pixels. |
87 virtual gfx::Size GetPreferredSize() { | 91 virtual gfx::Size GetPreferredSize() { |
88 gfx::Size size = Label::GetPreferredSize(); | 92 gfx::Size size = Label::GetPreferredSize(); |
89 // Hack. +2 is needed to prevent labels from getting elided like | 93 // Hack. +2 is needed to prevent labels from getting elided like |
90 // "abc..." in some cases. TODO(satorux): Figure out why it's | 94 // "abc..." in some cases. TODO(satorux): Figure out why it's |
91 // necessary. | 95 // necessary. |
92 size.set_width(size.width() + 2); | 96 size.set_width(size.width() + 2); |
93 if (size.width() < kMinCandidateLabelWidth) { | 97 if (size.width() < kMinCandidateLabelWidth) { |
94 size.set_width(kMinCandidateLabelWidth); | 98 size.set_width(kMinCandidateLabelWidth); |
95 } | 99 } |
96 if (size.width() > kMaxCandidateLabelWidth) { | 100 if (size.width() > kMaxCandidateLabelWidth) { |
97 size.set_width(kMaxCandidateLabelWidth); | 101 size.set_width(kMaxCandidateLabelWidth); |
98 } | 102 } |
99 return size; | 103 return size; |
100 } | 104 } |
| 105 |
| 106 DISALLOW_COPY_AND_ASSIGN(VerticalCandidateLabel); |
101 }; | 107 }; |
102 | 108 |
103 // Wraps the given view with some padding, and returns it. | 109 // Wraps the given view with some padding, and returns it. |
104 views::View* WrapWithPadding(views::View* view, const gfx::Insets& insets) { | 110 views::View* WrapWithPadding(views::View* view, const gfx::Insets& insets) { |
105 views::View* wrapper = new views::View; | 111 views::View* wrapper = new views::View; |
106 // Use GridLayout to give some insets inside. | 112 // Use GridLayout to give some insets inside. |
107 views::GridLayout* layout = new views::GridLayout(wrapper); | 113 views::GridLayout* layout = new views::GridLayout(wrapper); |
108 wrapper->SetLayoutManager(layout); // |wrapper| owns |layout|. | 114 wrapper->SetLayoutManager(layout); // |wrapper| owns |layout|. |
109 layout->SetInsets(insets); | 115 layout->SetInsets(insets); |
110 | 116 |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 } | 370 } |
365 | 371 |
366 // Returns the content. | 372 // Returns the content. |
367 views::View* contents() { | 373 views::View* contents() { |
368 return contents_.get(); | 374 return contents_.get(); |
369 } | 375 } |
370 | 376 |
371 private: | 377 private: |
372 scoped_ptr<views::View> contents_; | 378 scoped_ptr<views::View> contents_; |
373 scoped_ptr<views::View> place_holder_; | 379 scoped_ptr<views::View> place_holder_; |
| 380 |
| 381 DISALLOW_COPY_AND_ASSIGN(HidableArea); |
374 }; | 382 }; |
375 | 383 |
376 // InformationTextArea is a HidableArea having a single Label in it. | 384 // InformationTextArea is a HidableArea having a single Label in it. |
377 class InformationTextArea : public HidableArea { | 385 class InformationTextArea : public HidableArea { |
378 public: | 386 public: |
379 // Specify the alignment and initialize the control. | 387 // Specify the alignment and initialize the control. |
380 InformationTextArea(views::Label::Alignment align, int minWidth) | 388 InformationTextArea(views::Label::Alignment align, int minWidth) |
381 : minWidth_(minWidth) { | 389 : minWidth_(minWidth) { |
382 label_ = new views::Label; | 390 label_ = new views::Label; |
383 label_->SetHorizontalAlignment(align); | 391 label_->SetHorizontalAlignment(align); |
(...skipping 22 matching lines...) Expand all Loading... |
406 size.set_width(size.width() + 2); | 414 size.set_width(size.width() + 2); |
407 if (size.width() < minWidth_) { | 415 if (size.width() < minWidth_) { |
408 size.set_width(minWidth_); | 416 size.set_width(minWidth_); |
409 } | 417 } |
410 return size; | 418 return size; |
411 } | 419 } |
412 | 420 |
413 private: | 421 private: |
414 views::Label* label_; | 422 views::Label* label_; |
415 int minWidth_; | 423 int minWidth_; |
| 424 |
| 425 DISALLOW_COPY_AND_ASSIGN(InformationTextArea); |
416 }; | 426 }; |
417 | 427 |
418 // CandidateRow renderes a row of a candidate. | 428 // CandidateRow renderes a row of a candidate. |
419 class CandidateView : public views::View { | 429 class CandidateView : public views::View { |
420 public: | 430 public: |
421 CandidateView(CandidateWindowView* parent_candidate_window, | 431 CandidateView(CandidateWindowView* parent_candidate_window, |
422 int index_in_page, | 432 int index_in_page, |
423 InputMethodLookupTable::Orientation orientation); | 433 InputMethodLookupTable::Orientation orientation); |
424 virtual ~CandidateView() {} | 434 virtual ~CandidateView() {} |
425 // Initializes the candidate view with the given column widths. | 435 // Initializes the candidate view with the given column widths. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 // The shortcut label renders shortcut numbers like 1, 2, and 3. | 488 // The shortcut label renders shortcut numbers like 1, 2, and 3. |
479 views::Label* shortcut_label_; | 489 views::Label* shortcut_label_; |
480 // The candidate label renders candidates. | 490 // The candidate label renders candidates. |
481 views::Label* candidate_label_; | 491 views::Label* candidate_label_; |
482 // The annotation label renders annotations. | 492 // The annotation label renders annotations. |
483 views::Label* annotation_label_; | 493 views::Label* annotation_label_; |
484 | 494 |
485 // The infolist icon. | 495 // The infolist icon. |
486 views::Label* infolist_label_; | 496 views::Label* infolist_label_; |
487 bool infolist_icon_enabled_; | 497 bool infolist_icon_enabled_; |
| 498 |
| 499 DISALLOW_COPY_AND_ASSIGN(CandidateView); |
488 }; | 500 }; |
489 | 501 |
490 class InfolistView; | 502 class InfolistView; |
491 | 503 |
492 // InfolistWindowView is the main container of the infolist window UI. | 504 // InfolistWindowView is the main container of the infolist window UI. |
493 class InfolistWindowView : public views::View { | 505 class InfolistWindowView : public views::View { |
494 public: | 506 public: |
495 InfolistWindowView(views::Widget* parent_frame, | 507 InfolistWindowView(views::Widget* parent_frame, |
496 views::Widget* candidate_window_frame); | 508 views::Widget* candidate_window_frame); |
497 virtual ~InfolistWindowView(); | 509 virtual ~InfolistWindowView(); |
(...skipping 29 matching lines...) Expand all Loading... |
527 // The infolist area is where the meanings and the usages of the words are | 539 // The infolist area is where the meanings and the usages of the words are |
528 // rendered. | 540 // rendered. |
529 views::View* infolist_area_; | 541 views::View* infolist_area_; |
530 // The infolist views are used for rendering the meanings and the usages of | 542 // The infolist views are used for rendering the meanings and the usages of |
531 // the words. | 543 // the words. |
532 std::vector<InfolistView*> infolist_views_; | 544 std::vector<InfolistView*> infolist_views_; |
533 | 545 |
534 bool visible_; | 546 bool visible_; |
535 | 547 |
536 base::OneShotTimer<InfolistWindowView> show_hide_timer_; | 548 base::OneShotTimer<InfolistWindowView> show_hide_timer_; |
| 549 |
| 550 DISALLOW_COPY_AND_ASSIGN(InfolistWindowView); |
537 }; | 551 }; |
538 | 552 |
539 // InfolistRow renderes a row of a infolist. | 553 // InfolistRow renderes a row of a infolist. |
540 class InfolistView : public views::View { | 554 class InfolistView : public views::View { |
541 public: | 555 public: |
542 explicit InfolistView(InfolistWindowView* parent_infolist_window); | 556 explicit InfolistView(InfolistWindowView* parent_infolist_window); |
543 virtual ~InfolistView() {} | 557 virtual ~InfolistView() {} |
544 | 558 |
545 void Init(); | 559 void Init(); |
546 | 560 |
(...skipping 19 matching lines...) Expand all Loading... |
566 // The parent candidate window that contains this view. | 580 // The parent candidate window that contains this view. |
567 InfolistWindowView* parent_infolist_window_; | 581 InfolistWindowView* parent_infolist_window_; |
568 | 582 |
569 // Views created in the class will be part of tree of |this|, so these | 583 // Views created in the class will be part of tree of |this|, so these |
570 // child views will be deleted when |this| is deleted. | 584 // child views will be deleted when |this| is deleted. |
571 | 585 |
572 // The title label. | 586 // The title label. |
573 views::Label* title_label_; | 587 views::Label* title_label_; |
574 // The description label. | 588 // The description label. |
575 views::Label* description_label_; | 589 views::Label* description_label_; |
| 590 |
| 591 DISALLOW_COPY_AND_ASSIGN(InfolistView); |
576 }; | 592 }; |
577 | 593 |
578 | |
579 // The implementation of CandidateWindowController. | 594 // The implementation of CandidateWindowController. |
580 // CandidateWindowController controls the CandidateWindow. | 595 // CandidateWindowController controls the CandidateWindow. |
581 class CandidateWindowController::Impl : public CandidateWindowView::Observer, | 596 class CandidateWindowController::Impl : public CandidateWindowView::Observer, |
582 public IBusUiController::Observer { | 597 public IBusUiController::Observer { |
583 public: | 598 public: |
584 Impl(); | 599 Impl(); |
585 virtual ~Impl(); | 600 virtual ~Impl(); |
586 | 601 |
587 // Initializes the candidate window. Returns true on success. | 602 // Initializes the candidate window. Returns true on success. |
588 bool Init(); | 603 bool Init(); |
(...skipping 28 matching lines...) Expand all Loading... |
617 // This is the outer frame of the candidate window view. The frame will | 632 // This is the outer frame of the candidate window view. The frame will |
618 // own |candidate_window_|. | 633 // own |candidate_window_|. |
619 scoped_ptr<views::Widget> frame_; | 634 scoped_ptr<views::Widget> frame_; |
620 | 635 |
621 // The infolist window view. | 636 // The infolist window view. |
622 InfolistWindowView* infolist_window_; | 637 InfolistWindowView* infolist_window_; |
623 | 638 |
624 // This is the outer frame of the infolist window view. The frame will | 639 // This is the outer frame of the infolist window view. The frame will |
625 // own |infolist_window_|. | 640 // own |infolist_window_|. |
626 scoped_ptr<views::Widget> infolist_frame_; | 641 scoped_ptr<views::Widget> infolist_frame_; |
| 642 |
| 643 DISALLOW_COPY_AND_ASSIGN(Impl); |
627 }; | 644 }; |
628 | 645 |
629 CandidateView::CandidateView( | 646 CandidateView::CandidateView( |
630 CandidateWindowView* parent_candidate_window, | 647 CandidateWindowView* parent_candidate_window, |
631 int index_in_page, | 648 int index_in_page, |
632 InputMethodLookupTable::Orientation orientation) | 649 InputMethodLookupTable::Orientation orientation) |
633 : index_in_page_(index_in_page), | 650 : index_in_page_(index_in_page), |
634 orientation_(orientation), | 651 orientation_(orientation), |
635 parent_candidate_window_(parent_candidate_window), | 652 parent_candidate_window_(parent_candidate_window), |
636 shortcut_label_(NULL), | 653 shortcut_label_(NULL), |
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1658 CandidateWindowController::~CandidateWindowController() { | 1675 CandidateWindowController::~CandidateWindowController() { |
1659 delete impl_; | 1676 delete impl_; |
1660 } | 1677 } |
1661 | 1678 |
1662 bool CandidateWindowController::Init() { | 1679 bool CandidateWindowController::Init() { |
1663 return impl_->Init(); | 1680 return impl_->Init(); |
1664 } | 1681 } |
1665 | 1682 |
1666 } // namespace input_method | 1683 } // namespace input_method |
1667 } // namespace chromeos | 1684 } // namespace chromeos |
OLD | NEW |